标签:
第四章 处理器体系结构
4.1 Y86指令集体系结构
4.1.1 程序员可见的状态:Y86程序中的每条指令都会读取或修改处理器状态的某些部分。
8个程序寄存器:%eax、%ebx、%ecx、%edx、%esi、%edi、%esp、%ebp。存储一个字。
存储器:可以理解为很大的字节数组,保存着程序和数据。Y86用虚拟地址来引用存储器位置。
物理地址:硬件和操作系统软件联合将虚拟地址翻译成实际,指明数据实际保存在存储器的那个位置。
4.1.2 Y86指令:基本上是IA32指令集的一个子集。
Y86指令的更多细节
• mov指令分四个不同的指令,源可以是立即数i、寄存器r、存储器m。目的可以是寄存器r、存储器m。
存储器传送指令中的存储器引用方式是简单的基地址和偏移量形式。没有mmmovl和immovl。
• 有4个整数操作指令,只对寄存器数据进行操作。
• 7个跳转指令。根据分支指令类型和条件码的设置来选择分支。
• 6个条件传送指令。
• call指令返回地址入栈,然后跳转到目的地址。ret指令从这样的调用过程中返回
• pushl和popl实现入栈和出栈
• halt停止指令的执行。
4.1.3 指令编码:寄存器标示符,寄存器指示符字节,4字节常数字,相反。
确定字节编码的方法:
• 汇编码表示的第一个字节前端的字节编码
• 寄存器指示符字节
• 4字节常数反序
重点掌握指令序列和字节编码的转换。
4.1.4 Y86异常:异常处理程序
4.1.5 Y86程序
Y86和IA32的区别在于Y85可能需要多条指令来执行一条IA32指令所完成的功能。
汇编器命令:以“.”开头的词。告诉汇编器调整地址
4.1.6 Y86特别注意
pushl指令会把栈指针减4并将一个寄存器值写入存储器中。
4.2 逻辑设计和硬件控制语言HCL
4.2.1 逻辑门:AND &&. OR ||. NOT !
4.2.2 组合电路和HCL布尔表达式
限制:多个逻辑门的输出不能连在一起;网必须是无的,即不能形成回路。
区别:电路的输入变化会影响输出的值;C的表达式参数允许是任意整数,逻辑门只对位值0/1操作。
4.2.3 字级的组合电路和HCL整数表达式
字级计算的组合电路根据输入字的各个位,用逻辑门计算输出字的各个位。
不用指定字的大小。可以声明位数。允许比较字是否相等。
情况表达式:
4.2.4 集合关系
判断集合关系的通用格式:
4.2.5 存储器和时钟
• 时钟寄存器:储存单个位或字
• 随机访问存储器:储存多个字,用地址选择该读写哪个字
4.3 Y86的顺序实现
4.3.1 将处理组织成阶段
各个阶段(内)执行操作
取指:从存储器中读取操作,地址为程序计数器的值→译码→执行→访存→写回→更新PC
4.3.2 SED硬件结构
4.3.3 SED的时序
4.3.4 SED阶段的实现
1、取指阶段:包括指令存储硬件单元,第一个字节为指令字节
2、译码和写回阶段:
寄存器文件有四个端口,每个端口都有地址链接和数据链接
3、执行阶段
4、访存阶段
5、更新PC阶段
作业:
在上一个make时无法进入目录,导致后面没法编译
标签:
原文地址:http://www.cnblogs.com/javajy/p/4888817.html