2011-03-22 7 views
1

최대 값 위치를 반환하는 mips 함수를 쓰려고하지만이 예외는 gettin (/ home/ams/Bureau/part2a 줄 21 : 0x00400028 때 런타임 예외 오류 :) 범위를 0x00000000에서 해결배열에 대한 MIPS 어셈블리

# MIPS assembly code 

# $s0 = array base address, $s1 = i 
# initialization code 

main: lui $s0, 0x23B8   # $s0 = 0x23B80000 
    ori $s0, $s0, 0xF000 # $s0 = 0x23B8F000 
    addi $s1, $0, 0   # i = 0 
    addi $t2, $0, 1000  # $t2 = 1000 
    addi $t3, $0, 0   # $t3 = max 
    addi $s4, $0 , 0   # $s4 = max indice 

max: 
loop: slt $t0, $s1, $t2  # i < 1000? 
    beq $t0, $0, done  # if not then done 
    sll $t0, $s1, 2    # $t0 = i * 4 
    add $t0, $t0, $s0  # address of array[i] 


    lw $t1, 0($t0)  # $t1 = array[i] ERROR HERE 
    slt $t5, $t3, $t1  # max < array[i] 
    beq $t5, $0,else # if not then ense 
    addi $t3,$t1, 0 # $t3 =: array[i] 
    addi $s4, $s1,0 # $s4 =: i 
    #end 

    else: 
    addi $s1, $s1, 1  # i = i + 1 
    j loop    # repeat 

done: 
    addi $v0, $s4, 0  # retval = max 
    jr $ra    # Return 

어떤 제안하십시오?

답변

1

$ s1을 0으로 설정하고 역 참조를 시도하고 있습니다. 아마 $ t0을 의미할까요?

lw $t1, 0($t0) 
+0

여전히 같은 exeption을 가지고 있지만/홈/AMS/국/part2a 라인 (20)의 오류를 알고 : 0x00400028에서 런타임 예외 : 주소 범위를 벗어 0x23b8f000 – Mooh

+1

는 그런 다음 초기화가 정확한 주소가있어 당신이로드, 잘못 $ s0. –

+0

네, 초기화에 뭔가 잘못 됐습니다. 그러나 나는 무엇을 추측 할 수 없습니다 :/어떤 추측입니까? – Mooh

관련 문제