首页
社区
课程
招聘
[原创]VC6.0 浮点未初始化bug的原因
发表于: 2026-5-16 01:12 4662

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

2026-5-16 01:12
4662


可见 _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;

[培训]《冰与火的战歌:Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

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