查看: 1078|回复: 0
收起左侧

RISC-V RV32I中零寄存器有什么用?

[复制链接]

  离线 

  • TA的每日心情
    拍拍
    2022-6-27 11:09
  • 签到天数: 25 天

    [LV.4]

    发表于 2020-9-22 16:48:37 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    问:
    RISC-V rv32i单独设立了一个寄存器x0专门存放常数0,这个零寄存器到底有什么用?

    某人答:

    这个问题一般介绍RISC-V的手册都会讲吧?

    汇编代码中,经常会遇到大量的跟0比较/赋值成0的场景,所以设置一个寄存器,永远都是0,这样就不需要每次给一个寄存器赋值成0再跟另外一个寄存器比较了,效率上会高一些(精简指令集代码的最大问题就是操作立即数很繁琐)。

    并且,从CPU设计的角度上看,使用寄存器比使用立即数更容易做流水线优化。立即数在CPU内部也是需要占据一个临时的位置的,而如果0是放在寄存器里,那么就可以把这个位置留给后面的指令,也省掉了装载立即数的过程。

    x0的特点:

    1. 永远都是0,可以拿来做一些汇编层面上的优化,比如:
       > 比如取反等指令可以用x0寄存器减去原值;
       > move指令可以是 ADDI x28, x0, x29
       ....
       花样可以很多

    2. 写进去的东西会被丢弃,这一条也很重要,比如要做NOP操作,就可以ADDI x0, x0, 0
    zero寄存器不是什么新鲜的东西,MIPS上也有。










    上一篇:RISC-V unprivileged ISA 简析
    下一篇:AI芯片浮出新玩家OURS,来者何人?新晋图灵奖得主华人弟子
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条



    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-3-29 19:40 , Processed in 0.531389 second(s), 45 queries .

    快速回复 返回顶部 返回列表