RISC 架构 指令集及寄存器对比 ARM32 ARM64 RV32 RV64

  • 指令集

RISC 架构 指令集及寄存器对比 ARM32 ARM64 RV32 RV64_第1张图片

  • 寄存器

RISC 架构 指令集及寄存器对比 ARM32 ARM64 RV32 RV64_第2张图片

ARM64与ARM32

aarch64的指令集是 A64

A64移除了批量加载寄存器指令 LDM/STM, PUSH/POP, 使用STP/LDP 一对加载寄存器指令代替;
A64没有提供访问CPSR的单一寄存器,但是提供访问PSTATE的状态域寄存器;
A64没有协处理器的概念,没有协处理器指令MCR,MRC;
A64相比A32少了很多条件执行指令,只有条件跳转和少数数据处理这类指令才有条件执行.
	b.<cond>
在Arm-v8架构中,直接访问PC的方式也同x86一样,被禁止了

ARM64与RV

RISCV也有一个恒为0的寄存器为x0 ,ARM64中为 ZR寄存器
RISCV 和 ARM64 一样,不能直接访问(读写)PC

没有mv,bic,neg,无条件跳转label指令,
	而是采用伪指令

没有位set,位clr指令
	而是用其他指令替代
	Bitwise operations supported are OR (bit set), AND (bit clear), and XOR (bit toggle)

没有多字节load/store 指令

只有一个sp寄存器(X2)
	arm32 为一个特权级准备了多个bank,arm64为每一个特权级准备了一个

riscv 指令没有 cond 和S 后缀
	ARM32的指令模板 为 MNEMONIC{S}{cond} {Rd}, Operand1, Operand2
	ARM64 的指令模板中没有 {S} {cond} ,但是将某些指令加上{S} {cond} 直接做成了指令
		例如 ADCS (在arm32中没有ADCS,只有ADC,可以加后缀生成ADCS)
		例如 b.eq (在arm32中没有b.eq,只有b,可以加后缀生成beq)
		但是可见
	riscv 没有后缀的概念 
		根本不存在 S(不管是后缀还是直接带有S的指令)
			怎么处理进位
				x10是低32位相加的结果,如果结果小于一个加数,那么表示是有进位的,否则就没有。因此通过sltu指令,就可以得到低32位的进位结果。
		没有{cond} , 但存在很多跳转指令带了 类似条件的东西,例如 beq,但是这个条件和ARM64/32 完全不同
			riscv 的 beq 中的 eq 不是后缀 ,beq是个指令
			且 beq 不根据之前指令的状态来运行,而是判断当前操作数中的 大小,来决定走不走分支
		

		

你可能感兴趣的:(杂七杂八总览,指令集)