- MIPS跳转指令寻址采用最简单的寻址方式,它们使用J型指令格式。
- 分支指令除了规定分支地址之外还必须规定两个操作数。
- 因为它只保留了16位用于指定分支地址
- 所以如果让程序地址使用该分支地址,则意味着任何程序都不能大于2^16
- 一个可选的办法是指定一个总是加到分支地址上的寄存器
- 这样分支指令的地址可按:程序计步器=寄存器+分支地址的方式计算
- 这样允许程序的大小达到2^32
- 其中,寄存器的使用取决于分支条件是如何使用的
- 而这种寻址方式被称为PC相对寻址
- MIPS对所有条件分支使用PC相对寻址,因为这些指令跳转目标一般都比较接近其分支地址
- 因为所有MIPS指令都是4字节长,所以PC相对寻址时所加的地址被设置为字地址
- 另外,MIPS指令使用字节寻址,所以相邻字的地址相差4
- //一个基本MIPS实现
- //实现方法概述:
- 这些指令实现的过程大致相同,而与指令的类型无关。
- 前两步都是:
- 程序计步器指向指令所在的储存单元并取出指令
- 通过指令字段内容选择读取一个或两个寄存器。取字命令只需读取一个寄存器,其他大多数指令要求读取两个寄存器
- 两步之后的步骤取决于具体类型,但是对于三种核心的指令类型来说,其动作大致相同 ,//比如除跳转指令外的所有指令在读取寄存器之后,都要使用算术逻辑单元
- 某个单元的数据可能来自于两个不同的单元,必须用一个逻辑单元来从不同的数据来源中选择一个送给目标单元,这个过程通常是由一个叫多选器的逻辑单元完成的
- 许多单元的控制依赖当前执行指令的类型,所以需要有控制信号