Jonas Maebe wrote:
On 20 Apr 2012, at 17:50, OBones wrote:
So there is a difference with Delphi's assembler where it defaults to relative
indexing while FPC defaults to absolute in that context.
What exactly do you mean by relative addressing in this context? RIP-relative?
In FPC, you indeed have to explicitly mention the RIP register in your
reference to get RIP-relative addressing.
What I mean is that under Delphi XE2 in x64 mode, if I type this:
rcx,qword ptr gs:[$30]
I get this generated code:
65488B0D30000000
but if I type the "abs" keyword, I get this:
65488B0C2530000000
while if I do it in x86 mode, I get this :
mov ecx,dword ptr fs:[$18]
648B0D18000000
so it seems that for Delphi XE2 in x64, the default mode, when no
keyword is specified, is to use "relative" indexing which is definitely
not what I want.
Freepascal, however, appears to use absolute indexing in all mode in
this instance, which is fine by me, but something to keep in mind when
porting the code.
Regards
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal