一、寻址方式
二、指令集结构的功能设计
对于指令集的基本要求是:完整性、规整性、高效性和兼容性。
2.1 CISC指令集结构的功能设计
1.面向目标程序增强指令功能
1)增强运算型指令的功能
2)增强数据传送指令的功能
3)增强程序控制指令的功能
2.面向高级语言的优化实现来改进指令集
1)增强对高级语言和编译器的支持
2)高级语言机器
3.面向操作系统的优化实现改进指令集
1)处理机工作状态和访问方式的切换
2)进程的管理和切换
3)存储管理和信息保护
4)进程的同步与互斥,信号灯的管理
2.2 RISC指令集结构的功能设计
设计RISC机器一般应当遵守以下规则
1)指令条数少而简单。确定指令集时,只选取使用频率很高的指令,在此基础上补充一些最有用的指令。
2)采用简单而又统一的指令格式,并减少寻址方式。指令字长都为32位或64位。
3)指令的执行在单个机器周期内完成。
4)只有load和store指令才能访问存储器,其他指令的操作都是在寄存器之间进行。即采用load-store结构。
5)大多数指令都采用硬逻辑来实现。
6)强化优化编译器的作用,为高级语言程序生成优化的代码。
7)充分利用流水技术来提高性能。
三、MIPS指令集结构
3.1 MIPS的寄存器
MIPS64有32个64位通用寄存器(GPR):R0,R1,...,R31,它们有时被称为整数寄存器,R0的值永远是0.
32个64位浮点数寄存器(FPR):F1,F2,...,F31.
3.2 MIPS的数据表示
MIPS的数据表示有:
(1)整数:字节(8位)、半字(16位)、字(32位)、双字(64位)
(2)浮点数:单精度浮点数(32位)、双精度浮点数(64位)
3.3 MIPS的数据寻址方式
MIPS的数据寻址只有立即数寻址和偏移量寻址。
3.4 MIPS的指令格式
(1)I类指令
这类指令包括所有的load和store指令、立即数指令、分支指令、寄存器跳转指令、寄存器链接跳转指令。
1)load指令:访问有效地址为Regs[rs] + immediate,从存储器取来的数据放入寄存器rt。
2)store指令:访问有效地址为Regs[rs] + immediate,要存入存储器的数据放在寄存器rt中。
3)立即数指令:Regs[rt] <- Regs[rs] op immediate。
4)分支指令:转移目标地址为Regs[rs] + immediate,rt无用。
5)寄存器跳转、寄存器跳转并链接:转移目标地址为Regs[rs]。
(2)R类指令
包括ALU指令、专用寄存器读/写指令、move指令等
ALU指令:Regs[rd] <- Regs[rs] func Regs[rt] (func为具体的运算操作编码)
(3)J类指令
包括跳转指令、跳转并链接指令、自陷指令、异常返回指令。在这类指令中,指令字的低26位是偏移量,它与PC值相加形成跳转的地址。
3.5 MIPS的操作
MIPS指令可以分为4大类:load和store、ALU操作、分支与跳转、浮点操作。
3.6 MIPS的控制指令
(1)J name : 跳转
(2)JAL name : 跳转并链接
(3)JALR R3 : 寄存器跳转并链接
(4)JR R5 : 寄存器跳转
(5)BEQZ R4,name : 等于零时分支
(6)BNE R3,R4,name : 不相等时分支
(7)MOVZ R1,R2,R3 : 等于零时移动