2016-03-08 74 views
0

訪問數組充滿了零我有一個這樣的數組:MIPS:如何使用循環

r_clues: .word 0 : 512 # array full of zero 

我做

la $s0, r_clues 
lw $t1, 0($s1) 

和我拿的第一4字節,如果地址我要採取,例如,第4個地址我會做

lw $t1, 16($s1) 

,因爲它的4(address) * 4(bytes)

我怎樣才能訪問這個數組有一個循環,並加載字到每個8字節的寄存器?

回答

1

計算元素和加載詞的地址。

la $s0, r_clues   # the address 
    addiu $s2, $zero, 0  # offset 
    addiu $s3, $zero, 64  # number of loops 
loop_begin: 
    addu $s1, $s0, $s2   # address = base + offset 
    lw $t1, 0($s1)    # load the array 
    addiu $s2, $s2, 8   # proceed to the next element 
    addi $s3, $s3, -1   # substract the counter 
    bne $s3, $zero, loop_begin # if there are more elements to load, go to loop 
    nop      # prevent next instruction from being executed before exiting the loop 
+0

'addiu $ s2,$ s2,8#繼續下一個元素< - 不應該是4嗎? – Michael

+0

@Michael我猜不是,因爲問題說「每個'8'字節」 – MikeCAT

+0

啊,對。我感到困惑,因爲這個問題也談到了「第四個地址」是16($ s1)'。 – Michael