Non-consistent loading of 64 bit value into memory under x64 FPC
FPC Trunk
program Project1;
var
x: uint64;
begin
x:=$1122334455667788;
writeln(x);
end.
Under Windows x64 with -O1:
mov [rip+$00011A38],$55667788
mov [rip+$00011A32],$11223344
Under Linux x64 with -O1 through -O4 (!!!):
mov [rax],$55667788
mov [rax+$04],$11223344
It seems the more correct and consistent way to load is to do it through a register, first load the value into the register and then the value from the register into memory
Edited by alligator