[fpc-pascal] Inline assembly using absolute dword ptr

OBones obones at free.fr
Mon Apr 23 09:07:58 CEST 2012


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



More information about the fpc-pascal mailing list