0

我正在使用带有火星编辑器的 MIPS,我想知道是否有类似的东西

sw $s0,8($v0)

相当于:

sw $s0,$v0(8)

我的直觉告诉我情况并非如此,因为它采用括号中任何内容的地址并添加它之外的任何内容的值。然而,在codeknight在下面的链接中发布的解决方案中,他使用以下方法循环字符串:

lb $t1,mystring($t0)

这几乎感觉就像索引一个数组,并且对我来说“添加立即数到 () 的地址”逻辑没有意义。有人可以解释一下吗?

http://www.masmforum.com/board/index.php?PHPSESSID=786dd40408172108b65a5a36b09c88c0&topic=1062.0

4

1 回答 1

0

诚然,语法有点令人困惑,因为它暗示这两个部分不在同一级别,而实际上它们是。因此,一些汇编程序允许您将括号放在直接部分周围,但这是个例外。

imm(reg)仅表示内存地址imm+reg,因此mystring($t0)表示内存地址mystring+$t0,因此它确实是索引。直接部分是基础还是相反,没有区别。这两个都加载的第 5 个(偏移量 4)字节mystring

li $t0, 4
lb $t0, mystring($t0)

或者

la $t0, mystring
lb $t0, 4($t0)
于 2013-09-29T22:01:12.970 回答