这一部分继续深入研究用汇编解释c的原理,尝试不用main()函数编写可以正确运行的程序
1、首先编写一个简单的程序
f() { *(char far *)(0xb8000000+160*10+80) = 'a'; *(char far *)(0xb8000000+160*10+81) = 2; }
在TC中编译,连接这个程序。出现了一个连接错误
Linker Error:Undefined symbol ‘_main’in module C0S(未定义的符号_main在模块C0S中)
这句话说明,c语言的入口函数main函数是被C0S.obj所调用。
现在我们用汇编语言所使用的连接器Link.exe来连接c语言编译后的.obj文件得到一个.exe文件,用debug调试这个.exe文件
从反编译后的指令看到,偏移地址为0开始的程序就是我们编写的程序。在资源管理器中看到,这个文件只有541个字节。但是执行后不能正确返回
2、正常的程序
下面编写一个正常的程序
m