«строка 65: исключение времени выполнения в 0x004000ec: недействительный или не реализованный сервис системного вызова: 97», почему он не работает? - PullRequest
0 голосов
/ 15 января 2019

Я пишу программу mips, которая должна воспроизводить песню, но она не работает.

.data
buffer: .asciiz ""
fin: .asciiz "Over_the_Horizon.mp3"      #nom du fichier en input
loadMusic: .word 0

                                        #LECTURE/ENREGISTREMENT DU FICHIER

.text

fichier:
li $v0, 13                              #appel system pour ouvrir le fichier
la $a0, fin                             #on entre le nom du fichier
li $a1, 0                               #ouvrir le fichier pour le lire
li $a2, 0
syscall
move $s6, $v0                      #enregistrer la description du fichier

li $v0, 14                              #appel système pour lire le fichier
move $a0, $s6                     # description fichier
la $a1, buffer                       #adresse de buffer d'ou lire le fichier
la $a2, 200000                    # longueur/espace de buffer
syscall                                  #lire depuis le fichier

li $v0, 16                               #appel système pour fermer le fichier
move $a0, $s6                      #description fichier pour fermer
syscall                                  #fermer le fichier

                                       #LECTEUR DE SON

playsong:
li $t0, 0

channelStart:
lb $t1, buffer($t0)
addi $t0, $t0, 1
li $t2, 0

chgmtChannel1:
bge $t2, $t1, play
li $v0, 88
lb $a0, buffer($t0)
addi $t0, $t0, 1
lb $a1, buffer($t0)
addi $t0, $t0, 1
syscall
addi $t2, $t2, 1
j chgmtChannel1

play:
li $t1, 0
li $v0, 97
lb $a2, buffer($t0)
addi $t0, $t0, 1
lb $a0, buffer($t0)
addi $t0, $t0, 1
lb $a3, buffer($t0)
addi $t0, $t0, 1
sub $sp, $sp, 4
sw $t4 , 0($sp)
jal readMusic
lw $t4, 0($sp)
addi $sp, $sp, 4
addi $t0, $t0, 1
la $a1, ($t4)
syscall
sub $sp, $sp, 4
sw $t4 , 0($sp)
jal readMusic
lw $t4, 0($sp)
addi $sp, $sp, 4
addi $t0, $t0, 1
beqz $t4, play
li $v0, 32
la $a0, ($t4)
syscall
j play

                                                   #

readMusic:
lb $t1, buffer($t0)
addi $t0, $t0, 1
lb $t2, buffer($t0)
addi $t0, $t0, 1
lb $t3, buffer($t0)
addi $t0, $t0, 1
lb $t4, buffer($t0)
sll $t4, $t4, 0
sw $t4, loadMusic
sb $t3, loadMusic
lw $t4, loadMusic
sll $t4, $t4, 0
sw $t4, loadMusic
sb $t2, loadMusic
lw $t4, loadMusic
sll $t4, $t4, 0
sw $t4, loadMusic
sb $t1, loadMusic
lw $t4, loadMusic
jr $ra

когда я пытаюсь выполнить программу, это показывает мне:

Ошибка в / home / sokhna1109 / projet_son / playson line 65: время выполнения исключение в 0x004000ec: недействительный или не реализованный сервис системных вызовов: 97

Go: выполнение прекращено с ошибками.

1 Ответ

0 голосов
/ 15 января 2019

Из-за этого:

li $v0, 97           <-- $v0 = 97
lb $a2, buffer($t0)  \
addi $t0, $t0, 1      |
lb $a0, buffer($t0)   |
addi $t0, $t0, 1      |
lb $a3, buffer($t0)   |
addi $t0, $t0, 1      | 
sub $sp, $sp, 4       | none of this modifies $v0
sw $t4 , 0($sp)       |
jal readMusic         |
lw $t4, 0($sp)        |
addi $sp, $sp, 4      |
addi $t0, $t0, 1      |
la $a1, ($t4)        /
syscall              <-- syscall, uses $v0 for the system call number

И, вероятно, используемый вами симулятор не реализует системный вызов 97.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...