Как работают FILD и FSTP?
Я искал по сети, и везде было написано: FILD преобразует дополнение двух целых чисел в 80-битную расширенную точность с плавающей точкой и помещает ее поверх стека с плавающей точкой. Итак, у меня была программа для этого, но результат, который я получил, был неожиданным.
Пример: у меня есть номер 0xFF20A810 в памяти (скажем, в 0x40000000) fild [0x40000000] fstp [0x40010000]
В результате я получаю 0x41EFE41502000000. Как конвертируется число? Я нахожусь в середине взлома, который использует это, и я просто не могу найти решение.
Спасибо
1 ответ
0x41EFE41502000000 - это 4280330256.0 с двойной точностью. 0xFF20A810 равно 4280330256 как целое число без знака.
Таким образом, вы случайно загрузили его, я думаю, как qword, и вам повезло (остальные байты были равны нулю).