2017-01-02 5 views
2

Ich habe ein PGM-Foto, das ich versuche zu öffnen und in MIPS lesen. Wenn die Werte in der PGM-Datei ASCII sind, funktioniert alles wie erwartet. Wenn sie im HEX-Format sind, liest der Syscall 14 (read) nur ein paar Werte und stoppt dann und ich habe nur einen Teil der Datei im Puffer.Lesen aus einer Binärdatei in MIPS

To the left HEX - not working, to the right ASCII - working. Same file Auf der linken Seite HEX - nicht arbeiten, nach rechts ASCII - arbeiten. Gleiche Datei.

Das ist mein Code (der Puffer in Datenbereich deklariert und hat genug Platz, um die Datei zu verteilen)

#open a file 
    li $v0, 13 #Syscall for loading files 
    la $a0, image_file #Saving the address to $a0 
    li $a1, 0  # flag for reading 
    li $a2, 0  # mode is ignored 
    syscall 
    move $s6, $v0 #Placing the descriptor in $s6 for later-use 

#read from file 
    li $v0, 14 #Syscall to read from files 
    move $a0, $s6 #Moving descriptor to $a0 
    la $a1, buffer # address of buffer to which to read 
    li $a2, 65555  # hardcoded buffer length 
    syscall 
+0

Haben Sie schon etwas herausgefunden? Wenn Sie dies getan haben, können Sie auch Ihre eigene Frage beantworten. – szoszk

Antwort

1

Die Antwort ist, dass die tatsächlich die gesamte Datei zu lesen, die Konsole zeigt nur nicht alles wegen des EOF-Zeichens. Sobald Sie die Datei gespeichert haben, müssen Sie erneut die genaue Länge der Datei angeben, so dass alles und nicht nur die Daten bis zum EOF-Zeichen gespeichert werden können.