|
[讨论]OD里面FPU寄存器计算的BUG?
80位:1 + 15 + 64 这个64位不是单单指尾数部分,它还包括小数点前的整数1,这个和IEEE 754的标准形式即省略1不同,这是本问题的关键。 64位:1 + 11 + 52 由于这个是IEEE 754浮点标准,所以这个52位全是小数部分,它省略了小数点前的整数1。 也就是说在这个问题中,你从80位转到64位,应该是要用80位的后64位(即1.0)减去1得到64位的小数部分0,而不是单单去掉64位的后12位变为52位。 |
|
[讨论]OD里面FPU寄存器计算的BUG?
"在处理 80位的时候 (1 + 15 + 64) 0x 3FFF 8000 0000 0000 0000 由于VC没有80为的处理,所以我将它转换为 64位: 0 x 3FF8 0000 0000 0000 故得到 1.50000000000" 楼主,你的这段转换是有问题的,所以得出错误的结论。 不知你有没有看过将float转换为double的反汇编代码?如果你看过就知道VC应该有80位的处理,在VC里记得应该是ST0~ST7这8个寄存器,都是80位的,即扩展精度浮点寄存器。 希望对你有帮助! |
|
[讨论]《C++反汇编》P80有问题
推导6中,要么都是向上取整,要么都是向下取整,所以我才觉得有问题 |
|
[讨论]double类型逆向示范
练习:printf("%.8f\n",2*sqrt(3)/4.9+1.0); |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值