Ошибка QtSpim «Попытка выполнить не-инструкцию в 0x0040000c» - PullRequest
0 голосов
/ 30 июня 2019

Я только начал изучать MIPS 32 и попытаться запустить этот код, он без проблем работает на симуляторе MARS MIPS, но когда я сохранил его в файл (.asm) и попытался запустить на QtSpim, консоль выскакивает с сообщением «HelloМир », но появляется ошибка:« Попытка выполнить неинструкцию в 0x0040000c »также отображается, я что-то пропустил или какая-то часть неверна?

Снимок ошибки

Я также пытался снять флажок обработчик исключений, но безрезультатно.

  • Вот код:

    .data
        Message: .asciiz "Hello World"
    
    .text
        li $v0, 4
        la $a0, Message
        syscall
    

1 Ответ

0 голосов
/ 01 июля 2019

С точки зрения spim, в вашей программе есть две проблемы

  1. spim ожидает main, и ни один не объявлен в вашей программе.

  2. spim продолжает выполнять «программу» после последней инструкции. В конце должен быть системный вызов 10, чтобы остановить изгнание.

Итак, рабочая версия вашей программы для spim -

.data
    Message: .asciiz "Hello World"

.text
main:                            # start of program
    li $v0, 4
    la $a0, Message
    syscall
exit:
    li      $v0, 10              # syscall 10 terminates program 
    syscall                      # and exits 

Действительно, spim немного обидчив, и я бы посоветовал вам использовать mars, если это возможно. Кроме того, рекомендуется всегда добавлять в свои программы main и выход.

...