20135205信息安全系统设计基础第六周学习总结

第四章 处理器体系结构

----------------------------------------------------------------------------------------------------

一、Y86指令集体系结构

Y86类似于IA32。 有8个程序寄存器:%eax、%ecx、%edx、%ebx、%esi、%edi、%esp和%ebp。

存储器:从概念上是一个很大的字节数组。 3个一位的条件码:ZF,SF,OF。

程序状态的最后一个部分是状态码START,它表明程序执行的总体状态。它会指示是正常运行,还是出现了某种异常,例如在一条指令试图去读取非法的存储器地址时。

Y86指令基本上是IA32指令集的一个子集。它只包括四字节整数操作,寻址方式比较少,操作也比较少。

二、Y86指令

Call:指令将返回地址入栈,然后跳到目的地址。

Ret:指令从这样的过程调用中返回。

Pushl和popl:指令实现了入栈和出栈。

Halt:指令停止指令的执行。

4个整数指令:addl、subl、andl和xorl

7个跳转指令:jmp,jle,jl,je,jne,jge和jg

6个条件传送指令:cmovel、cmovl、cmove、cmovne、cmovge和cmovg

三、指令编码

每条指令需要1-6个字节不等,这取决于需要哪些字段。 每条指令的第一个字节表明指令的类型。 这个字节分为两部分,每部分4位:高4位是代码部分,低4位是功能部分。

有的指令只有一个字节长,而有的需要操作数的指令编码就更长一些。首先,可能有附加的寄存器指示符字节,指定一个或两个寄存器。 有些指令需要一个附加的4字节常数字。

四、Y86异常

对于Y86,当遇到这些异常的时候,我们就简单地让处理器停止执行指令。在更完整的设计中,处理器通常会调用一个异常处理器。 异常处理程序可以被配置成不同的结果,放弃程序或者调用一个用户自定义的信号处理程序。

五、逻辑门 AND,OR和NOT HCL:逻辑设计和硬件控制语言

六、Y86 的顺序实现

取指:取指阶段从存储器中读取指令字节,地址为程序计数器(PC)的值。从指令中抽取出指令符字节的两个四位部分,称为icode(指令代码)和ifun(指令功能)。

译码:译码阶段从寄存器文件读入最多两个操作数,得到值valA和/或valB。

执行:在执行阶段,算术/逻辑单元要么执行指令指明的操作(根据ifun),计算存储器引用的有效地址,要么增加或减少栈指针。得到的值我们称为valE。

访存:访存阶段可以将数据写入存储器,或者从存储器读出数据,读出的值为valM 写回:写回阶段最多可以写两个结果到寄存器文件 更新PC:将PC设置成下一条指令的地址

参考:教科书

posted @ 2015-10-19 22:04  赤炎亓  阅读(226)  评论(4编辑  收藏  举报