Нет, Вы меня не правильно поняли.
Вы используете fpcupdeluxe для x86_64-win64 для установки кросс-компиляторов. Сначала fpcupdeluxe компилирует 64-битные fpc.exe и ppcx64.exe, потом 64-битные кросс-компиляторы (ppcross386.exe для i386, ppcross-что-то-там для linux и darwin x86_64). Так вот эти кросс-компиляторы и будут давать бинарники, отличающиеся от бинарников, полученных нативными компиляторами, потому что эти платформы поддерживают extended (80-bit floating point), a x86_64-win64 - нет. В лучшем случае при исполнении Вы будете иметь не то, что ожидали, в худшем - ошибки.
Раз уж мы сбились на оффтопик, приведу простейший пример:
program project1;
begin
writeln('SizeOf(3.1) = ', SizeOf(3.1)); // 3.1 хранится как extended на платформах,
// поддерживающих extended. Проверим это
writeln(3.1);
writeln(double(3.1)); // Для сравнения точности
readln;
end.
Заметьте, я нигде не использую extended явно.
Результат компиляции 32-битным ppc386.exe:
SizeOf(3.1) = 10
3.09999999999999999991E+0000
3.1000000000000001E+000
Результат компиляции 64-битным ppcross386.exe:
SizeOf(3.1) = 10
3.10000000000000008882E+0000
3.1000000000000001E+000
Хоть хранится как extended, но точность фактически double.
Вот Вам результат, который не ожидали (а может и ошибка, в зависимости от требований к программе).
В заключение замечу, что многие функции из RTL используют extended.