指令集学习
主要这个是学习了本书第三章的一些心得
指令集是处理器体系结构设计的重点部分之一。
RISC-V的每条指令宽度为32位,包括RV32指令集以及RV64指令集。指令格式大概分为6类R I S B U J类型
R:寄存器与寄存器算术指令
I:寄存器与立即数算术指令或加载指令
S:储存指令
B:条件跳转指令
U:长立即数操作指令
J:无条件跳转指令
下面我来做一下简单比较与ARM的指令的表格吧
|
RISC |
ARM |
加载 |
Lb Lbu Lh Lhu Lw Lwu Ld(64位) lui(64位) |
LDRB LDRBS LDRH LDRHSH LDR LDM LDRD(64位) |
存储 |
Sb Sh Sw Sd |
STRB STRH STR STRD |
移位操作
|
Sll Slli Slliw Sllw Sra Srai Sraiw Sraw Srl Srli Srliw srlw |
LSL
ASR
ROR |
位操作指令 |
And Adni Or Ori Xor Xori not |
AND
ORR
EOR
BIC ORN |
算术指令 |
Add Addi Addw Addiw Sub Subw (RV64I指令集只提供基础的算术指令,即加法和减法指令) |
ADD
ADC
SUB SBC SUBW RSB MUL UDIV SDIV |
比较指令 |
Slt Sltu Slti sltiu |
CMP
CMN |
无条件跳转指令 |
Jal jalr |
B BX BL BLX |
条件跳转 |
Beq Bne Blt Bltu Bgt Bgtu Bge Bgeu
|
B<cond><label> B<cond>.W<label> |
RISC-V基本指令就这么多了吗?
ARM的还有很多没列出来呢,例如位域处理指令、数据转换运算指令、休眠模式相关指令等等。
而且RISC-V没有大家最常见到的MOV指令了,后面准备搭载板子测试一下