On Wed, 30 Mar 2016, Graeme Geldenhuys wrote:
Hi,
Here is the x86_64's SwapEndian() function implementation.
=============[ src/rtl/x86_64/x86_64.inc ]====================
function SwapEndian(const AValue: DWord): DWord; assembler; nostackframe;
asm
{$ifdef win64}
movl %ecx, %eax
{$else win64}
movl %edi, %eax
{$endif win64}
bswap %eax
end;
=============================================
Surely the usage of IFDEF WIN64 is not 100% correct or accurate. Should
the above not rather read IFDEF CPU64?
No, the code is exclusively for all 64-bit platforms.
The code is there to differentiate between the windows ABI and other ABIS,
which specify in what register the AValue parameter is passed.
Michael.
_______________________________________________
fpc-pascal maillist - [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal