5つのパラメーターを持つCの関数があると想像してください。
sum(n1,n2,n3,n4,n5);
組み立て中。レジスター4から7から最初の4つのパラメーターを取得し、最後のパラメーターは次のようにアクセスされます。
lw $8, 16($29)
最初の質問
n5をレジスター$8に入れる場合lw $8, 16($29)
、なぜこれを行わないのですか?
lw $9, 0($29)
lw $10, 4($29)
lw $11, 8($29)
lw $12, 12($29)
n1からn4をレジスタ$9から$12に入れますか?
2番目の質問
のパラメータはsum(n1,n2,n3,n4,n5);
メモリとアセンブリのどこかに格納されているため、最初のパラメータは、$4
のメモリアドレスを取得する方法にあり$4
ます$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)
の値$9
はまだ1であり、のアドレスではありません$4