2019-2020-1 20175209 《信息安全系统设计基础》第三周学习总结
教材知识点总结
第三章主要讲述了程序机器级表示,通过对第三章的学习,对C语言文件编译时的汇编代码有了相关的了解,大致总结如下:
-
C语言代码的汇编过程,主要学习了
gcc -Og -S -mian.c
命令,即汇编代码的生成,以及对可执行文件的反汇编命令odjdump -d main
-
在上学期我们学习了汇编这门课程,而C语言的汇编代码和之前学习的80x86系统的汇编过程还是有所不同的
- 关于立即数的加减运算,在汇编语言中会将立即数放置在运算指令的第二个运算数的位置,而C语言的汇编代码会将运算的立即数放在第一个运算数的位置,例如对于同样的运算算式
x=x+8
,在80x86系统中的格式为ADD AL,8
,而在C语言中的格式为addb $8,%al
;
- 关于立即数的加减运算,在汇编语言中会将立即数放置在运算指令的第二个运算数的位置,而C语言的汇编代码会将运算的立即数放在第一个运算数的位置,例如对于同样的运算算式
-
使用gdb调试代码
教材学习中遇到的问题
-
问题1:在利用-Og编译书上代码时main.c 时出现了找不到头文件
stdio.h
的错误提示,开始认为是自己写的代码出现了问题,自己编译了测试代码后发现仍然存在该问题
-
解决:百度了相关原因后发现由于虚拟机镜像文件的问题,有些虚拟机在下载gcc时不会下载C语言相关的头文件,需要自行下载,而在学习上一章时因为头文件都是自己编写的因此没有出现该错误。输入
gcc apt-get install build-essential
命令下载相应头文件,具体可参考链接,再运行测试代码即可。
-
对书上部分代码汇编过程的测试