20155322 2017-2018-1《信息安全系统设计》第七周学习总结
教材学习内容总结
第四章:
-
关于ISA:
- 一个处理器支持的指令和指令的字节级编码就是这个处理器的ISA
- ISA包括:指令集、指令集编码、基本数据类型、一组编程规范、寄存器、寻址模式、存储体系、异常事件处理、中断和外部I/O
- ISA在编译器编写者(CPU软件)和处理器设计人员(CPU硬件)之间提供了一个抽象层:
- 处理器设计者:依据ISA来设计处理器
- 处理器使用者(如:写编译器的牛*程序员):依据ISA就知道CPU选用的指令集,就知道自己可以使用哪些指令以及遵循哪些规范
-
关于Y86:
- 程序员的可见状态:寄存器、存储器、条件码、PC和程序状态。
- 8个寄存器,每个寄存器存储32位
- 条件码是一个二进制的寄存器
- pc记录当前正在执行的指令的地址
- Y86可使用虚拟地址访问存储器
教材学习中的问题和解决过程
-
问题:x86和y86有什么不同?
-
解决:通过上网搜索,我了解到其实Y86指令是不存在的,这是教材作者受到 IA32指令,也就是“x86”的启发,所假想出来的一种处理器体系结构,Y86指令集的数据类型、指令和寻址方式都要少一些,字节级编码也比较简单。但是它仍然足够完整。
-
补充:Y86的基本指令
-
halt :这个指令会停止指令的执行。在IA32中有个与之相当的指令 hlt,不过IA32的应用程序不允许使用这条指令,因为它会导致整个系统暂停运行。而对于Y86来讲,执行 halt 指令会导致处理器停止,并将状态码设置为 HLT。
-
nop:这是一个占位指令,它不做任何事情,后续为了实现流水线,它有一定的作用。
-
xxmovl:这是一系列的数据传送指令,其中r代表寄存器,m代表存储器,i代表立即数。比如rrmovl指令,则代表将一个寄存器的值,赋给另外一个寄存器。
-
OPl:这包括4个整数操作指令,addl、subl、andl和xorl。他们只对寄存器数据进行操作。
-
jXX:包括7个跳转指令,jmp,jle,jl,je,jne,jge,jg。根据分支指令的类型和条件码的设置来选择分支。
-
cmovXX:包括6个条件传送指令,cmovle,cmovl,cmove,cmovne,cmovge和cmovg,只发生在两个寄存器之间,不会将数据传送到存储器。
-
call:指令将返回地址入栈,然后跳到目的地址。
-
ret:call是过程调用,ret是返回。将返回地址入PC,并跳到返回地址。
-
pushl和popl:指令实现了地址的入栈和出栈
-
代码调试中的问题和解决过程
本周结对学习情况
- 结对学习内容:
- 教材第四章
代码托管
其他(感悟、思考等,可选)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 10/10 | |
第三周 | 200/200 | 2/3 | 10/20 | |
第四周 | 100/300 | 1/4 | 10/30 | |
第五周 | 200/500 | 3/7 | 10/40 | |
第六周 | 500/1000 | 2/9 | 30/70 | |
第七周 | 500/1500 | 2/11 | 15/85 |
-
计划学习时间:15小时
-
实际学习时间:15小时
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)