深入理解计算机系统(第二版)笔记
- 第四章 处理器体系结构
- 4.1 Y86指令集体系结构
- 4.1.1 程序员可见的状态
- 4.1.2 Y86指令
- 4.1.3 指令编码
- 4.1.4 Y86异常
- 4.1.5 Y86程序
- 4.1.6 一些Y86指令的详情
- 4.2 逻辑设计和硬件控制语言HCL
- 4.2.1 逻辑门
- 4.2.2 组合电路和HCL布尔表达式
- 4.2.3 字级的组合电路和HCL整数表达式
- 4.2.4 集合关系
- 4.2.5存储器和时钟
- 4.3 Y86的顺序实现
- 4.3.1 将处理组织成阶段
- 4.3.2 SEQ硬件结构
- 4.3.3 SEQ的时序
- 4.3.4 SEQ阶段的实现
复习《深入理解计算机系统(第二版)》顺道将一些知识点和笔记进行整理。
第四章 处理器体系结构·指令集体系结构(ISA,Instruction-Set Architecture):一个处理器支持的指令和指令的字节级编码。
(不同处理器“家族”都有不同的ISA。一个程序编译成在一种机器上运行,就不能在另一种机器上运行。)
·硬件控制语言(HCL,Hardware Control Language):一种描述硬件系统控制部分的简单语言。
4.1 Y86指令集体系结构4.1.1 程序员可见的状态("程序员"既可以是用汇编代码写程序的人,也可以是产生机器代码的汇编器。)
- Y86处理器有8个寄存器:
寄存器%esp被入栈、出栈、调用和返回指令作为栈指针。其他情况中,寄存器没有固定的含义或固定值。
处理器的每个程序寄存器存储一个字。
- 有三个一位的条件码:ZF、SF和OF。
用来保存最近的算术或逻辑指令所造成的影响的有关信息。
- 程序计数器(PC):存放当前正在执行指令的地址。
- 存储器DMEM:保存着程序和数据。
(Y86程序用虚拟地址来引用存储器位置)
- 状态码Stat:表明程序执行的总体状态。
(它会指示是正常运行,还是出现了某种异常)
4.1.2 Y86指令Y86指令集:(左边是指令的汇编码表示,右边是字节编码)
注意:
- 传送指令不允许从一个存储器地址直接传送到另一个存储器地址。
- 传送指令不允许将立即数传送到存储器。
- 4个整数操作指令只对寄存器数据进行操作,还会设置3个条件码ZF、SF和OF(零、符号和溢出)。
- 7个跳转指令一句分支指令的类型和条件码的设置来选择分支 。
- 6个条件传送指令只有当条件码满足所需要的约束时,才会更新目的寄存器的值。
- call指令将返回地址入栈,如何跳到目的地址。
- ret指令从过程调用中返回。
- pushl指令实现入栈。
- popl指令实现出栈。
- halt指令停止指令的执行。
4.1.3 指令编码- 每条指令的第一个字节表明指令的类型。
这个字节分为两部分,每部分4位:高4位时代码(code)部分,低4位是功能(function)部分。
- 整数操作、条件传送和分支指令的具体编码:
- 8个程序寄存器中每个都有相应的0~7的寄存器标识符(register ID)。
- 程序寄存器存在CPU中的一个寄存器文件中,这个寄存器文件就是一个小的、以寄存器ID作为地址的随机访问存储器。
- 当需要指明不应访问任何寄存器时,就用ID值0xF来表示。
- 有的指令可能有附加的寄存器指示符字节(register specifier byte)
5.有些指令需要一个附加的4字节常数字(constant word)。
所有整数采用小端法(little-endian)编码,当指令按照反汇编格式书写时,这些字节就以相反的顺序出现。
irmovl $15,