2013-02-25 4 views
0

Я пытаюсь отобразить «Hello World» (из примера, найденного в Интернете) в Mips и посмотреть, как это работает, но в итоге я получаю ошибки. У меня была первая ошибка: "spim: (парсер) Ярлык второй раз определяется в строке 6 файла C: Program Files (x86) main: # Выполнение начинается с метки« main »« ^ Чтобы исправить это, я повторно инициализировал и перезагружал. Затем я запускаю Qtspim, и я получаю следующую ошибку: «Инструкция ссылается на неопределенный символ в 0x00400028/Notepad ++/test.asm [0x00400028] 0x3c010000 lui $ 1, 0 [Приветствия]; 8: la $ a0, Приветствия # Адрес загрузки строка для печати в $ a0Mips: ошибка «Hello World»

Может кто-нибудь объяснить, что вызывает первую и вторую ошибку? Я просто пытаюсь проверить код, который я нашел в Интернете, и понять, как работает Qtspim, прежде чем я попытаюсь выполнить свое назначение. Я использую Notepad ++ на ОС Windows 08. Ваша помощь будет очень ценится. Беллоу код.

# Program: Hello, World! 
.data    # data declaration section; specifies values to be stored 
        # in memory and labels whereby the values are accessed 
Greeting: .asciiz "\nHello, World!\n" 
.text    # Start of code section 
main:    # Execution begins at label "main" 
li $v0, 4   # system call code for printing string = 4 
la $a0, Greetings # load address of string to be printed into $a0 
syscall    # call operating system to perform operation; 
        # $v0 specifies the system function called; 
        # syscall takes $v0 (and opt arguments) 

        #This illustrates the basic structure of an assembly language program. 
+0

Я не знаю, что такое первая ошибка, но вторая означает, что нет метки под названием * Приветствия *. Я понимаю, что вы имели в виду * Приветствие *. – m0skit0

+0

Oups !!!! Я этого не видел! Я исправил его, но теперь у меня есть еще одна ошибка: «Попытка выполнить не-команду на 0x00400030». Я знаю, что это связано с расположением памяти. Но я не могу понять, почему у меня эта новая ошибка. – T4000

+0

Если вы продолжаете менять вопрос, мы никогда не закончим. – m0skit0

ответ

0

Вы маркированы строку Greeting, но назвал его Greetings в вашем код, который не может быть распознан.

Кроме того, кажется, что вы никогда не вернетесь из своей функции (например, jr $ra или аналогичной) после syscall, поэтому выполнение продолжается по неопределенным данным.

+0

Я не уверен, что мне пришлось добавить свои собственные строки кода, но здесь я нашел код, который я пытаюсь проверить: http://courses.cs.vt.edu/~cs2505/summer2010/Notes/pdf /T21.IntroMIPSAssembly.pdf Все, что я сделал, это копирование, вставка и запуск. – T4000

+0

Вы должны вернуться из функции (или, скорее всего, выполнить «syscall», чтобы остановиться) – MByD

+0

Я добавил jr $ ra после того, как syscall проверял. На этот раз ошибка отсутствует, кроме программы не отображается «Hello World». Я отобразил его один раз после повторного запуска Qtspim, затем снова появилась ошибка «Попытка выполнить не-команду на 0x00400030». – T4000