c语言实例解析精粹光盘源码百度云,反汇编学习-C语言实例解析精粹-实例2运行多个源文件...

序言

接着上一个继续学习,本次学习的是《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”

a41a622c375209c5fce7e540b59d1511.png

这些简单的汇编指令,我就不详细写出来了。

结语

每天进步一点点,总比没有进步好,加油!

如有错误,敬请指出,感谢指正!      —2019-05-14 22:59:36

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值