2016-04-05 7 views
0

Я попытался загрузить следующий код в winMIOS64, но этот процесс завершился неудачно, поскольку он дал мне ошибку в строке 2, может помочь мне определить проблему и, если необходимо изменить другие инструкции ?? !!Как правильно загрузить код MIPS в winMIPS64

.data 
     m1:.asciiz "enter the total number of digits" 
     m2:.asciiz "enter total number of digits" 
     m3:.asciiz "entered number:" 
     m4:.asciiz "sum of product:" 
     m5:.asciiz "not an armstrong number" 
.text 
main: 
     addi.d $sp,$sp,-20 
     sd $ra,0($sp) 
     sd $a0,4($sp) 
     sd $a1,8($sp) 
     sd $a2,12($sp) 
     sd $a3,16($sp) 
     jal start 

start: ld $a0,0($sp) #restore a0 from stack 
     ld $a1,4($sp) 
     ld $a2,8($sp) 
     ld $a3,12($sp) 
     ld $ra,16($sp) 
     addi.d $sp,$sp,20 #restore stack pointer 
     jr $ra #return to calling routing 
     halt 

Ниже приведены появились ошибки в диалоге, пока код не загружен:

1. первый диалог сказал: передать 1 - ошибка в строке 2

2. во втором диалоговом окне сказано: ошибки, обнаруженные на проходе 1

+1

_ "он дал мне ошибку в строке 2 "_ Затем вы должны включить точное сообщение об ошибке в свой вопрос. – Michael

+0

Эта программа не загружала код в его среду, он дал мне это сообщение по диалогу –

+0

Какое сообщение? Вам нужно будет скопировать сообщение об ошибке дословно, потому что вы не можете ожидать, что люди запустит какую-нибудь программу и попробуют ее для вас. –

ответ

1

Ошибка, по-видимому, неверный адрес.

Вы пытаетесь сохранить двойное слово в строке 2:

sd $ra, 0($sp) 

Но вы не передавая адрес, двойное слово выровненный (кратное 8).

Поскольку вы храните двойные слова, они должны быть друг другу 8 байты друг от друга, и вы должны выделять 40 байт в стеке для 5 регистров, а не только 20:

addi.d $sp, $sp, -40 
Смежные вопросы