我在网上搜索过,到处都写着:FILD 转换 an 的补码 整数转换为 80 位扩展精度 float ,并将其放在 float 堆栈的顶部。 因此,我有一个程序可以做到这一点,但得到的结果是出乎意料的。
示例: 我的内存中有数字0xFF20A810(假设在0x40000000) 字段 [0x40000000] fstp [0x40010000]
我得到的结果是0x41EFE41502000000。数字是如何换算的? 我正在使用这个的crackme,但我找不到解决方案。
谢谢
最佳答案
0x41EFE41502000000 在 double 下是 4280330256.0。 0xFF20A810 是无符号整数 4280330256。
所以我想你不小心将它加载为 qword,并且很幸运(其他字节为零)。
关于assembly - FILD 和 FSTP 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9864073/