2017-03-12 3 views
0

Ich besuche einen Universitätskurs, der laut Spezifikation "Computer architecture a quantitativ approach" zu folgen versucht.Mips erste Schritte - Spim: Syntaxfehler

Unsere Aufgabe war es, eine Insert-Sortierung in MIPS zu schreiben, aber ich weiß nicht, wie ich meinen Code debuggen oder sogar kompilieren sollte. Die Schulwebseite verweist auf gcc-mips-elf und MipsIt aus dem Buch.

Problem ist, ich benutze arch statt debian so gcc-mips-elf ist nicht verfügbar und MipsIt erfordert emulator, also habe ich mich entschieden, mit nativen Simulator QtSpim gehen, die ich in arch Datenbank gefunden habe.

Aber wenn ich versuche, die Vorlage von natürlich Web-Seite auszuführen, wirft spim einen Fehler: syntax error on line 17 ... .word 5, 3, 4, 1, 2

#define t0 $8 
#define t1 $9 
#define t2 $10 
#define t3 $11 
#define t4 $12 

#define s0 $16 
#define s1 $17 
#define s2 $18 
#define s3 $19 

    .globl field 
    .data 
    .align 2 

field: 
    .word 5,3,4,1,2 

    .text 
    .globl start 
    .ent start 

start: 
    // your code goes here 
    nop 
    .end start 
+1

Dieser Code erscheint geschrieben zu werden mit dem GNU-Assembler zusammengebaut werden. Es ist nicht kompatibel mit SPIM. Die '.word' Direktive ist kein Problem und verursacht bei QtSpim unter Windows keinen Syntaxfehler. Alle diese "# define" Zeilen werden jedoch als Kommentare von SPIM betrachtet, '.end' und' .ent' haben nach meiner Kenntnis keine Bedeutung für SPIM, und ein SPIM-Programm muss eine 'main'-Bezeichnung haben. – Michael

+1

Wenn Sie MIPS-Assembly (im Gegensatz zu x86) verwenden möchten, schauen Sie sich MARS (http://courses.missouristate.edu/KenVollmar/mars/) an, ich finde es viel einfacher zu benutzen als SPIM. – Zack

+0

Wenn Sie Computer-Architektur lernen möchten, statt mit Tools zu fuzz zu lernen, führen Sie einfach die empfohlenen Tools auf der empfohlenen Verteilung. – markgz

Antwort

0

Die .word Assemblerdirektive behält sich für den Wert ein einzelnes Wort in Speicher, der folgt. Der Assembler lässt keine Liste von Werten zu, wie Sie sie nach der Assembler-Anweisung angegeben haben. Wenn Sie dies stattdessen in 5 separate Assembler-Anweisungen aufteilen, sollte dies den Syntaxfehler beheben.

Insbesondere sollten Sie ersetzen:

.word 5,3,4,1,2

mit:

.word 5 
.word 3 
.word 4 
.word 1 
.word 2