序言
接着上一个继续学习,本次学习的是《C语言实例解析精粹》实例2运行多个源文件,也就是把打印hello world分成多个源文件进行编译,主程序不用那么多行的代码。
环境是VS2017,内存地址和虚拟机中的内存地址不太一样,不过不影响理解汇编代码的学习。
C代码
程序分成三个源代码文件,分别是helloworld.c, print.h和No.2.c(文件名称自定义)。
print.h文件中引入了标准输入输出函数库stdio.h,声明了打印hello world的函数:
helloworld.c文件中写了一个打印hello world的函数:
No.2.c文件就是我的主函数所在的文件,就引入了自定义的头文件,并调用打印函数:
C代码很简单,下面看DEBUG的汇编代码
汇编代码
我是在printHello()处下的断点
使用F11快捷键,可以看一下012E1938 call _printHello (012E11EAh) 是怎么执行的
可以看到函数地址为 printHello (012E1810h) ,再次跟进去
查看一下这个地方offset string "hello world!\n" (012E7B30h)的内存,是否存着“hello world”
这些简单的汇编指令,我就不详细写出来了。
结语
每天进步一点点,总比没有进步好,加油!
如有错误,敬请指出,感谢指正! —2019-05-14 22:59:36