在 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 到 运行 是很常见的。
我在理解如何在寄存器存储中使用 '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 到 运行 是很常见的。