vc++6.0 启动代码
来源:互联网 发布:photoshop cc 2017 mac 编辑:程序博客网 时间:2024/05/29 13:56
vc++6.0 启动代码
--- crt0.c ---------------------------------------------------------------------------------------------------------------------------------
mainCRTStartup:
00408290 push ebp
00408291 mov ebp,esp
00408293 push 0FFh
00408295 push offset string "onexit.c"+10h (004313a0)
0040829A push offset __except_handler3 (0040e260)
0040829F mov eax,fs:[00000000]
004082A5 push eax
004082A6 mov dword ptr fs:[0],esp
004082AD add esp,0F0h
004082B0 push ebx
004082B1 push esi
004082B2 push edi
004082B3 mov dword ptr [ebp-18h],esp
004082B6 call dword ptr [__imp__GetVersion@0 (0043b164)] 调用GetVersion()函数,获取版本信息,返回值放在eax中
004082BC mov [__osver (00438914)],eax 版本信息保存在_osver变量中
004082C1 mov eax,[__osver (00438914)]
004082C6 shr eax,8
004082C9 and eax,0FFh
004082CE mov [__winminor (00438920)],eax
004082D3 mov ecx,dword ptr [__osver (00438914)]
004082D9 and ecx,0FFh
004082DF mov dword ptr [__winmajor (0043891c)],ecx
004082E5 mov edx,dword ptr [__winmajor (0043891c)]
004082EB shl edx,8
004082EE add edx,dword ptr [__winminor (00438920)]
004082F4 mov dword ptr [__winver (00438918)],edx
004082FA mov eax,[__osver (00438914)]
004082FF shr eax,10h
00408302 and eax,0FFFFh
00408307 mov [__osver (00438914)],eax
00408316 test eax,eax
00408318 jne mainCRTStartup+94h (00408324)
0040831A push 1Ch
0040831C call fast_error_exit (004083f0)
00408321 add esp,4
00408324 mov dword ptr [ebp-4],0
0040832B call _ioinit (0040dae0)
00408330 call dword ptr [__imp__GetCommandLineA@0 (0043b160)] 调用GetCommandLineA()函数获取命令行信息
00408336 mov [__acmdln (0043a2c4)],eax
0040833B call __crtGetEnvironmentStringsA (0040d8c0) 调用_crtGetEnvironmentStringsA()函数 获取环境变量信息
00408340 mov [__aenvptr (004388e4)],eax
00408345 call _setargv (0040d3b0)
0040834A call _setenvp (0040d260)
0040834F call _cinit (0040c6d0) 调用_cinit()用于全局数据和浮点寄存器的初始化。全局对象和IO流对象都是通过这个函数实现的。
00408354 mov ecx,dword ptr [__environ (00438930)]
0040835A mov dword ptr [___initenv (00438934)],ecx
00408360 mov edx,dword ptr [__environ (00438930)]
00408366 push edx
00408367 mov eax,[___argv (00438928)]
0040836C push eax
0040836D mov ecx,dword ptr [___argc (00438924)]
00408373 push ecx
00408374 call @ILT+10(_main) (0040100f) 调用main()主函数,开始用户程序,传递参数_argc,_argv_environ
00408379 add esp,0Ch
0040837C mov dword ptr [mainret],eax
0040837F mov edx,dword ptr [mainret]
00408382 push edx
00408383 call exit (0040c710)
$L17805:
00408388 mov eax,dword ptr [ebp-14h]
0040838B mov ecx,dword ptr [eax]
0040838D mov edx,dword ptr [ecx]
0040838F mov dword ptr [ebp-20h],edx
00408392 mov eax,dword ptr [ebp-14h]
00408395 push eax
00408396 mov ecx,dword ptr [ebp-20h]
00408399 push ecx
0040839A call _XcptFilter (0040d050)
0040839F add esp,8
--- crt0.c ---------------------------------------------------------------------------------------------------------------------------------
mainCRTStartup:
00408290 push ebp
00408291 mov ebp,esp
00408293 push 0FFh
00408295 push offset string "onexit.c"+10h (004313a0)
0040829A push offset __except_handler3 (0040e260)
0040829F mov eax,fs:[00000000]
004082A5 push eax
004082A6 mov dword ptr fs:[0],esp
004082AD add esp,0F0h
004082B0 push ebx
004082B1 push esi
004082B2 push edi
004082B3 mov dword ptr [ebp-18h],esp
004082B6 call dword ptr [__imp__GetVersion@0 (0043b164)] 调用GetVersion()函数,获取版本信息,返回值放在eax中
004082BC mov [__osver (00438914)],eax 版本信息保存在_osver变量中
004082C1 mov eax,[__osver (00438914)]
004082C6 shr eax,8
004082C9 and eax,0FFh
004082CE mov [__winminor (00438920)],eax
004082D3 mov ecx,dword ptr [__osver (00438914)]
004082D9 and ecx,0FFh
004082DF mov dword ptr [__winmajor (0043891c)],ecx
004082E5 mov edx,dword ptr [__winmajor (0043891c)]
004082EB shl edx,8
004082EE add edx,dword ptr [__winminor (00438920)]
004082F4 mov dword ptr [__winver (00438918)],edx
004082FA mov eax,[__osver (00438914)]
004082FF shr eax,10h
00408302 and eax,0FFFFh
00408307 mov [__osver (00438914)],eax
0040830C push 0
0040830E call _heap_init (0040e0e0) 调用_heap_init()函数 初始化堆空间 其中 参数0表示为单线程版本,1表示多线程
00408316 test eax,eax
00408318 jne mainCRTStartup+94h (00408324)
0040831A push 1Ch
0040831C call fast_error_exit (004083f0)
00408321 add esp,4
00408324 mov dword ptr [ebp-4],0
0040832B call _ioinit (0040dae0)
00408330 call dword ptr [__imp__GetCommandLineA@0 (0043b160)] 调用GetCommandLineA()函数获取命令行信息
00408336 mov [__acmdln (0043a2c4)],eax
0040833B call __crtGetEnvironmentStringsA (0040d8c0) 调用_crtGetEnvironmentStringsA()函数 获取环境变量信息
00408340 mov [__aenvptr (004388e4)],eax
00408345 call _setargv (0040d3b0)
0040834A call _setenvp (0040d260)
0040834F call _cinit (0040c6d0) 调用_cinit()用于全局数据和浮点寄存器的初始化。全局对象和IO流对象都是通过这个函数实现的。
00408354 mov ecx,dword ptr [__environ (00438930)]
0040835A mov dword ptr [___initenv (00438934)],ecx
00408360 mov edx,dword ptr [__environ (00438930)]
00408366 push edx
00408367 mov eax,[___argv (00438928)]
0040836C push eax
0040836D mov ecx,dword ptr [___argc (00438924)]
00408373 push ecx
00408374 call @ILT+10(_main) (0040100f) 调用main()主函数,开始用户程序,传递参数_argc,_argv_environ
00408379 add esp,0Ch
0040837C mov dword ptr [mainret],eax
0040837F mov edx,dword ptr [mainret]
00408382 push edx
00408383 call exit (0040c710)
$L17805:
00408388 mov eax,dword ptr [ebp-14h]
0040838B mov ecx,dword ptr [eax]
0040838D mov edx,dword ptr [ecx]
0040838F mov dword ptr [ebp-20h],edx
00408392 mov eax,dword ptr [ebp-14h]
00408395 push eax
00408396 mov ecx,dword ptr [ebp-20h]
00408399 push ecx
0040839A call _XcptFilter (0040d050)
0040839F add esp,8
- vc++6.0 启动代码
- VC开机启动代码
- vc开机自启动代码
- VC 开机自动启动/取消自动启动代码
- VC 开机自动启动/取消自动启动代码
- VC++ 6.0代码自动提示
- VC++6.0代码字体修改
- VC++6.0显示代码行号
- VC++6.0显示代码行号
- VC 6.0 代码执行时间测量 代码
- VC++6.0 显示Project代码行
- vc++6.0中使代码对齐
- 修改VC++6.0代码提示快捷键设置
- VC程序启动画面
- VC# Service 无法启动
- vc 程序启动画面
- VC程序启动画面
- CreateProcess启动进程(VC)
- STL备忘(简版)
- 进制转换的具体实现
- redis 介绍
- MFC中的ADO数据库编程
- SVM入门(三)线性分类器Part 2
- vc++6.0 启动代码
- C语言 静态变量、全局变量、局部变量、指针变量 地址
- 由I9100字体客制化apk架构说起
- SVM入门(四)线性分类器的求解——问题的描述Part1
- 手机射频测试分析与总结(一)——GPS部分
- SVM入门(五)线性分类器的求解——问题的描述Part2
- SVM入门(六)线性分类器的求解——问题的转化,直观角度
- 手机射频测试总结(二)——接收灵敏度
- 容器和算法