相关疑难解决方法(0)

为什么SPARC或MIPS的%r0始终为0?

我知道当你在SPARC CPU(和MIPS)中读取%r0时,总是返回0,但我想知道为什么?

这背后有什么设计决定?为什么?

assembly mips cpu-architecture sparc cpu-registers

3
推荐指数
1
解决办法
1870
查看次数

零寄存器如何提高性能?

在MIPS ISA中,有一个零寄存器($r0),其值始终为零。这使处理器能够:

  1. 任何产生要丢弃结果的指令都可以将其目标指向该寄存器
  2. 成为...的来源 0

正是在这种所述,这提高了CPU的速度。它如何提高性能?为什么不是所有的ISA都采用该零寄存器的原因是什么?

$ r0不是通用的。它硬连线为0。无论您对该寄存器执行什么操作,它的值始终为0。您可能想知道为什么MIPS中需要这样的寄存器。

MIPS的设计人员使用了基准测试(用于确定CPU性能的程序),这使他们确信,将寄存器硬连线到0可以提高CPU的性能(速度),而不是没有。并非所有人都认为必须将寄存器硬连接为0是必要的,因此并非所有ISA的寄存器都为零。

mips instruction-set cpu-registers

3
推荐指数
2
解决办法
1652
查看次数

在aarch64中零归属'zr'基本上是基础吗?

最近开始搞乱AArch64程序集,我注意到它有一个严格为零的指定寄存器,而(大多数)其他架构你只是xor var, var.

我正在阅读的网站zr将其解释为零参考点,这听起来很像我在DC电子设备中定义地面的方式.并且因为ARM被业余爱好者使用,所以在代码中将电路中的接地归零对我来说是有意义的.

我敢肯定它比这复杂得多,但这是一个安全的类比吗?并且使用此寄存器与其他获得"0"的方法相比会产生不同的结果吗?

assembly cpu-registers zero arm64

3
推荐指数
2
解决办法
356
查看次数