Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Arrays 向数组中添加整数值?_Arrays_Assembly_Add_Mips_Mips32 - Fatal编程技术网

Arrays 向数组中添加整数值?

Arrays 向数组中添加整数值?,arrays,assembly,add,mips,mips32,Arrays,Assembly,Add,Mips,Mips32,我是MIPS的新手,不了解这里发生了什么: 假设单词数组A按以下顺序存储0,1,2,3,4,5,6,7,8,9。假设A的起始地址是$s0。按照以下说明,此数组的值是什么 addi $t0, $s0, 32 lw $t1, 0($t0) sw $t1, 4($t0) (a) 0,1,2,3,4,5,6,7,8,9 (b) 0,1,2,3,4,5,6,7,9,9 (c) 0,1,2,3,4,5,6,7,8,8 (d) None of the above. 答案是“c”,但我不明白为什么。以下

我是MIPS的新手,不了解这里发生了什么:

假设单词数组A按以下顺序存储0,1,2,3,4,5,6,7,8,9。假设A的起始地址是$s0。按照以下说明,此数组的值是什么

addi $t0, $s0, 32
lw $t1, 0($t0)
sw $t1, 4($t0)

(a) 0,1,2,3,4,5,6,7,8,9
(b) 0,1,2,3,4,5,6,7,9,9  
(c) 0,1,2,3,4,5,6,7,8,8
(d) None of the above.
答案是“c”,但我不明白为什么。以下是我的思考过程:

第一行代码:

由于这是一个整数数组,将32添加到地址$s0并将其赋予$t0意味着将[8]的地址赋予$t0。A[8],因为每个整数需要4个字节,因此将0添加到$s0将导致A[0]的地址,将4添加到$s0将导致A[1]的地址,依此类推

第二行代码:

0($t0)正在引用$t0中的第一个元素(我不知道这是什么),并将其加载到寄存器$t1

第三行代码:

$t1的地址存储在内存中,指向$t0的第一个元素,该元素由4($t0)表示


同样,以上是我的思维过程,很可能是错误的

你的思维过程是正确的,这就是为什么答案c)是正确的

第一行,
addi$t0,$s0,32
分配$t0=$s0+32。由于$s0包含数组A的第一个元素的地址,并且知道该数组的每个元素占用4个字节,$t0现在将保存数组A的第九个元素A[8]的地址(索引从0开始)。So*$t0=地址(A[8])*

因此,第二行,
lw$t1,0($t0)
将加载存储在地址$t0+0的字,该地址是[8],并将该字存储在寄存器$t1中。因此,$t1=8

第三行,
sw$t1,4($t0)
,将$t1中包含的单词存储在地址$t0+4处,该地址是(A[9])的地址。因此,A[9]=8