我们通过自己设计一个处理器体系结构来学习计算机处理器的体系结构是怎么样的。我们的处理器体系结构称之为 Y86.
Y86 指令集体体系结构
处理器的主要作用就是执行指令,那么设计处理器的第一步就是要定义或者兼容指令集体系结构(Instruction Set Architecture,ISA). 定义一个指令集体系结构,包括定义各种状态元素,指令集及编码,一组编程规范和异常事件处理.
Y86 重要组件
- 程序寄存器(Program registers): %eax, %ecx, %edx, %ebx, %esi,%edi, %esp和%ebp.都是32位的.
- 条件码(Condition codes): ZF(零标志), SF(符号标志), OF(溢出标志).用来保存最近的算术或逻辑指令造成的影响.
- 程序计数器(PC):存放当前正在执行的地址.
- 存储器(Memory):在程序员看来, Y86程序使用虚拟存储器.
- 状态码(State):表明程序执行的总体状态,它指示正常运行,或者发生某种异常.
Y86指令
指令的细节,看下面的说明
指令集编码
Y86指令1-6个字节不等.第一个字节表明指令的类型,其中高4位是代码(code)部分,低4位是功能码(function). Y86的代码值0~0xB.
图3给出了整数操作,条件传送和条件传送指令的具体编码(第一个字节),其他指令的功能码是0(可以功能扩展).
寄存器编码
为了方便,每个程序寄存器使用4位编码,其中F表示无寄存器.
状态码和异常
————
状态码(Stat)是程序员可见的状态之一,用来描述程序执行的总体状态.详见图5.
一个适用的处理器,当处理器遇到异常,会调用一个异常处理程序.在Y86,当遇到异常时,直接让处理器停止执行指令.
参考文章:
https://blog.csdn.net/dennis_fan/article/details/8226311