在 MIPS 中用 $zero 加载值

Loading Values with $zero in MIPS

我在理解如何在寄存器存储中使用 'n($zero)' 时遇到一些问题。在下面的问题中,由于每个十六进制都是 4 位,所以加载到 $s1 中的 '6($zero)' 是什么值?

$s1 = A1B2C3D4
$s2 = 5A6B7C8D

sw $s1, 4($zero)
sw $s2, 8($zero) 
lw $s1, 6($zero)

$s1 在这个过程之后的结果是什么?

lw $s1, 6($zero) 从绝对地址 0+6 = 6 加载,因此会出错,除非您使用的是足够现代的 MIPS,允许未对齐的加载。

如果是这样,结果取决于您的 MIPS CPU 在哪种字节序模式下运行。例如MARS 模拟小端 MIPS,您可以将存储的低半部分寻址到 8,将存储的高半部分寻址到 4。但是在大端模式下 MIPS CPUs 到 运行 是很常见的。