【问题标题】:What is the use of a $zero register in MIPS?MIPS 中的 $zero 寄存器有什么用?
【发布时间】:2015-11-20 21:40:15
【问题描述】:

MIPS 中 $zero 寄存器有什么用?

什么意思?

lw $t0, myInteger($zero)

【问题讨论】:

标签: mips


【解决方案1】:

零寄存器总是保存常数 0。除了 0 恰好是一个非常有用的常数之外,它并没有什么特别之处。非常有用,以至于 MIPS 设计者专门用一个寄存器来保存它的值。 (这样您就不必浪费另一个寄存器或任何内存来保存该值。)


编辑:

至于那行代码的含义,它将MEMORY[myInteger + 0]中的单词加载到$t0寄存器中。 lw 命令接受一个常量 (myInteger) 和一个寄存器 ($zero)。不知道为什么会这样,但这就是说明的工作方式。由于myInteger被用作常量,必须提供一个寄存器,所以使用$zero

【讨论】:

  • lw $t0, myInteger($zero)
  • lw 只是加载字指令。它将常量 0 加载到 $t0 寄存器中。我不知道myInteger() 是什么,我从未见过。我不认为这是正常 MIPS 程序集的一部分。
  • 我编辑了我的答案。在这里,他们使用$zero 表示与内存地址的0 偏移量。重点在于零寄存器。查看源代码,您可能会在某处看到myInteger 被定义为常量。
  • 他们为什么要这样做?我的意思是,为什么不使用像lw $t0, myInteger 这样的普通命令呢?为什么lw $t0, myInteger($zero)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 2023-04-04
相关资源
最近更新 更多