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 |