本次实验在openEuler环境下进行
(一):
如图,将变量g改为1303即可输出sum=1306
(二):
- 1.齐全的基础命令 https://man.linuxde.net/objdump
- 2.代码与例子紧密结合,很好理解 https://blog.csdn.net/qq_41683305/article/details/105375214?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163564479716780262528236%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163564479716780262528236&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2
- 3.简洁明了,突出重点 https://blog.csdn.net/wwchao2012/article/details/79980514
- 4.介绍二进制文件的分析和objdump https://www.cnblogs.com/sgawscd/articles/11209999.html
- 5.介绍十分详细 http://tsengyia.blog.chinaunix.net/uid-9525959-id-2001838.html
(三):
利用objdump -d a.out命令进行简单反汇编:
数据段:
代码段:
链接mysum:
文件头:
利用objdump -x a.out命令
- cc的最后一步是调用链接器将所有.o文件和必要的库函数组合成单一的二进制可执行文件,链接器可以用符号表解析各个.o文件之间的交叉引用,在编译中不知道mysum在何处即留下一个空白作为入口地址,在符号表中会有记录,将mysum入口地址填入空白。