Hi Todd 

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

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?

Is the x86_64 not support intel syntax a known limitation of freepascal?
It's not mentioned on the site anywhere I can see.

Cheers,
  Paul.

_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: delphi@delphi.org.nz
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: 
unsubscribe

Reply via email to