想象一下,我在 C 中有一个函数,它有 5 个参数。
sum(n1,n2,n3,n4,n5);
在组装中。我从寄存器 4 到 7 中获取前四个参数,最后一个参数如下:
lw $8, 16($29)
第一个问题
如果lw $8, 16($29)
将 n5 放入寄存器 $8,为什么不这样做
lw $9, 0($29)
lw $10, 4($29)
lw $11, 8($29)
lw $12, 12($29)
将 n1 到 n4 放入寄存器 $9 到 $12?
第二个问题
由于 in 中的参数sum(n1,n2,n3,n4,n5);
存储在内存和程序集中的某个位置,因此第一个参数是$4
如何获取$4
to的内存地址$7
?
如果我这样做:
.data
array: .word 3,4,2,6,12,7,18,26,2,14,19,7,8,12,13
.text
main:
li $8,1
la $9,array
最后一条指令将我的数组的地址位置放在$9
. 如果我做
main:
li $4,1
la $9,0($4)
on 的值$9
仍然是 1 而不是地址$4