2015-01-07 6 views
1

Я хочу загрузить слово из памяти, с адресом x +4 в реестр, но следующий код не работает. Что я делаю не так?Невозможно загрузить слово, начинающееся с адреса x + 4, в реестр в QtSpim

.data 

    x: .word 10 
    y: .word 11 
    z: .word 12 

    .text 
    main: 
     lw $t0, x 
     lw $t1, 4($t0) 
     li $v0, 10 
     syscall 

Я получаю UNALIGNED Адрес в инст/выборки данных ошибок и Возникло исключение

ответ

2

Вы не загружая адрес x правильно:

lw $t0, x 

эта инструкция (на самом деле, это два инструкции, поскольку lw reg,absolute_address является псевдо-инструкцией) загружает значение , расположенное по адресу x в $t0. Итак, вы получаете $t10 = 10, а затем на следующей строке вы пытаетесь загрузить с адреса 10 + 4 == 14, что, конечно же, вы не можете сделать, потому что адрес должен быть выровнен по словам.

То, что вы должны использовать, если вы хотите, чтобы загрузить адресx в $t0 является:

la $t0, x