教材内容概述
一个处理器支持的指令和指令的字节级编码称为它的“指令集体系结构”——(ISA)。
与IA32相比,Y86指令集的数据类型、指令和寻址方式都要少一些,它的字节级编码也比较简单。
“冒险”指一条指令的位置或操作数依赖于其他仍在流水线中的指令。
4.1 Y86指令集体系结构
4.1.1 程序员可见状态
Y86程序中的每条指令都会读取或修改处理器状态的某些部分,这称为“程序员可见状态”。
Y86的处理器状态类似于IA32,有8个程序寄存器:%eax,%ecx,%edx,%ebx,%esi,%edi,%esp,%ebp,每个寄存器存储一个字
%esp被入栈,出栈,调用和返回指令作为栈指针。有三个一位的条件码:ZF,SF,OF
Y86程序用虚拟地址来引用存储器位置;硬件和操作系统软件联合起来将虚拟地址翻译为物理地址
4.1.2 Y86指令
Y86指令集基本上是IS32指令集的一个子集
有四个整数操作指令(addl,subl,andl,xorl);七个跳转指令(jmp,jle,jl,je,jne,jge,jg);六个条件传送指令(cmovle,cmovl,cmove,cmovne,cmovne,cmovge,cmovg);call(返回地址入栈,跳到目的地址);pushl、popl(入栈,出栈);halt(停止指令执行)
4.1.3 指令编码
每条指令的第一个字节表示指令的类型,高四位是代码部分,低四位是功能部分
程序寄存器存在CPU中的一个寄存器文件中。它是一个小的随机访问存储器
寄存器标识符
指令集的一个重要性质就是字节编码必须要有唯一的解释
4.1.4 Y86异常
Y86状态码
![]()
4.1.5 Y86程序
以“·”开头的词是汇编器命令
·pos0告诉汇编器应该从地址0处开始产生代码
指令集模拟器
4.1.6 某些较特殊的Y86指令
pushl会把栈指针减四,并将一个寄存器值写入存储器中
4.2 逻辑设计和硬件控制语言HCL
4.2.1 逻辑门
布尔函数AND——&&,OR——||,NOT——!
4.2.2 组合电路与HCL布尔表达式
组合电路:1.多个逻辑门的输出不可连接在一起;2.组合电路必须五环
多路复用器:根据输入控制信号的值,从一组不同的数据信号中选出一个。
4.2.3 字级的组合电路和HCL整数表达式
多路复用函数使用情况表达式描述的,通用格式为:
[
select.1 :expr.1
select.2 :expr.2
……
select.k :expr.k
](select.代表布尔表达式,expr.代表整数表达式)
算数/逻辑单元(ALU)是一种很重要的组合电路
4.2.4 集合关系
通用格式:iexpr in {iexpr1,iexpr2,...,iexprk}
4.2.5 存储器和时钟
时钟存储器(寄存器)存储单个位或数字
随机访问存储器(存储器)存储多个字
寄存器文件有两个读端口(A与B)以及一个写端口(W)
4.3 Y86的顺序实现
取指:从存储器读取指令字节,地址为程序计数器的值
译码:从寄存器文件读入最多两个操作数
执行:就是执行
访存:将数据写入存储器或从存储器读出数据
写回:最多写两个结果到寄存器文件
更新PC:将PC设置成下一条指令的地址
关于实验楼的问题
今天我原本想要完成实验楼上所说的“下载Y86模拟器”,可是超链接的网址无法打开,而群里我也没有找到相应的网站,希望老师看到后能够回复一个解决方法