Как работают FILD и FSTP?

Я искал по сети, и везде было написано: FILD преобразует дополнение двух целых чисел в 80-битную расширенную точность с плавающей точкой и помещает ее поверх стека с плавающей точкой. Итак, у меня была программа для этого, но результат, который я получил, был неожиданным.

Пример: у меня есть номер 0xFF20A810 в памяти (скажем, в 0x40000000) fild [0x40000000] fstp [0x40010000]

В результате я получаю 0x41EFE41502000000. Как конвертируется число? Я нахожусь в середине взлома, который использует это, и я просто не могу найти решение.

Спасибо

1 ответ

0x41EFE41502000000 - это 4280330256.0 с двойной точностью. 0xFF20A810 равно 4280330256 как целое число без знака.

Таким образом, вы случайно загрузили его, я думаю, как qword, и вам повезло (остальные байты были равны нулю).

Другие вопросы по тегам