[DUG] Assembler

Todd todd.martin.nz at gmail.com
Thu Sep 23 16:06:13 NZST 2010


Hi Paul
>>> movl 12(%eax), %eax
>>>        
>> So I could do something like this?
>>
>> i := integer(@TSparseList(nil).FList);
>> movl i(%eax), %eax
>>      
> Unfortunately, no. You'd get the offset you want, but you can only use
> constants in inline assembler, and I don't think delphi or freepascal
> will consider your previous line to be a valid constant.
>
> So you'd need to write some code to determine all your offsets and then
> set up constants for them all.
>
>    
>> The x86_64 version of FPC doesn't seem to like the BASM
>> syntax, otherwise I wouldn't touch it. Or at least I can't
>> figure out how to force FPC to compile it. The directive
>> {$asmmode intel}  doesn't seem to work.
>>      
> Bugger - especially as their x86 BASM syntax already supports the
> structure member offset extension. And from the (somewhat terse)
> freepascal documentation, I don't think there is an equivalent in AT&T
> syntax.
Oh great.
> What kind of error messages are you getting? In 64-bit assembler, all
> the registers commonly have different names (e.g. rax as opposed to to
> eax). Maybe their assembler is fussy about that sort of thing?
>    
If I try something simplistic like this

   movl %eax.TSparseList.FList, %eax

I get

Error: Assembler syntax error in operand
Error: Unknown identifier ".TSparseList"

> Is the x86_64 not support intel syntax a known limitation of freepascal?
> It's not mentioned on the site anywhere I can see.
>
>    
I suspect the FPC crowd intend supporting BASM in the 64bit version, so 
it is a bug.

Thanks,
Todd.

> Cheers,
>    Paul.
>
> _______________________________________________
> NZ Borland Developers Group - Delphi mailing list
> Post: delphi at delphi.org.nz
> Admin: http://delphi.org.nz/mailman/listinfo/delphi
> Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject: unsubscribe
>    



More information about the Delphi mailing list