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

扎尔多兹89

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

这背后是什么设计决定,为什么?

紫罗兰色

这只是CPU的设计方式。r0一方面,确保始终设置为零是一种避免非常常见的值的潜在昂贵内存访问的方法。

一方面(读取),预留一个寄存器来包含零值很方便,以便您可以使用它。否则,您将不得不自己将零加载到寄存器中。

许多RISC处理器倾向于支持寄存器中的数据处理,仅访问存储器以进行加载和存储操作。这不是RISC的硬性规定,更多的是趋势。预留一个寄存器使您始终有零个可用可能会很有用-这是一个折衷,因为您少了一个寄存器即可用于通用值,但MIPS设计师显然认为这是值得的。

另一方面(写),由于r0绑定到零值,因此您可以在其中放置所需内容,并且不会有任何区别-它将保持为零。这意味着如果您想丢弃该值,可以将其用作目标。

同样,这与RISC背后的哲学有关。它往往有利于极少数的指令格式,如MIPS RIJ格式(寄存器,立即跳)。例如,您可以有一组始终存储结果,然后将其存储到r0不需要的位置,而不是根据是否要存储结果而具有多种指令格式

因此,如果您想检查是否将两个寄存器相加会导致溢出,但又不想将结果存储在任何地方,则可以使用:

add $0, $7, $8  ; r0 <- r7 + r8, but r0 remains at 0.

MIPS文档MIPS32 Architecture for Programmers Volume I: Introduction to the MIPS32 Architecture确认以上内容:

R0硬连线为零值,并且可以用作要丢弃其结果的任何指令的目标寄存器。当需要零值时,R0也可用作源。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么MeasuredHeight始终为0,如何获得该值?

来自分类Dev

SlickGrid单元上的“ l0 r0”命名是什么意思?

来自分类Dev

为什么精度为0%?MATLAB LIBSVM

来自分类Dev

为什么此多态关联的source_type始终为0?

来自分类Dev

为什么从重置为0?

来自分类Dev

为什么数组中的第一个元素始终为0?

来自分类Dev

如果[0] == 0和0 == [[0]]都为真,那么为什么[0] == [[0]]为假?

来自分类Dev

为什么以下mongodb组查询始终返回0?

来自分类Dev

为什么从bash中的局部声明之后的函数返回的值始终为0?

来自分类Dev

在OleDB中使用参数后,为什么我的响应始终为0?

来自分类Dev

为什么在运行Modelsim Executable时Python子进程返回代码始终为0?

来自分类Dev

为什么动态添加的图像的offsetWidth始终为0

来自分类Dev

(OMNeT ++)为什么PacketQueue始终为0?

来自分类Dev

哪些PowerPC指令将r0视为0?

来自分类Dev

为什么$#在我的函数中始终为0?

来自分类Dev

xargs -r0和xargs -0

来自分类Dev

为什么“查找。-print0 | xargs -r0 du -chx”和“ du -chx”结果不同?

来自分类Dev

为什么此多态关联的source_type始终为0?

来自分类Dev

R ifelse序列始终为0

来自分类Dev

成员函数的生命周期可变,值始终重置为“ 0”,为什么?

来自分类Dev

为什么此计算始终返回0

来自分类Dev

为什么在脚本开始时退出状态始终为0?

来自分类Dev

在macOS上,为什么“ ps”始终将会话ID显示为“ 0”

来自分类Dev

为什么从我的文件中读取的最小数字始终为0?(Java)

来自分类Dev

为什么从bash中的局部声明之后的函数返回的值始终为0?

来自分类Dev

臂组件加载字符串到r0

来自分类Dev

为什么我的Android应用程序始终将纬度和经度设置为0?

来自分类Dev

为什么中断服务例程,PUSH {r3,r4,r5,lr} 但是POP {r0,r4,r5,lr} 会导致ERROR?

来自分类Dev

为什么 tkinter 中的 widget.winfo_rootx() 和 widget.winfo_rootx() 始终为 0?

Related 相关文章

  1. 1

    为什么MeasuredHeight始终为0,如何获得该值?

  2. 2

    SlickGrid单元上的“ l0 r0”命名是什么意思?

  3. 3

    为什么精度为0%?MATLAB LIBSVM

  4. 4

    为什么此多态关联的source_type始终为0?

  5. 5

    为什么从重置为0?

  6. 6

    为什么数组中的第一个元素始终为0?

  7. 7

    如果[0] == 0和0 == [[0]]都为真,那么为什么[0] == [[0]]为假?

  8. 8

    为什么以下mongodb组查询始终返回0?

  9. 9

    为什么从bash中的局部声明之后的函数返回的值始终为0?

  10. 10

    在OleDB中使用参数后,为什么我的响应始终为0?

  11. 11

    为什么在运行Modelsim Executable时Python子进程返回代码始终为0?

  12. 12

    为什么动态添加的图像的offsetWidth始终为0

  13. 13

    (OMNeT ++)为什么PacketQueue始终为0?

  14. 14

    哪些PowerPC指令将r0视为0?

  15. 15

    为什么$#在我的函数中始终为0?

  16. 16

    xargs -r0和xargs -0

  17. 17

    为什么“查找。-print0 | xargs -r0 du -chx”和“ du -chx”结果不同?

  18. 18

    为什么此多态关联的source_type始终为0?

  19. 19

    R ifelse序列始终为0

  20. 20

    成员函数的生命周期可变,值始终重置为“ 0”,为什么?

  21. 21

    为什么此计算始终返回0

  22. 22

    为什么在脚本开始时退出状态始终为0?

  23. 23

    在macOS上,为什么“ ps”始终将会话ID显示为“ 0”

  24. 24

    为什么从我的文件中读取的最小数字始终为0?(Java)

  25. 25

    为什么从bash中的局部声明之后的函数返回的值始终为0?

  26. 26

    臂组件加载字符串到r0

  27. 27

    为什么我的Android应用程序始终将纬度和经度设置为0?

  28. 28

    为什么中断服务例程,PUSH {r3,r4,r5,lr} 但是POP {r0,r4,r5,lr} 会导致ERROR?

  29. 29

    为什么 tkinter 中的 widget.winfo_rootx() 和 widget.winfo_rootx() 始终为 0?

热门标签

归档