第四章 处理器体系结构
第一节 Y86指令集体系结构
一、程序员可见的状态
二、Y86指令
1.movl指令
(1)源操作数
(2)目的操作数
2.四个整数操作指令
3.七个跳转指令——分支控制
4.六个条件传送指令
5.call和ret
call指令将返回地址入栈,然后跳到目的地址,ret指令从这样的过程调用中返回。
6.pushl和popl
实现入栈和出栈
7.halt指令
halt指令停止指令的执行,执行此指令会导致处理器停止,并将状态码设置为HLT。
三、指令的字节级编码
四、Y86异常
1.状态码Stat的可能取值
Stat描述程序执行的总体状态
1. AOK 正常操作2. HLT 处理器执行halt指令3. ADR 遇到非法地址4. INS 遇到非法指令
2.出现异常时?
Y86——处理器停止运行指令。
五、Y86程序
1.Y86和IA32的区别
1.Y86有时需要两条指令来完成IA32一条指令就能完成的事2.Y86没有伸缩寻址模式
2.注意的一些:
(1)命令指明应该将代码或数据放在什么位置,以及该如何对齐
(2)以“.”开头的是汇编器命令
(3)创建Y86代码的唯一工具是汇编器,所以程序员必须执行本来通常交给编译器、链接器和运行时系统来完成的任务。
pushl在不同的x86模型之间有歧义,但是popl没有。
第二节 逻辑设计和硬件控制语言HCL
一、逻辑门
二、组合电路和HCL布尔表达式
1.构建计算块(组合电路)时的限制
2.组合逻辑电路和c语言中逻辑表达式的区别
三、字级的组合电路和HCL整数表达式
四、集合关系
判断集合关系的通用格式是:
iexpr in {iexpr1,iexpr2,...,iexprk}
iexpr等都是整数表达式。
第三节 Y86的顺序实现
SEQ处理器
一、将处理组织成阶段
(一)六个基本阶段:
- 取指
- 译码
- 执行
- 访存
- 写回
- 更新PC
(二)具体框架分为四类:
-
1.针对OPl(整数和逻辑运算),rrmovl(寄存器-寄存器传送)和irmovl(立即数-寄存器传送)
2.针对rmmovl和mrmovl
3.针对pushl和popl
4.针对跳转,call和ret
总结就是,用时钟来控制状态元素的更新,值通过组合逻辑传播。
实验
运行make指令后
查看目录下内容,可以看到只有.ys文件
用make all命令编译后
编译后查看目录下内容,可以看到已经有编译后的.yo文件,用vim进入后可以查看