RISC-V 的 程序计数器 (PC) 和 通用寄存器 (X0)
本文比较短!
主要讲 RISC-V 的 PC 与 X0 为什么要这么设计,对比 arm 的优势是什么。
同时解答上一篇文章自己的疑问:为什么通用寄存器 X0 的值为常数 0 。
RISC-V 程序计数器 (PC)
在 ARM 的设计中,PC 是作为一个通用寄存器而存在的,这意味着任何能改变寄存器值的指令都有可能导致程序执行分支跳转。
这样带来了一个坏处,那就是对分支跳转的预测变复杂了。
RISC-V 将 PC 单独拿出来作为一个特殊的寄存器来对待,这使得能够改变 PC 寄存器的指令变少,分支跳转的预测准确性便于提高。
RISC-V 通用寄存器 X0
ARM 有很多特殊指令,如 nop;beqz;bnez 等,
这些原生指令在 RISC-V 中是被省略的,之所以可以被省略是因为 RISC-V 引入了一个特殊的通用寄存器 X0 。
RISC-V 通用寄存器 X0 的的特性就是:读出来的值永远为 0 ,写入的值将会被丢弃。
有了这个 X0 后,能省去很多特殊指令。如下表 RISC-V 很多伪指令的实现都是通过 X0 通用寄存器与常用的普通指令相结合而实现的。
总结
RISC-V 的设计理念就是尽可能简化设计,能省则省。