2012-11-17 129 views
0

比方说,我有一个数组MIPS汇编语言LA偏移

ar .space 15 

(阵列AR中的每个元素是一个char,4个字节) 所以当我执行:

la $r0, ar 
add $r0,$r0,1 
lb $r1, 8($r0) 

确实的第二行添加4个字节并指向第二个元素或ar?第三行是否将第二个元素的地址偏移了8个字节,所以现在它指向了ar的第4个元素?

谢谢

+0

通常char是1个字节,而不是4个。 –

回答

0

Ar并没有真正的“元素”,这只是15个字节的空间。里面的内容完全取决于你如何使用它。

如果是字符列表(1字节!),则第二条指令将使地址增加1,从而指向第二个字符。第三条指令的地址将指向第九个字符(提供第二个地址被执行)。

如果是单词列表(4个字节),则第二个地址将在单词内部生成地址,从而提供无效数据。如果是这种情况,地址应该增加4,如果你使用第二或第三条指令的方法,则地址应该是独立的。此外,在这种情况下,您应该使用lw而不是lb