這是一個多步驟的過程。第一部分是傳遞參數來比較和調用它。比較完成後,它將返回一個值。這是您將存儲在A [i]中的返回值。
你可以把它看作是:
int temp = compare(num,i);
A[i] = temp;
如果溫度無非是$ V0(返回值)以上。
其中A [i]是A +的地址的內存位置* A的元素的大小。對於這個答案,因爲您沒有真正指定A的類型,我會認爲它是int數組。此外,我還假設MIPS機器上的int爲4個字節(或一個字)。考慮到這一點,A [0]是A + 0的地址.A [1]是A + 4的地址.A [2]是A + 8的地址。依此類推。
粗線條的是:
set_array:
# save $ra to stack
la $s1, A # assuming $s1 isn't used for anything
# loop code starts here
# A[i] = compare(num,i);
move $a0, $a0 # num (Here for completeness, it does nothing)
move $a1, $s0 # I am just assuming variable 'i' is in $s0
jal compare # call compare
sw $v0, 0($s1) # store the return value in A+4*i
addiu $s1, $s1, 4 # inc it by 4, for the next element
# i = i + 1
# jump back up
# restore $ra
jr $ra
# ...
compare:
# code to compare and
# return 1 or 0 in $v0
jr $ra
來源
2012-06-06 05:34:21
Wiz
我試圖格式化你的代碼,但所以我不想惹它它是無效的。試着讓'{'和'}'匹配起來,並確保你有';'你需要它的地方。大多數人縮進他們的代碼,所以你可以很容易地看到塊('{}')結束。 –