Я столкнулся с этой проблемой, используя 64-разрядный встроенный ассемблер в Delphi XE3, который я не понимаю.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-битных?
«Может кто-нибудь дать мне быстрый учебник» не является хорошим вопросом переполнения стека. Более того, код в вопросе использует 32-битные целые единицы, но вы действительно заинтересованы в коде FPU. Который радикально отличается в 64 бит. Мой самый сильный совет - перенести весь свой код ассемблера на Pascal и позволить компилятору сделать тяжелый подъем. –
Собственно, приятель! когда вы видите вещи thios, вам просто нужно открыть окно процессора и сравнить, в каких регистах входят параметры. Если вы работаете с ассемблером, тогда отладка в ассемблере - это ваш дом! Если нет - тогда вам лучше спросить кого-нибудь, кто знает, что такое CPU, регистры и ассемблер. –
@ Arioch'The Испытание и ошибка в отладчике - это не способ узнать MS x64 ABI. Официальная документация - как это сделать. –