我想问一下关于内存访问的问题。当我执行一个load word
命令时,存在哪些内存限制?也就是说,我可以使用的最大偏移量或基地址寄存器是多少?
寄存器大小为32位,据我所知,“immediate”是16位。因此,我很确定我不能像这样做:
array: .word 0:20000
~
la $s0, array
lw $s1, 15000($s0)
...
所以如果我想访问15000,我可能需要先访问一些更小的值,然后才能继续访问,对吗? 但是我需要访问多小的值才能保证正常访问呢?为什么?
la
并使用另一个偏移量吗?因为在我的例子中,我使用了一个合适的值(数组的第一个单词),但是如果我说我必须使用另一个'la',还是有其他方法吗? - Eliasla
将为您提供将任意立即值放入寄存器的最佳方法。如果您只是孤立地执行一次此操作,请使用la
获取所需的偏移量,并在lw
的偏移字段中使用0
。如果您要访问多个相邻的内容,请执行一次la
和加法,然后对访问使用适当的立即偏移量。 - moonshadow