2017-2018-1 20155330 《信息安全系统设计基础》第5周学习总结
2017-2018-1 20155330 《信息安全系统设计基础》第五周学习总结
教材学习内容总结
-
使用命令
gcc -Og -o p p1.c p2.c
编译相关代码(此处以main.c、add.c为例)。
-
使用命令
gcc -Og -S mstore.c
产生汇编代码
再用gcc -Og -c mstore.c
产生目标代码文件,利用反汇编器命令objump -d xx.c
命令查看机器代码文件内容。 -
movabsq
指令能够以任意64位立即数值作为源操作数,并且只能以寄存器作为目的。 -
MOV,MOVZ,MOVS
- MOV
指令 效果 描述 MOV S,D D←S 传送 movb 传送字节 movw 传送字 movl 传送双字 movq 传送四字 movabsq I,R R←I 传送绝对的四字 - MOVZ
指令 效果 描述 MOVZ S,R R←零扩展(S) 以零扩展进行传送 movzbw 将做了零扩展的字节传送到字 movzbl 将做了零扩展的字节传送到双字 movzwl 将做了零扩展的字传送到字 movzbq 将做了零扩展的字节传送到四字 movzwq 将做了零扩展的字传送到四字 - MOV
指令 效果 描述 MOVS S,R R←符号扩展(S) 传送符号扩展的字节 movsbw 将做了符号扩展的字节传送到字 movsbl 将做了符号扩展的字节传送到双字 movswl 将做了符号扩展的字送到双字 movsbq 将做了符号扩展的字节传送到四字 movswq 将做了符号扩展的字传送到四字 movslq 将做了符号扩展的双字传送到四字 cltq 把%eax符号扩展到%rax
教材学习中的问题和解决过程
-
问题1:
gcc -Og
优化原理是什么?该过程产生了什么?是否能够查看优化过程? -
问题1解决方案:
-Og
该标识会精心挑选部分与-g选项不冲突的优化选项,当然就能提供合理的优化水平,同时产生较好的可调试信息和对语言标准的遵循程度。
优化过程同样产生可执行代码文件(例中的p文件),不具体显示优化过程。
代码调试中的问题和解决过程
无
代码托管
上周考试错题总结
-
错题1:
针对以上代码:gcc -c *.c 可以得到m.o,swap.o两个模块,哪些符号会出现在swap.o模块的.symtab条目中()
A. buf
B. temp
C. swap
D. buffp0 -
理解情况:temp是局部变量,不出现在符号表中。
-
错题2:main.c 调用了静态库libmath.a中的函数,编译main.c的命令是()
A.gcc -static main.c ./libmath.a -o main
B.gcc -static main.c -L. -lmath -o main
C.gcc -static main.c -L. -llibmath.a -o main
D.gcc -static main.o ./libmath.a -o main
-
理解情况:
-lxxx
用于链接生成的库,而生成的库的文件名必须形如 libxxx.a。 -
错题3:gcc hello.c产生的a.out属于()
A.可重定位目标文件B.可执行目标文件
C.共享目标文件
D.目标模块或目标文件
-
理解情况:
gcc -c
生成可重定位目标文件 -
错题4:无论什么样的操作系统,ISA或者目标文件格式,基本的链接概念是通用的。
A.正确 B.错误
结对及互评
本周结对学习情况
- 20155321
- 结对学习内容
- 第3章 程序的机器级表示
- 实验一 开发环境的熟悉
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 10/10 | |
第二周 | 63/63 | 1/2 | 8/18 | |
第三周 | 31/94 | 1/3 | 18/36 | |
第四周 | 265/329 | 1/4 | 17/53 | |
第五周 | 106/435 | 2/6 | 18/71 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:15小时
-
实际学习时间:18小时