百科问答小站 logo
百科问答小站 font logo



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

  

user avatar   bei-ji-85 网友的相关建议: 
      

这个问题一般介绍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上也有。




  

相关话题

  芯片交付时间超过 20 周,供应短缺没有缓解迹象,还有哪些信息值得关注? 
  汇编语言转换成机器语言,具体在机器这个层面是如何实现的? 
  RISC-V RV32I中零寄存器有什么用? 
  向下扩展的段,为什么偏移量是从limit+1 ~ 0xFFFF? 
  是否有文档支持Java『volatile int i 在执行 i++ 的底层是非原子性的三步』的说法? 
  如何评价2019年度芯片设计公司澜起科技 平均年度薪酬达121万? 
  碳基芯片的制造为什么不需要光刻工艺? 
  如何看待爆料华为启动「塔山计划」自建 45nm 芯片生产线,帮助国内芯片产业链解决技术问题?是否属实? 
  7纳米的国产芯片也是通过光刻机生产吗?国内有如此尖端的光刻工艺了吗?是不是要台积电或者三星代工? 
  可以预先将 X86 平台机器码译码到 micro operations 来解决 X86 译码效率低吗? 

前一个讨论
8086/8088寄存器BX,书上写是基址寄存器,这个基址指的是什么,程序里用BX一般都是放偏移地址?
下一个讨论
为什么连离我很远很远的服务器会很慢?





© 2025-02-07 - tinynew.org. All Rights Reserved.
© 2025-02-07 - tinynew.org. 保留所有权利