20145210《信息安全系统设计基础》第06周学习总结

20145210《信息安全系统设计基础》第06周学习总结

教材内容总结

1.程序员可见状态
•Y86程序中的每条指令都会读取或修改处理器状态的某些部分,称为程序员可见状态。其中包括:
•8个程序寄存器:%eax,%ecx,%edx,%ebx,%esi,%edi,%esp和%ebp。
•条件码:ZF(零)、SF(符号)、OF(有符号溢出)
•程序计数器(PC):存放当前正在执行的指令的地址
•存储器:很大的字节数组,保存着程序和数据。Y86系统用虚拟地址来引用存储器的位置,硬件和操作系统软件联合起来将虚拟地址翻译成实际或者物理地址。
•状态码(stat):表明程序执行的总体状态。
•Y86指令
•movl:irmovl、rrmovl、mrmovl、rmmovl,分别显式地指明源和目的地的格式。第一个字母表明源的类型,i(立即数)、r(寄存器)或m(存储器 ),第二个字母代表目的,可以是r或者m。
•整数操作指令OPl:addl、subl、andl和xorl。只对寄存器数据进行操作,同时还设置条件码。
•跳转指令jXX:jmp、jle、jl、je、jne、jge、jg,根据分支指令的类型和条件码的设置来选择分支。
•条件传送指令cmovXX:cmovle、cmovl、cmove、cmovne、cmovge和comvg,与寄存器-寄存器传送指令rrmovl一样,但只有当条件码满足所需要的约束时才会更新目的寄存器的值。
•call指令将返回地址入栈,然后跳转到目的地址。ret指令从这样的过程调用中返回。
•pushl和popl:入栈和出栈。
•halt:停止指令的执行。

2.CPU硬件
大多数现代电路设计都是用信号线上的高电压和低电压来表示不同的位值。
要实现一个数字系统需要三个主要的组成部分:
•计算对位进行操作的函数的组合逻辑(ALU)
•存储位的存储器元素(寄存器)
•控制存储器元素更新的时钟信号

3.逻辑门
逻辑门是数字电路的基本计算元素,它们产生的输出,等于它们输入位值的某个布尔函数。
将很多逻辑门组合成一个网,就能构建计算块,称为组合电路。

4.组合电路和HCL布尔表达式
组合电路:将很多的逻辑门组合成一个网,能构建计算块。
构建这些网有2条限制:
•两个或多个逻辑门的输出不能连接在一起
•这个网必须是无环的。

5.存储器和时钟
时钟是一个周期性信号,决定了什么时候要把新值加载到设备中。大多数时候,寄存器都保持在稳定状态(用x表示),产生的输出等于它的当前状态。信号沿着寄存器前面的组合逻辑传播,这时,产生了一个新的寄存器输入(用y表示),但只要时钟是低电位的,寄存器的输出就仍然保持不变。当时钟变成高电位的时候,输入信号才加载到寄存器中,成为下一个状态y,直至下一个时钟的上升沿。
寄存器是作为电路不同部分中的组合逻辑之间的屏障。每当每个时钟到达上升沿时,值才会从寄存器的输入传送到输出。

6.指令编码
每条指令需要1——6个字节不等,这取决于需要哪些字段。每条指令的第一个字节表明指令的类型:高4位是代码部分(例:6为整数类操作指令),低4位是功能部分(例:1为整数类中的减法指令) 61合起来即为sub指令。
•取指:从存储器读取指令字节,地址为程序计数器(PC)的值。指令指示符字节两个四位部分,称为icode(指令代码)和ifun(指令功能)。vaIP(下一条指令的地址)=PC+已取出指令的长度。
•译码:从寄存器文件读入最多两个操作数,得到valA和/或valB。
•执行:算数逻辑单元(ALU)根据ifun的值执行指令指明的操作,计算存储器引用的有效地址,或者增加或减少栈指针。得到的值称为valE。也可根据条件码执行跳转。
•访存:将数据写入存储器,或者从存储器读出数据。读出的值为valM。
•写回:最多可以写两个结果到寄存器文件。
•更新PC:将PC设置成下一条指令的地址。

7.SEQ的时序
•SEQ的实现包括组合逻辑和两种存储器设备:时钟存储器(程序计数器和条件码寄存器),随机访问存储器(寄存器文件、指令存储器和数据存储器)。
•Y86指令集的计算原则:处理器从来不需要为了完成一条指令的执行而去读由该指令更新了的状态。

8.流水线
流水线化的一个重要特性就是增加了系统的吞吐量,也就是单位时间内服务的顾客总数,不过它也会轻微地增加延迟,也就是服务一个用户所需要的时间。流水线化是允许多条指令在CPU中,每条指令在CPU中的时间是一样的,哪怕一个周期就能执行完了,也得等剩下的阶段结束,使后面的指令被延迟了。
虽然流水线化,所有指令在CPU中待的时间都一样(且都按最耗时指令算的),但它们的时间是重叠的。假设一条指令在CPU中待6ms,那么12ms能处理7条指令,而非流水线,虽然一条指令最多执行6ms,但它们的时间是相加的,12ms可能只执行3条。12=6+2+4)

学习过程中出现的问题及解决过程

1.安装的时候显示下载失败,暂时不能解析域名

发现电脑没有连接到网络,联网后下载成功

2.无法解压 sim.tar

发现没有在当前目录下进行解压,把文件放到当前目录进行解压,解压成功

3.P241页练习4-6:不明白为什么把%edx和%eax做比较就可以得出压入的是%esp的旧值的结论?
解决:代码先把%ebp和%esp的值压入栈,根据栈后进先出的原则,出栈时后压入的%esp的值被存到%edx寄存器当中,在将%esp压入栈之前代码将%esp的值存到%eax中,将%esp的原值(%eax)和压入之后的值(%edx)进行比较,即可得到压入的是%esp的旧值

代码托管

本周代码连接

posted on 2016-10-23 23:02  20145210姚思羽  阅读(156)  评论(1编辑  收藏  举报

导航