Как работают FILD и FSTP? - PullRequest
3 голосов
/ 26 марта 2012

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

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

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

Спасибо

1 Ответ

3 голосов
/ 26 марта 2012

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

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

...