【发布时间】:2015-11-20 21:40:15
【问题描述】:
MIPS 中 $zero 寄存器有什么用?
什么意思?
lw $t0, myInteger($zero)
【问题讨论】:
-
@phuclv,您正在结束旧问题以支持新问题?
-
@phuclv,唐纳德·特朗普关心时间。
标签: mips
MIPS 中 $zero 寄存器有什么用?
什么意思?
lw $t0, myInteger($zero)
【问题讨论】:
标签: mips
零寄存器总是保存常数 0。除了 0 恰好是一个非常有用的常数之外,它并没有什么特别之处。非常有用,以至于 MIPS 设计者专门用一个寄存器来保存它的值。 (这样您就不必浪费另一个寄存器或任何内存来保存该值。)
编辑:
至于那行代码的含义,它将MEMORY[myInteger + 0]中的单词加载到$t0寄存器中。 lw 命令接受一个常量 (myInteger) 和一个寄存器 ($zero)。不知道为什么会这样,但这就是说明的工作方式。由于myInteger被用作常量,必须提供一个寄存器,所以使用$zero。
【讨论】:
lw 只是加载字指令。它将常量 0 加载到 $t0 寄存器中。我不知道myInteger() 是什么,我从未见过。我不认为这是正常 MIPS 程序集的一部分。
$zero 表示与内存地址的0 偏移量。重点在于零寄存器。查看源代码,您可能会在某处看到myInteger 被定义为常量。
lw $t0, myInteger 这样的普通命令呢?为什么lw $t0, myInteger($zero)?