이것은 여러 단계의 과정입니다. 첫 번째 부분은 비교하고 호출하는 인수를 전달합니다. compare가 완료되면 값을 반환합니다. A [i]에 저장하는 것은이 반환 값입니다. 온도가 $ V0 (반환 값)에 불과하다 어디
int temp = compare(num,i);
A[i] = temp;
:
당신은 그것을 생각할 수 있습니다.
A [i]가 A의 요소의 크기 * A의 요소 크기 인 메모리 위치. A의 유형이 무엇인지 구체적으로 지정하지 않았으므로이 응답의 경우, int 배열 또한 int 또한 4 바이트 (또는 단어) MIPS 컴퓨터에서 가정합니다.
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
내가 코드를 포맷하려고했지만 나는 그것을 건드리고 싶지 않아 그래서 유효 아니다 :
대략적인 윤곽이 될 것입니다. '{'와'}'가 일치하도록 시도하고, 필요한 곳에';'가 있는지 확인하십시오. 대부분의 사람들은 코드를 들여 쓰기 때문에 블록 ('{}')이 끝나는 곳을 쉽게 볼 수 있습니다. –