CPU指令与堆栈操作及定点设计解析
1. JALR与RET指令
1.1 JALR指令
JALR(Jump-And-Link Register)指令的操作分为两步。第一步,将 (PC + 2)
的值存储到寄存器 R31
中;第二步,将寄存器 RS
的内容加载到程序计数器 PC
中。其指令的字段格式如下:
| 31 | 26 25 | 21 20 | 0 |
|----|-------|-------|—|
| JALR | RS | Not Used | |
指令操作可表示为:
(PC + 2) → Reg[R31] followed by Reg[RS] → PC
1.2 RET指令
RET(Return)指令与JAL或JALR指令配合使用。它会从寄存器 R31
中取出之前存储的程序地址,并用该地址替换当前的 PC
值,从而使程序返回到原来的位置。其指令的字段格式如下:
| 31 | 26 25 | 0 |
|----|-------|—|
| RET | Not Used | |
指令操作可表示为:
Reg[R31] → PC