Yeah bring on 96 bit multiplies!! 2009/3/4 <ja...@njkfrudils.plus.com>: > > On Wednesday 04 March 2009 23:04:13 Bill Hart wrote: >> Yasm does seem to preserve what you code pretty well. I don't know of >> any weird optimisation it does. >> > > Yes , so far it's been no worse than gas > >> The other advantage is we ship a fixed version of yasm with MPIR and >> at least while we are doing that you can guarantee that you aren't >> going to hit some weird gas bugs that only occur on system X. >> >> The disadvantage is that not too many architectures are supported as >> of yet. Mainly x86 and perhaps PPC on its way. >> > > yes , it's a bit limited > >> Well, another really good thing about yasm is the developer has been >> very responsive and helpful. >> > > There is quite a few tricks I would like assemblers to able to do , perhaps > with some persuasion... > >> Of course the qword stuff I grew up on. I have never coded in AT&T >> format. My first assembler (apart from the motorolla 6802 and chip 8 >> one - they converted hexadecimal to binary :-) ) was MASM. Then I used >> A86, TASM and now YASM. >> > > I started on Z80 , no assembler , then 6809 no assembler again , then 68008 > with an assembler . I knew the 6809 opcodes by heart , although I always got > the jump displacements wrong and having a mul instruction was the bee's > knee's .Then i didn't touch assembler again for about 20 years , except for a > couple of boot-loader type things. I would hate to program on a 8bit cpus > now , its bad enough on x86_64 :) > - Show quoted text - >> Bill. >> >> 2009/3/4 <ja...@njkfrudils.plus.com>: >> > On Wednesday 04 March 2009 20:52:20 Bill Hart wrote: >> >> Hi Brian, >> >> >> >> I will finish off the K8 code as is, and have already done the K10 >> >> code. But if you could email the output of applying the new version to >> >> the Core 2 code, that would probably save me lots of time. >> >> >> >> Bill. >> >> >> >> 2009/3/4 Cactus <rieman...@googlemail.com>: >> >> > On Mar 4, 8:25 pm, Bill Hart <goodwillh...@googlemail.com> wrote: >> >> >> Hmm, so far no alignment issues appear to have slowed things down. I >> >> >> didn't know about the alignb thing. >> >> >> >> >> >> What may be useful is a version of the converter in the x86_64 >> >> >> directory which converts any .asm files to .as files in yasm format. >> >> >> >> >> >> The issues with the $ were in sqr_basecase in the amd64 dir. It ends >> >> >> up with: >> >> >> >> >> >> jge mulskiploop%1 >> >> >> mulloop %1 >> >> >> mulskiploop%1: >> >> >> >> >> >> at about line 277, which yasm doesn't like. >> >> >> >> >> >> If that first %1 is a macro parameter, I don't know what it is >> >> >> supposed to be. It doesn't occur inside a macro. The code works, >> >> >> assuming it is just part of the label, anyhow. >> > >> > It used to occur inside another macro , same for extra quotes around $ , >> > >> >> >> Also in sqr_basecase you have examples of macros in lower case and >> >> >> the calls to the macros in upper case. >> >> >> >> >> >> As for mulq [rcx] that is always unambiguous. The q signifies a >> >> >> qword. >> >> >> >> >> >> Bill. >> >> >> >> >> >> 2009/3/4 Cactus <rieman...@googlemail.com>: >> >> > >> >> > - Show quoted text - >> >> > >> >> >> > On Mar 4, 7:12 pm, Bill Hart <goodwillh...@googlemail.com> wrote: >> >> >> >> This thread will be for notes on converting Jason's code to yasm >> >> >> >> format. It might help Jason to avoid a couple of minor things >> >> >> >> which cause crunching in the gears and may help Brian improve the >> >> >> >> python script. >> >> >> >> >> >> >> >> * Yasm doesn't like loop labels to be called loop: Anything else >> >> >> >> is fine, e.g. loop1: >> >> >> > >> >> >> > I have got used to making that change! >> >> >> > >> >> >> >> * There is no prologue necessary for linux. The code can just end >> >> >> >> with ret >> > >> > I was never sure about prologue/epilogue and just copied the existing >> > files , >> > >> >> >> >> * include(`../config.m4') becomes %include '../yasm_mac.inc' >> >> >> > >> >> >> > I can add this with an option for Linux/Windows (different include >> >> >> > files) >> >> >> > >> >> >> >> * ASM_START is not required >> > >> > Again I was never sure what this was ment to do >> > >> >> >> > Agreed I left it there as I don't want to remove anything in case >> >> >> > it matters >> >> >> > >> >> >> >> * win64_gcc_start mpn_blah can become GLOBAL_FUNC mpn_blah >> >> >> > >> >> >> > Again I can translate that differently for Linux and Windows >> >> >> > >> >> >> >> * It didn't know what to do with mulq [rcx], it needs mul qword >> >> >> >> [rcx] >> > >> > I can live with most masm'ism's , they are just alternatives for >> > something similar in gas , but the dword ptr stuff is just *$"%£&) >> > - Show quoted text - >> > >> >> >> > There are a few instructions like this but I felt it was safer to >> >> >> > leave them to fail so that they got looked at. >> >> >> > >> >> >> >> * It choked on >> >> >> >> >> >> >> >> jge mulskiploop$1 >> >> >> >> MULLOOP($1) >> >> >> >> mulskiploop$1: >> >> >> >> >> >> >> >> Perhaps don't use $ as part of a label name. It thinks it is a >> >> >> >> macro parameter, which it doesn't seem to be. >> >> >> > >> >> >> > I thought that it was a macro parameter - one that Jason uses to >> >> >> > get a unique internal jump label in a multi-use macro. >> >> >> > >> >> >> >> I don't know why it converted MULLOOP($1) to MULLOOP$1 instead of >> >> >> >> MULLOOP 1 >> >> >> > >> >> >> > Where did it do this Bill? I couldn't get it to do it. >> >> >> > >> >> >> >> Capitals also appear to screw up in the conversion. The macros get >> >> >> >> converted to lower case, but the calls stay upper case (or is it >> >> >> >> vice versa, I forget). >> >> >> > >> >> >> > I couldn't get it to do this either :-( >> >> >> > >> >> >> >> More to come I am sure. I'm about half way. >> >> >> > >> >> >> > Remember that there are problems with alignment padding in YASM. >> >> >> > >> >> >> > The directive >> >> >> > >> >> >> > align n >> >> >> > >> >> >> > should be replaced with >> >> >> > >> >> >> > alignb n, nop >> >> >> > >> >> >> > Brian >> >> >> > - Show quoted text - >> >> > >> >> > Hi Bill >> >> > >> >> > I have a new version that does several of the things you want - is it >> >> > any use to you? >> >> > >> >> > The problem with the 'macros' in sqr_basecase is that they are hard to >> >> > distinguish from non macro symbols since there is no bracket around >> >> > the supposed parameter - how do I know that 'macro1' is 'macro 1' and >> >> > not the symbol 'macro1'? >> >> > >> >> > Translating macro(1) is easy but 'macro1' is a lot harder. I took the >> >> > view that it was better not to translate something than to translate >> >> > it wrongly :-) >> >> > >> >> > I do have a crude symbol table so I might be able to distinguish these >> >> > as macro calls. >> >> > >> >> > Brian >> >> > - Show quoted text - >> > >> > I suppose now that I not using GMP but MPIR , I should switch over to >> > yasm . I will admit I don't trust it, it's too new , there is enough >> > wierd shit going on with assembler code as it is. My other gripe is that >> > it works on windows , being an open source person , I don't like it :) >> > >> > Jason >> > - Show quoted text - >> >> > > > > >
--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "mpir-devel" group. To post to this group, send email to mpir-devel@googlegroups.com To unsubscribe from this group, send email to mpir-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/mpir-devel?hl=en -~----------~----~----~----~------~----~------~--~---