首页
社区
课程
招聘
[原创]VC6.0 浮点未初始化bug的原因
发表于: 3天前 1057

[原创]VC6.0 浮点未初始化bug的原因

3天前
1057


可见 _cfltcvt_tab是一个全局的函数指针数组,且初始化赋值为 _fptrap

从注释中,可以发现决定初不初始化FPU的关键是 _cfltcvt_init,该符号在libc.lib中fpinit.obj中

为了更好观察 _FPinit变量,可以记录下当前指令地址 0x004017F3

使用OD调试器,调试该程序,并在断在入口点,Ctrl+G跳转到目标地址观察

// test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
int main(int argc, char* argv[])
{
    float f;
    printf("please input a float: ");
    scanf("%f",&f);
    return 0;
}
// 修改测试代码,旨在让vc6.0初始化FPU
float f = 1.0f;

传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回