想象一下,我有一個C中有5個參數的函數。MIPS從寄存器獲取內存地址
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?
第二個問題
由於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
有關MIPS調用約定的更多信息,請參閱http://stackoverflow.com/q/10214334/583570。 – markgz 2012-04-23 18:15:44