Я столкнулся с этой проблемой, используя 64-битный встроенный ассемблер в Delphi XE3, которого я не понимаю.
Я пробовал это, и он работает как на 32-битных, так и на 64-битных версиях.
function test(a, b: integer): integer; assembler; register;
asm
mov eax, a
add eax, edx
end;
Однако это работает только в 32-битном, но не в 64-битном, в 64-битном он компилируется, но не возвращает правильный результат суммы двух целых чисел.
function test(a, b: integer): integer; assembler; register;
asm
add eax, edx
end;
Я знаю предыдущий код FPU, такой как FLD, STP работает на 32-разрядных версиях, но он будет давать ошибку компиляции на 64-разрядном компиляторе. Есть идеи, как обрабатывать плавающие числа в 64-битном режиме?
link:msdn.microsoft.com/en-us/library/ms235286.aspx site:docwiki.embarcadero.com
и ... снова ничего не нашел. Кажется, нет ДОКУМЕНТАЦИИ о том, что программы Delphi должны полагаться на эту страницу MSDN. Единственная ОФИЦИАЛЬНАЯ документация для Delphi находится в DocWiki. Если его нет, значит, его нет. И чтение, не связанное с Delphi MSDN, - это не меньший метод проб и ошибок, чем просмотр отладчика Delphi. - person Arioch 'The   schedule 22.03.2013