“第65行:0x004000ec处的运行时异常:无效或未实现的系统调用服务:97”为什么不起作用?

时间:2019-01-15 07:17:50

标签: mips

我正在编写一个应该播放歌曲但不起作用的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第65行中的错误:运行时   0x004000ec处发生异常:无效或未实现的系统调用服务:97

     

开始:执行由于错误而终止。

1 个答案:

答案 0 :(得分:0)

因此,

private func restAPI(path: String, method: String, params: [String: Any], callback: @escaping(_ result: [[String: Any]]) -> Void) {

    var url: String = ""

    if path == "/login" {
        let dict = dictConvert(dictionary: params)
        url = baseUrl + path + dict
    }
    else {
        url = baseUrl + path
    }

    guard let urlData = URL(string: url) else {
        callback([])
        return
    }

    print("===URL=== " + url)

    let request = NSMutableURLRequest(url: urlData)
    request.httpMethod = "POST"

    if let key = UserDefaults.standard.string(forKey: "auth-key") {
        print("===Authentication=== " + key)
        request.addValue(key, forHTTPHeaderField: "Authentication")
    }
    let task = URLSession.shared.dataTask(with: request as URLRequest, completionHandler:{ (data, _ , error) in

        if error == nil {
            do {
                let stringData = String(data: data!, encoding: String.Encoding.utf8) as String!
                print("Data === " + (stringData ?? "nil"))

                if let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSArray {

                    guard let jsonArray = json as? [[String: Any]] else {
                        callback([])
                        return
                    }

                    callback(jsonArray)

                }
                else if let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary {

                    guard let jsonArray = json as? [String: Any] else {
                        callback([])
                        return
                    }

                    callback([jsonArray])

                }
                else {
                    callback([])
                }

            }
            catch _ {
                callback([])
            }
        }
    })
    task.resume()
}

大概您使用的模拟器没有实现任何系统调用97。