[DUG] Assembler

Paul Heinz paul at accredo.co.nz
Thu Sep 23 14:49:27 NZST 2010


Hi Todd 

> I guess the thing that's throwing me here, is the use of 
> [EAX].TSparseList Is it casting the register as a pointer to 
> a TSparseList instance, in order to get the offset to the FList field?
> I'm wondering what the equivalent is in AT&T.

Well, there are no casts in assembler per se - it's just a useful
shorthand for calculating a member offset that will stay correct even if
you rearrange the TSparseList class declaration which is a very nice
BASM feature. 

So, assuming the offset to the FList member from the start of a
TSparseList instance is 12 bytes (for arguments sakes), in AT&T syntax
that would be:

movl 12(%eax), %eax

Purely out of curiousity, but why do you want the AT&T syntax
equivalent? Is this for part of a Lazarus port?

Also, I gather Freepascal will translate intel BASM syntax to AT&T
syntax before passing it down the GNU toolchain. Maybe you could capture
the intermediate result?

Cheers,
  Paul.



More information about the Delphi mailing list