02.RISC-V速查表
1. 算术运算指令
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
add |
add rd, rs1, rs2 |
加法(rd = rs1 + rs2) | add t0, t1, t2 |
sub |
sub rd, rs1, rs2 |
减法(rd = rs1 - rs2) | sub t0, t1, t2 |
addi |
addi rd, rs1, imm |
加立即数(rd = rs1 + imm) | addi t0, t1, 10 |
mul |
mul rd, rs1, rs2 |
乘法(rd = rs1 * rs2) | mul t0, t1, t2 |
div |
div rd, rs1, rs2 |
除法(rd = rs1 / rs2) | div t0, t1, t2 |
rem |
rem rd, rs1, rs2 |
取余(rd = rs1 % rs2) | rem t0, t1, t2 |
2. 逻辑运算指令
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
and |
and rd, rs1, rs2 |
按位与 | and t0, t1, t2 |
or |
or rd, rs1, rs2 |
按位或 | or t0, t1, t2 |
xor |
xor rd, rs1, rs2 |
按位异或 | xor t0, t1, t2 |
andi |
andi rd, rs1, imm |
与立即数 | andi t0, t1, 0xFF |
ori |
ori rd, rs1, imm |
或立即数 | ori t0, t1, 0x0F |
xori |
xori rd, rs1, imm |
异或立即数 | xori t0, t1, 0x55 |
3. 移位指令
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
sll |
sll rd, rs1, rs2 |
逻辑左移 | sll t0, t1, t2 |
srl |
srl rd, rs1, rs2 |
逻辑右移 | srl t0, t1, t2 |
sra |
sra rd, rs1, rs2 |
算术右移(保留符号位) | sra t0, t1, t2 |
slli |
slli rd, rs1, imm |
立即数逻辑左移 | slli t0, t1, 3 |
srli |
srli rd, rs1, imm |
立即数逻辑右移 | srli t0, t1, 2 |
srai |
srai rd, rs1, imm |
立即数算术右移 | srai t0, t1, 4 |
4. 内存访问指令(Load/Store)
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
lw |
lw rd, offset(rs1) |
从内存加载字(32位) | lw t0, 4(sp) |
lh |
lh rd, offset(rs1) |
加载半字(16位,符号扩展) | lh t0, 2(s0) |
lb |
lb rd, offset(rs1) |
加载字节(8位,符号扩展) | lb t0, 1(a0) |
sw |
sw rs2, offset(rs1) |
存储字(32位) | sw t0, 8(sp) |
sh |
sh rs2, offset(rs1) |
存储半字(16位) | sh t0, 2(s1) |
sb |
sb rs2, offset(rs1) |
存储字节(8位) | sb t0, 3(a1) |
5. 分支与跳转指令
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
beq |
beq rs1, rs2, label |
相等时跳转 | beq t0, t1, loop |
bne |
bne rs1, rs2, label |
不等时跳转 | bne t0, t1, exit |
blt |
blt rs1, rs2, label |
小于时跳转 | blt t0, t1, loop |
bge |
bge rs1, rs2, label |
大于等于时跳转 | bge t0, t1, exit |
jal |
jal rd, label |
跳转并链接(用于函数调用) | jal ra, factorial |
jalr |
jalr rd, offset(rs1) |
间接跳转(用于返回) | jalr ra, 0(ra) |
6. 系统调用与环境指令
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
ecall |
ecall |
触发系统调用 | ecall |
ebreak |
ebreak |
触发调试断点 | ebreak |
fence |
fence |
内存屏障(保证指令顺序) | fence |
7. 伪指令(Pseudo-instructions)
| 指令 | 实际指令 | 功能 | 示例 |
|---|---|---|---|
mv |
addi rd, rs, 0 |
寄存器复制 | mv t0, t1 |
li |
addi rd, x0, imm |
加载立即数 | li t0, 42 |
nop |
addi x0, x0, 0 |
空操作 | nop |
ret |
jalr x0, 0(ra) |
函数返回 | ret |
j |
jal x0, label |
无条件跳转 | j loop |
