Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 汇编语言抵消了存储单词的多种方式?_Assembly_Mips_Offset - Fatal编程技术网

Assembly 汇编语言抵消了存储单词的多种方式?

Assembly 汇编语言抵消了存储单词的多种方式?,assembly,mips,offset,Assembly,Mips,Offset,我正在火星编辑器中使用MIPS,我想知道 sw $s0,8($v0) 相当于: sw $s0,$v0(8) 我的直觉告诉我情况并非如此,因为它取括号内的地址,并加上括号外的值。然而,在codeknight在链接Below中发布的解决方案中,他使用以下方法循环字符串: lb $t1,mystring($t0) 这感觉就像是在索引一个数组,而使用“addimmediate to address of()”逻辑对我来说毫无意义。有人能解释一下吗 无可否认,语法有点混乱,因为它暗示这两个部分不在同

我正在火星编辑器中使用MIPS,我想知道

sw $s0,8($v0)
相当于:

sw $s0,$v0(8)
我的直觉告诉我情况并非如此,因为它取括号内的地址,并加上括号外的值。然而,在codeknight在链接Below中发布的解决方案中,他使用以下方法循环字符串:

lb $t1,mystring($t0)
这感觉就像是在索引一个数组,而使用“addimmediate to address of()”逻辑对我来说毫无意义。有人能解释一下吗


无可否认,语法有点混乱,因为它暗示这两个部分不在同一级别,而事实上它们在同一级别。因此,一些汇编器允许您将括号放在直接部分周围,但这是个例外

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)