2015-09-26 79 views
0

有人可以幫助我瞭解MIP代碼中的某些行正在做什麼嗎?在MIP中使用數組

C代碼是B[8] = A[i - j]其中i = $ S3,J = $ s4中,& A [] = $ S6和& B [] = $ S7

MIPS的代碼如下...

sub $t0, $s3, $s4 # i - j 
sll $t0, $t0, 2 #Gets the offset of 8 for B[] 
add $t0, $s6, $t0 #Goes to the offset in B[] ? 
lw $t1, 0($t0) #???? 
sw $t1, 32($s7) #???? 

一旦到達最後3行,我會有點失落。

它爲什麼是0($ t0)和32($ s7)?或者爲什麼0和32?

+0

什麼是「MIPs」?這是28位版本的MIPS嗎? – Olaf

回答

1
sll $t0, $t0, 2 // This multiplies (i-j) * 4, not 8. Because the indexes are 4-byte ints 
add $t0, $s6, $t0 // $t0 = A + (i-j)*4. So $t0 = &A[i-j] 
lw $t1, 0($t0)  // $t1 = A[i-j] 
sw $t1, 32($s7) // B[32/4] = $t1 

32($ S7)指$ S7 + 32添加32因爲要訪問一個整數陣列,它位於在存儲器地址B + 8 *的sizeof(int)的的第8個元素的原因= B + 32