2017-2018-1 20155204 《信息安全系统设计基础》第五周学习总结
教材学习内容总结
3.1 历史观点
- Intel处理器系列俗称x86,经历了长期的不断发展的过程。
3.2 程序编码
- 两种抽象:由指令集体系结构或指令集架构来定义机器级程序的格式和行为;机器级程序实用的内存地址是虚拟地址,提供的内存模型看上去是一个非常大的字节数组。
- 反汇编:带
-d
的OBJDUMPk可以充当这个角色。
3.3 数据格式
3.4 访问信息
-
数据传送指令有三种:movb(传送字节)、movw(传送字)和movl(传送双字)。
-
pushl数据压栈,popl数据出栈。采用先进后出的原则。栈顶地址小,栈底地址大。IA32栈向低地址方向增长。所以push指令减小栈指针。
-
整数操作指令
addl、subl、andl、xorl -
跳转指令jmp、jle、jl、je、jne、jge、jg
-
条件传送指令
只有当条件码满足所需要的约束时,才会更新目的寄存器的值。
cmovle、cmovl、cmove、cmovne、cmovge、cmovg
3.5 算术和逻辑操作
- 加载有效地址 leaq
3.6 控制
- 常用条件码:CF:进位标志 ZF:零标志 SF:符号标志 OF:溢出标志
3.7过程
- call指令:后接被调用过程的起始的指令地址。效果是将返回地址入栈,并跳转到被调用过程的起始处。
- ret指令:从栈中弹出地址,并跳转到这个位置。
3.8数组分配和访问
3.9异质的数据结构
3.10在机器级程序中将控制与数据结合起来
3.11浮点代码
教材学习中的问题和解决过程
- 问题1:MOVS和MOVZ指令区别?
- 问题1解决方案:实际上没有MOVS这条指令,只有MOVSB、MOVSW、MOVSD等,串操作需要明确数据类型,B表示BYTE,W表示WORD,D表示DWORD。MOVS符号位扩展,MOVZ零扩展(高位0填充)
20155204
本周结对学习情况
- [20155203](http://www.cnblogs.com/xhwh/p/7711946.html)
- 结对学习内容
实验内容、实验报告、mybash、一起读书。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 | |
第五周 | 200/1500 | 2/11 | 10/100 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:10小时
-
实际学习时间:10小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)