On 2016-03-30 11:58, Michael Van Canneyt wrote:
> The code is there to differentiate between the windows ABI and other ABIS,
> which specify in what register the AValue parameter is passed.
Ah okay. One could possibly write it in a less ambiguous way, as
follows? No IFDEF's needed.
function SwapEndian(const AValue: DWord): DWord; assembler; nostackframe;
asm
movl AValue, %eax
bswap %eax
end;
The generated assembler seems to be identical to the original code (at
least on my FreeBSD system).
.Lc1:
# Var AValue located in register edi
# Var $result located in register eax
# [project1.lpr]
# [10] asm
# [11] movl AValue, %eax
movl %edi,%eax
# [12] bswap %eax
bswapl %eax
# [13] end;
ret
.Lc2:
Regards,
- Graeme -
_______________________________________________
fpc-pascal maillist - [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal