1 编辑并运行2.3.1中的代码,要求在不修改t2.c 和 t1.c中main函数中的代码的情况下,程序运行结果是你的后四位学号。提交代码和运行结果截图。
t1.c
t2.c
运行结果
2 网上学习objdump命令,提交不少于5篇博客链接和微信读书上的图书链接,并给出你认为最好的讲解资源的链接或图书名及章节
- http://blog.chinaunix.net/uid-9525959-id-2001838.html(对每个参数用法有详细的介绍及实践步骤)
- https://linux265.com/course/linux-command-objdump.html
- https://www.cnblogs.com/baiduboy/p/7061365.html
- https://blog.csdn.net/whatday/article/details/99154104(有详细的常用符号表字段、实例)
- https://blog.csdn.net/wwchao2012/article/details/79980514
3 用objdump分析第1步中的可执行文件和目标文件,提交你的分析截图以及如何和教材讲解内容对应的,比如obj文件的文件头,代码段,数据段等,可执行文件如何链接mysum的。
-
-d 从objfile中反汇编那些特定指令机器码的section。
-
-D --disassemble-all
与 -d 类似,但反汇编所有section.
使用objdump -f每个文件的整体头部摘要信息
使用objdump -d对编译出的.o文件进行反汇编:
使用objdump -D对可执行文件进行反汇编
bss段:
代码段:
数据段:
可执行文件链接mysum:
编译完成后,链接器接收到输入文件的信息,将多个输入文件信息合并,合成一个全局符号表并进行地址空间的分配,确定所有符号的具体地址,对每一个输入文件中需要重定位的符号重新定位到正确的地址处。