/* * New file */ #include <iregdef.h> .data # address at 0x10000000 # --- insert variables here .text # address at 0x00400000 .globl main main: # --- insert code here jr $31 nop |
|
Påbörjar en kommentering, precis som i Java och C. |
|
Avslutar en kommentering. |
|
Anger att resten av raden är en kommentar. Följande rad kommer inte att tolkas som en kommentar. |
|
Hämtar in en fil som kan innehålla både källkod och deklarationer. iregdef.h är en fil som ger bl.a. möjligheten att använda namn för register, dvs. zero istället för $0. iregdef.h är dessutom en fil som MISSE hanterar internt, denna fil behöver inte existera som en riktig fil på ditt hemområde. |
|
Alla variabler som deklareras under .data kommer att hamna i Data-segmentet. .data kan även ta emot ett argument, ett hexadecimalt tal, som anger adressen fr.o.m. vilken variablerna kommer att lagras. Ifall inga argument anges kommer denna adress att vara 0x10000000, eller första lediga adress inom Data-segmentet. |
|
All programkod skall alltid hamna innanför Text-segmentet (med undantag för speciella operativsystems-rutiner som hamnar i .ktext). Precis som .data så godkänner även .text att man anger en adress som argument. Lämnar man bort denna kommer instruktionerna att skrivas fr.o.m. adress 0x00400000. |
|
Alla rader som börjar på detta vis, med ett ord efterföljt av ett kolon kallas för label. En label är alltid förknippad med en adress. Detta gör t.ex. referering till en variabel mycke lättare, eftersom man inte behöver veta adressen för variabeln utan använder istället motsvarande label. Likaså används labels när man vill göra programslingor. main-labeln har dessutom en speciell funktion, nämligen att ange startpunkten för programmet. När man startar exekveringen av programmet kommer MISSE att söka redapå just denna main-label och påbörja exekveringen därifrån. |
|
Gör main-labeln till en global label. Funktionsmässigt har detta ingen betydelse för program som nu just simuleras i MISSE, men för den goda konventionens skull så lönar det att lära sig bra mips-programmerings-etikett :-) |
|
En instruktion som hoppar till den adress som finns angiven i register 31 (return address). |
|
En No Operation-instruktion, dvs. instruktionen gör ingenting. Instruktionen krävs dock här eftersom alla hopp-instruktioner (jr ovanför) kräver att det alltid finns en instruktion i hopp-luckan (instruktionen efter en hopp-instruktion). |
addi $8, $0, 15 addi $9, $8, 1 addi $9, $9, -1 |
/* * New file */ #include <iregdef.h> .data # address at 0x10000000 # --- insert variables here .text # address at 0x00400000 .globl main main: # --- insert code here addi $8, $0, 15 addi $9, $8, 1 addi $9, $9, -1 jr $31 nop |
När programmet exekverats färdigt kommer du att märka att tre rader i Register-vyn har markerats med rött respektive grönt.
Grön färg indikerar att dessa register har modifierats nångång under exekveringen, medan röd färg anger det senast modifierade registret. Dessa tre rader är då register $0, $8 samt $9. Register $8 modifierades av den första addi-raden, medan register $9 av den andra och tredje addi-raden. |