Assembly 在MIPS中加载$0的值

Assembly 在MIPS中加载$0的值,assembly,mips,Assembly,Mips,我在理解“n($0)”如何在寄存器存储中使用时遇到一些问题。在下面的问题中,由于每个十六进制是4位,那么加载到$s1中的“6($0)”是什么值 $s1 = A1B2C3D4 $s2 = 5A6B7C8D sw $s1, 4($zero) sw $s2, 8($zero) lw $s1, 6($zero) 此过程后$s1的结果是什么?lw$s1,6($0)从绝对地址0+6=6加载,因此会出现故障,除非您使用的是足够现代的MIPS,允许未对齐的加载 如果是,结果取决于MIPS CPU运行的en

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

$s1 = A1B2C3D4
$s2 = 5A6B7C8D

sw $s1, 4($zero)
sw $s2, 8($zero) 
lw $s1, 6($zero)
此过程后$s1的结果是什么?

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


如果是,结果取决于MIPS CPU运行的endianness模式。e、 g.MARS模拟了一个小的endian MIPS,在这里您可以将存储的下半部分设置为地址
8
,将存储的上半部分设置为地址
4
。但是,MIPS CPU在big-endian模式下运行是很常见的。

保护内存不足也是很常见的,所以即使是第一个
sw
在某些环境下也会出现故障。@ErikEidt:没错,这就是为什么我强调绝对地址
6
(因为这很奇怪)。但并非所有的设置都是这样。MARS的一个预定义内存配置(但不是默认配置)将数据部分放在地址空间的最底部,允许高效的直接寻址,如
myvar($零)
仅使用MIPS加载/存储指令的16位立即数部分。