我在火星编辑器中使用MIPS,我想知道是否像
sw $s0,8($v0)
相当于:
sw $s0,$v0(8)
我的直觉告诉我情况并非如此,因为它取括号中的whatevers的地址并添加其外部的值。然而,在codeknight在链接中发布的解决方案中,他使用:
循环遍历字符串lb $t1,mystring($t0)
这几乎就像索引一个数组一样,对于我来说,“添加即时地址()”逻辑对我没有意义。有人可以解释一下吗?
http://www.masmforum.com/board/index.php?PHPSESSID=786dd40408172108b65a5a36b09c88c0&topic=1062.0
答案 0 :(得分:0)
不可否认,语法有点令人困惑,因为它暗示这两个部分不在同一级别,实际上它们是。因此,一些汇编程序允许您将括号括在直接部分周围,但这是例外。
imm(reg)
仅表示内存地址imm+reg
,因此mystring($t0)
表示内存地址mystring+$t0
,因此它确实是索引。无论是直接部分是基础还是相反,都没有区别。这两个都加载mystring
的第5个(偏移4)字节:
li $t0, 4
lb $t0, mystring($t0)
或
la $t0, mystring
lb $t0, 4($t0)