我知道当你在SPARC CPU(和MIPS)中读取%r0时,总是返回0,但我想知道为什么?
这背后有什么设计决定?为什么?
在MIPS ISA中,有一个零寄存器($r0),其值始终为零。这使处理器能够:
0正是在这种所述源,这提高了CPU的速度。它如何提高性能?为什么不是所有的ISA都采用该零寄存器的原因是什么?
$ r0不是通用的。它硬连线为0。无论您对该寄存器执行什么操作,它的值始终为0。您可能想知道为什么MIPS中需要这样的寄存器。
MIPS的设计人员使用了基准测试(用于确定CPU性能的程序),这使他们确信,将寄存器硬连线到0可以提高CPU的性能(速度),而不是没有。并非所有人都认为必须将寄存器硬连接为0是必要的,因此并非所有ISA的寄存器都为零。
最近开始搞乱AArch64程序集,我注意到它有一个严格为零的指定寄存器,而(大多数)其他架构你只是xor var, var.
我正在阅读的网站zr将其解释为零的参考点,这听起来很像我在DC电子设备中定义地面的方式.并且因为ARM被业余爱好者使用,所以在代码中将电路中的接地归零对我来说是有意义的.
我敢肯定它比这复杂得多,但这是一个安全的类比吗?并且使用此寄存器与其他获得"0"的方法相比会产生不同的结果吗?