2019-2020-1 20175310 《信息安全系统设计基础》第3周学习总结
2019-2020-1 20175310 《信息安全系统设计基础》第3周学习总结
教材学习内容总结
本周学习了《程序的机器级表示》这一章,主要的知识点如下:
教材学习中的问题和解决过程
- 问题1:
习题3.23
- 问题1解决方案:
A.由于2~5行上寄存器%rax
、%rcx
和%rdx
分别被初始化为x
、x*x
和x+x
,因此可以推断,这些寄存器包含着程序变量;
而参数x通过寄存器%rdi
传递给函数,但进入循环就再也没有引用过该寄存器,因此包含程序变量的寄存器为%rax
、%rcx
和%rdx
。 - 问题2:
习题3.15
- 问题2解决方案:
A.je
指令的目标是0x4003fc+0x02=0x4003fe
B.由于0xf4
是-12的补码表示,所以je
指令的目标是0x400431-12=0x400425
C.跳转目标是绝对地址0x400547
,在pop
指令0x2
的地址处,因此为0x400545
,由于ja
编码要两个字节,因此地址为0x400543
D.由题可知目标偏移量为0xffffff73
,nop
指令地址为0x4005ed
,所以jmpq
地址为0x400560
代码调试中的问题和解决过程
本周只有一个代码需要调试,且较为简单,因此没有问题。
代码托管
上周考试错题总结
- 问题1:
在采用补码运算的32位机器上,下列表达式的结果为0的是()
A .-2147483647-1 == 2147483647U
B .-2147483647-1 < 2147483647
C .-2147483647-1U < 2147483647
D .-2147483647-1 < -2147483647
-
问题1解决方案:
-
问题2:
0<=x,y<2^w, 则
A .x+y的最大值是2^w
B .x+y的最大值是2^w-1
C .x+y的最大值是2^w-2
D .x+y的最大值是2^(w+1)
E .x+y的最大值是2^(w+1)-1
F .x+y的最大值是2^(w+1)-2
- 问题2解决方案:
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 66/66 | 1/1 | 10/10 | |
第二周 | 139/205 | 1/2 | 15/25 | |
第三周 | 351/556 | 1/3 | 13/38 |