2016-07-20 7 views
1

In MIPS, kann ich Speicherplatz zuweisen etwa so:SPIM MIPS simulator assign Nummer zu einem Symbol für die Wiederverwendung später

.data 
space_here: .space 40 # Allocate 40 bytes 

Später, ein SPIM Syscall ich mit einer maximalen String-Länge 40 Bytes in diese lesen kann, Speicherplatz, etwa so:

li $v0, 8 # Syscall number for read string 
la $a0, space_here # Load the address of space_here into a0 register 
li $a1, 40 # This is the maximum chars to load 
syscall 

Doch in Zukunft könnte ich will, dies ändern und stattdessen habe einen 80-Byte-Raum und Last 80 Bytes. Das bedeutet, dass ich beide Vorkommen von 40 bis 80 im Code ändern muss.

Was ich im Idealfall tun möchte, ist durch eine Art Vorverarbeitung zuweisen 40 zu einem Symbol, sagen wir "SPACE_SIZE" dann verwenden Sie einfach dieses Symbol, wenn ich die Größe des Speicherplatzes beziehen muss.

Ist das möglich? Ich habe versucht zu googeln, aber Ressourcen zu finden ist ziemlich schwierig.

Danke.

Antwort

1

Sie möchten die .eqv-Direktive. Es ist vergleichbar mit #define in C oder C++.

.eqv SPACE_SIZE 40 

See: http://courses.missouristate.edu/KenVollmar/mars/Help/MacrosHelp.html

Aber bitte, ob Sie einen besseren Namen dann verwenden können, SPACE_SIZE.

Re google: gefunden mit einer "SPIM MIPS simulator preprocessor" Suche.

+0

Hinweis für zukünftige Leute: Dies ist für die Mars MIPS-Sim, nicht die "Spim" -Sim, die Sie mit apt-get installieren finden können. Weitere Nachforschungen ergeben einen Spim-Präprozessor, der mit dem Befehl 'app' (Assembly-Pre-Prozessor) gestartet werden kann, aber am Ende habe ich nur auf mars umgestellt. Der 'eingebaute' Kernel, auf dem Ihr Programm läuft, enthält mehr syscalls und sogar eine IDE (obwohl Sie trotzdem mit java -jar Mars.jar program laufen können). – ipe369