Ошибка Попытка выполнить не инструкцию

Мой вклад

.text
.globl start


start:
# load with sign extension
lw $t0, memory
lh $t1, memory
lb $t2, memory


# load without sign extension
lhu $t3, memory
lbu $t4, memory

.data 
memory:
.word 0xABCDE080 # little endian: 80E0CDAB

Моя ошибка

Попытка выполнить неинструкцию по адресу 0x00400028

Попытка выполнить неинструкцию по адресу 0x00400028

Что это значит?


person Fatin Shafiqah    schedule 12.11.2015    source источник


Ответы (1)


Это означает, что ЦП пытается выполнить данные.

Ваша программа начинает выполнение кода с метки start, она выполнит все ваши инструкции по загрузке, а затем вы не предоставили никакого кода, поэтому ЦП продолжит выполнять то, что хранится после вашей последней инструкции, которая будет «данными».

Итак, после вашей последней инструкции вы должны либо:

  • введите jr $ra для «возврата из функции», если вы писали функцию
  • выдать системный вызов 10 для прекращения выполнения, т.е.:

    li $v0, 10

    syscall

  • цикл навсегда, т.е.:

    loop: j loop

person gusbro    schedule 12.11.2015