2015-05-04 7 views
1
board_one: 
    .space 3600 

board_two: 
    .space 3600 

     set_boards: 
     addi $sp, $sp,-16  
     sw $ra, 0($sp) 
     sw $s0, 4($sp) 
     sw $s1, 8($sp) 
     sw $s2, 12($sp) 

     move $s4, $s0 
     la $s0, board_one 
     la $s1, board_two 
     li $s2, 0 
     mul $s3, $s4, $s4 
     jal  set_zero_loop 

     lw $ra, 0($sp) 
     lw $s0, 4($sp) 
     lw $s1, 8($sp) 
     lw $s2, 12($sp) 
     addi $sp, $sp, 16 

     jr $ra 

    set_zero_loop: 
     beq $s2, $s3, done_looping 
     li $v0, PRINT_INT # print generation counter 
     move $a0, $s2 
     syscall 

     li $s4, 5 

     sw $s4, 0($s0) 
     sw $s4, 0($s1) 
     addi $s1, $s1, 4 
     addi $s0, $s0, 4 
     addi $s2, $s2, 1 
     j set_zero_loop 


    done_looping: 
     jr $ra 

Моя проблема возникает, когда я пытаюсь sw. Говорит, что я пытаюсь написать только для чтения? Действительно смущен. Я поставил адреса массивов в регистры затем попытаться итерацию на нихОшибка # 14: Попытка записи в постоянное запоминающее устройство Mips Assembly

Error #14: Attempted write to read-only memory 

Fault address: 0040203c 

Register contents: 

$zero: 00000000 $at: 00000000 $v0: 00000001 $v1: 00000000 
    $a0: 00000000 $a1: 7fffeb8c $a2: 00000000 $a3: 00000000 
    $t0: 00000019 $t1: 00000000 $t2: 00000000 $t3: 00000000 
    $t4: 00000000 $t5: 00000000 $t6: 00000000 $t7: 00000000 
    $s0: 00400000 $s1: 00400e10 $s2: 00000000 $s3: 00000019 
    $s4: 00000005 $s5: 00000000 $s6: 00000000 $s7: 00000000 
    $t8: 00000000 $t9: 00000000 $k0: 00000000 $k1: 00000000 
    $gp: 00000000 $sp: 7fffeae0 $fp: 00000000 $ra: 00402010 
    pc: 00402040 hi: 00000000 lo: 00000019 

Current instruction: ae140000 (at 0040203c) 

Decoded instruction: sw $s4, 0($s0) (0x400000) 

Может кто-то помочь мне понятия не имею, почему я не могу поставить слова здесь.

ответ

0

Изначально у меня был

board_one: 
    .space 3600 

board_two: 
    .space 3600 

Изменение этой

.data 
board_one: 
    .space 3600 
.text 

.data 
board_two: 
    .space 3600 
.text 

Распределяет пространство правильно, так что вы пытаетесь писать поверх вашей программы во время работы.

Смежные вопросы