Hi Brian,

I noted that the new version of your script still emits ASM_START. You
could have it emit BITS 64 instead if you like, or just omit it
altogether.

Also, when I said that the function can just end with ret, I didn't
mean that it should emit ret instead of asm_windows_blah or whatever
it was. There is already a ret at the end of the function. I simply
meant that you don't have to put anything at all at the end of the
code, i.e. instead of the last ret you are currently emiting, you can
just emit nothing.

The rest looks OK I think.

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.
>>
>> 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
>>
>> >> * 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
>>
>> > 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]
>>
>> > 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 -
> >
>

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to