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