1. Hur du navigerar dig runt i MISSE

MISSE består av flera olika fönster och vyer som underlättar både programmering och simuleringen av ett MIPS-program.
Dessa är indelade enligt följande :
  • Huvudfönstret
  • En sammansatt kombination av en editor, verktygslåda, information angående registren samt ett status-fönster.
  • Huvudmenyn
  • Verktygslådan
  • Snabbåtkomst till de vanligaste funktionerna för kompilering och exekvering.
  • Register View
  • Visar innehållet i alla register under exekveringen.
  • Instruction View
  • Indikerar följande instruktion i tur att exekveras, samt också opcoden för den kompilerade instruktionen.
  • Memory View
  • Visar innehållet i minnet.
  • Status View
  • Visar bl.a. alla fel-meddelanden som kan inträffa.
  • Set Value
  • Möjliggör manuell lagring av värden antingen till minnet eller till ett register.

    1.1 Huvudfönstret

    MISSE är designat så att alla viktigaste funktioner under utvecklingen och simuleringen finns tillgängliga i huvudfönstret. Ibland kan det dock hända att man vill ha ytterligare information om programmets simulering och det är då som de övriga fönstren kommer i användning.

    På titel-raden står alltid namnet på den fil man editerar. Ifall man valt File->New (dvs. en ny fil) så kommer texten Untitled att visas.
    Ytterligare står där versionnumret på MISSE; 0.8.201004 berättar att senaste uppdateringen inträffade 20. oktober 2004.




    1.2 Huvudmenyn



    File-menyn sköter om sånt som har med filer att göra

  • New -- Raderar nuvarande programmet från minnet och skriver ut en färdig mall för ett nytt mips-program i editor-fönstret.
  • Open -- Laddar in ett nytt mips-program.
  • Save -- Sparar det nuvarande programmet. Ifall man inte ännu sparat sitt nuvarande mips-program så kommer ett Save File-fönster fram som låter dig välja bl.a. filnamnet för ditt program. Se också till att du befinner dig inom ditt eget hemområde.
  • Save As -- Sparar det nuvarande mips-programmet med ett nytt namn. Namnvalet sker via Save File-fönstret.
  • Quit -- Avslutar MISSE.

  • Edit-menyn är till för hantering av markerad text.

  • Cut -- Klipper bort den text som är markerad.
  • Copy -- Kopierar den markerade texten in i Clipboarden.
  • Paste -- Infogar text som finns i Clipboarden till nuvarande markör-position.
  • Select All -- Markerar all text i editor-fönstret.

  • Simulation-menyn hanterar simuleringsmässiga uppgifter. Dessa kan även kontrolleras via Verktygslådan.

  • Set Value -- Öppnar Set Value-fönstret, se nedan.
  • Compile -- Kompilerar nuvarande mips-programmet till körbar format.
  • Reset -- Startar om simulatorn så att exekveringen kan påbörja. Måste alltid utföras efter en simulation innan en ny kan påbörjas.
  • Step -- Exekverar en instruktion.
  • Run -- Exekverar hela mips-programmet tills det är färdigt eller tills Pause används.
  • Pause -- Avbryter exekveringen. Exekveringen kan sedan fortsättas från nuvarande position, antingen med Step eller Run.

  • Settings-menyn låter användaren konfigurera vissa bekvämlighetsfaktorer som typsnitt.

  • Fonts -- Öppnar ett fönster varifrån man kan välja diverse typsnitt för bl.a. editor-delen.
  • Line Wrap -- Anger ifall långa rader ska skrivas som flere rader eller som en enda kontinuerlig rad.
  • Word Wrap -- Anger ifall ord ska brytas vid radbyte eller ej.

  • Från Window-menyn kan man välja att öppna respektive stänga olika fönster i MISSE.

  • Show Instruction Window -- Öppnar/Stänger fönstret som visar de kompilerade instruktionerna.
  • Show Memory Window -- Öppnar/Stänger fönstret med minnes-information.
  • Show Console -- Öppnar/Stänger konsolen (ett fönster som fungerar som gränssnitt mellan användaren och det simulerade programmet. Kan programmeras mha. speciella syscalls (se närmare i boken)).


  • 1.3 Knapparna i verktygslådan

    Start Simulation knappen används för att starta en simulering av programmet. Innan man kan påbörja en simulation måste programmet först kompileras med Compile -knappen. Efter att simuleringen avslutats måste Reset -knappen användas innan en ny simulering kan påbörjas.
    Step Instruction exekverar programmet med en instruktion i taget. Programmet måste först kompileras innan denna knapp blir tillgänglig. Ifall simuleringen av programmet blir färdigt måste Reset -knappen användas innan en ny simulering kan påbörjas.
    Notera att Instruction View-fönstret (nedan) kommer att bli synligt, ifall den inte ännu aktiverats från menyn.
    Pause Simulation avbryter simuleringen. Simuleringen kan fortsättas från nuvarande punkt, antingen med Start Simulation eller Step Instruction. I normala fall, då exekvering av ett linjärt program utförs, så hinner simuleringen bli färdig innan Pause Simulation knappen blir tillgänglig.
    Reset nollställer minnet samt registren till sina respektive ursprungliga lägen samt laddar in programkoden i minnet. Data som manuellt lagrats i minnet mha. Set Value kommer att raderas. Reset ser också till att sätta MISSE i ett ready-läge så att en simulering kan påbörjas med Start Simulation eller Step Instruction.
    Compile assemblerar koden till riktiga maskininstruktioner och lagrar dessa i minnet. Compile ser också till (precis som Reset) att försätta MISSE i ett ready -läge så att en simulering kan påbörjas.
    Set Value öppnar ett fönster som kan användas till att lagra ett godtyckligt värde antingen i minnet eller till ett register.

    1.4 Register View


    Register View visar nuvarande innehåll för alla register.

    Oberoende om man kör hela programmet på en gång eller step:ar igenom programmet en instruktion i taget så kommer alla hittils modifierade register att ha markerats med grönt. Ifall man utför stegvis exekvering av programmet med Step instruction så kan man även se senast modifierade register med röd färg.

    Nedan en kort beskrivning över de vanligaste registren :

  • PC
  • Program Counter. Anger adressen för följande instruktion i tur att exekveras.
  • HI och LO
  • Resultat-register för multiplikation och division. Vid multiplikation kommer de övre 32 bitarna av resultatet att lagras i HI och dom 32 lägsta bitarna i LO. Vid division kommer divisionsresten att lagras i HI och kvoten att lagras i LO.
  • zero
  • Register 0 innehåller alltid värdet 0, oberoende hur mycke man än skriver dit.
  • at
  • Assembler Temporary. Används av kompilatorer för att skriva om pseudo-instruktioner till riktiga instruktioner.
  • v0 och v1
  • Används av funktioner för att returnera ett värde.
  • a0 - a3
  • Argument-register. Används vid tilldelning av argument åt funktioner i funktionsanrop.
  • t0 - t7
  • Temporära register. Dessa kan fritt användas av funktioner men deras innehåll är inte garanterad att hållas konstant efter ett funktionsanrop.
  • s0 - s7
  • Fritt användbara register. Dessa register bör dock i början av en funktion alltid lagras på stacken för att garatera innehållet åt tidigare funktionen (som gjorde funktions-anropet).
  • sp
  • Stack Pointer pekar alltid på stacken. Vill man lagra data på stacken bör man först minska på stackpekaren innan man börjar lagra nånting dit. När man frigör minne på stacken så ökar man på stackpekaren. Vanligaste funktionaliteten för stacken är att man dit lagrar undan registrens värden i början av en funktion, och innan man returnerar från en funktion så hämtar man tillbaka värdena till registren. Värdet för stackpekaren måste vara samma före och efter ett funktionsanrop.
  • ra
  • Return Address. Återhoppsadressen för en funktion bör alltid finnas lagrad i detta register.
  • k0 och k1
  • Kernel Register. Reserverade åt operativsystemet.

    Närmare information om registren hittar du i kursboken på sid 103.

    1.5 Instruction View

    Instruction View är ett fönster som inte är synligt när du startar MISSE, men såfort du börjar använda Step Instruction så dyker den automatiskt fram.
    Ifall man vill öppna fönstret, även om man inte tänkt använda Step-funktionaliteten, så kan man välja Show Instruction View från Window-menyn.

    Varje rad motsvarar en instruktion och följande instruktion i tur att exekveras markeras alltid med röd färg.



    Fönstret är indelat i följande fyra kolumner :
  • Address
  • anger adressen som instruktionen finns lagrad på. Adressen är given i hexadecimal notation.
  • Opcode
  • visar instruktionen som ett 32-bitars hexadecimalvärde.
  • Instruction
  • själva instruktionen; skiljer sig i representation från den egentliga, i editorn inskrivna, instruktionsraden.
    T.ex. representeras alla register enbart med sitt riktiga namn, dvs. med siffror.
  • Line
  • radnumret för instruktionen i källkoden.

    1.6 Memory View

    Här visas all den data som lagrats i det simulerade minnet. Minnet uppdateras varje gång en kompilering eller Reset utförs. Likaså hålls minnet up-to-date vartefter simuleringen fortskrider, både vid stegvis- och normal exekvering.

    Varje rad i Memory View specifierar ett minnesområde på åtminstone 4 bytes (dock alltid en multipel av 4).



    Fönstret är indelat i följande fyra kolumner :
  • Address
  • Anger adressen (ibland även slutadressen) som ett (eller flera) ord1 finns lagrat på. Adressen är alltid en multipel av 4 bytes.
  • #
  • Antalet konsekutiva bytes som finns på adressen.
  • Value
  • Ordet1 som finns lagrad, eller som upprepas # antal bytes, fr.o.m. adressen som specifieras av Address -fältet.
    OBS! om man tolkar ordet som fyra skilda bytes så kommer dessa bytes att vara i omvänd ordning jämfört med den text som visas i Text-kolumnen. Detta beror på att MISSE körs på en little-endian-arkitektur. (Mera om little-endian och även big-endian hittar du i boken på sid 28.)
  • Text
  • Visar det lagrade ordet1 som fyra ascii-tecken och underlättar representationen av text-strängar i allmänhet.
    Bytes med lägre värde än 32 representeras av en punkt.
    1) Ord innebär ett 32-bitars värde, dvs. 4 bytes.

    En närmare beskrivning på Address-fältet :
  • Text Segment
  • Meddelar att följande adresser förekommer inne i Text-segmentet. Text-segmentet innefattar adressområdet 0040000016 - 0fffffff16. Detta är också det minnesområde dit ditt program normalt lagras.
  • Data Segment
  • Data-segmentet används för ditt programs variabler, med undantag för de variabler som finns på stacken. Adressområdet är 1000000016 - 3fffffff16.
  • Kernel Text Segment
  • Kernel Text-segmentet innehåller i vanliga fall operativsystemets programkod. I MISSE:s fall är detta område alltid tomt när man väljer File->New från huvudmenyn. Adressområdet är 4000000016 - 7fffffff16. Även stacken har sitt arbetsområde inom detta segment.
  • Kernel Data Segment
  • I detta segment kan operativsystemet lagra sina variabler samt övrig data. Utöver operativsystemet så använder sig även utomstående apparatur, som grafikkort, nätkort etc. detta adressområde för kommunikation med operativsystemet. MISSE använder detta område även för att accessera grafik-fönstret (under konstruktion när detta skrevs). Adressområdet för detta segment är 8000000016 - ffffffff16.
  • Misc RAM
  • Misc RAM är inte ett officiellt namn för detta segment, men när dokumentationen var bristfällig så döptes detta segment till just Miscellaneous RAM. Detta segment har adressområdet 0000000016 - 003fffff16 och har ingen större betydelse inom DatorTeknik -kursen.
  • [00400000]
  • Anger adressen för ett enda ord i minnet.
  • [00400004 .. 00400ffc]
  • Anger adressområdet för konsekutiva ord i minnet där varje ord har samma innehåll.
    OBS! även om adressområdet slutar på 00400ffc16 så kommer det sista ordet ändå att använda sig av addressen fram till t.o.m. 00400fff16.
  • -- empty --
  • Indikerar att ett segment är tomt.

    Förövrigt är Memory View ett fönster som inte är synligt när MISSE startas, utan måste aktiveras genom att från Window-menyn välja Show Memory Window.

    1.7 Status View



    I Status View visas bl.a. alla fel-meddelanden som kan uppstå under kompileringen av ett program. Likaså indikeras alla handlingar som användaren gör under utvecklingen av ett program.
    Om man väljer t.ex. New från File-menyn så kommer meddelandet [ New File ] att skrivas ut, och berättar för användaren att ett helt nytt program påbörjats.

    Lagrar man värden till minnet mha. Set Value så kommer adressen och datan ifråga att skrivas ut till fönstret. Blev det fel vid lagringen (t.ex. värdet eller adressen var felaktigt) kommer ett fel-meddelande att skrivas ut.

    Ifall man vill rensa texten i Status View så kan man högerklicka inom dess ramar och från popup-menyn välja Clear Message Window.

    1.8 Set Value

    Set Value-fönstret ger möjligheten att manuellt lagra värden antingen i ett register eller i minnet.
    Set Value är ett fönster som också heller inte visas när MISSE startas, utan fås fram antingen genom att klicka på Set Value-knappen i Verktygslådan eller genom att från Simulation-menyn välja Set Value.



    Fälten och knapparna i Set Value fönstret :
  • Addr/Reg
  • Hit matar man in antingen namnet på ett register, eller så adressen given i hexadecimal notation.
    Ett register kan då vara t.ex. $10 eller $31 (observera '$'-tecknet).
  • Value/String
  • Här skriver man in datan som ska lagras i ovannämnda register eller minnesadress.
    Värdet, ifall det ska lagras i ett register, kan vara antingen i decimal eller i hexadecimal notation. Väljer man att använda hexadecimal notation bör talet även inledas med 0x, dvs. talet 1a9f16 måste skrivas som 0x1a9f.
    Väljer man att lagra in data i minnet så kan detta representeras, förutom i decimal och hexadecimal notation, även som en text-sträng.
    Lagring av en text-sträng kräver dock att texten skrivs innanför citat-tecken, enligt följande: "hello world".
  • Set Value
  • Utför lagringen. Nu kommer även ett meddelande att skrivas ut till Status View.
    Alla inmatade värden kommer även att finnas kvar i pull-down -listan för Addr/Reg samt Value/String -fälten för att underlätta lagringen av samma värde framöver.
  • Close
  • Stänger fönstret.

    <<--- Tillbaka

    MIPS is a registered trademark of MIPS Technologies, Inc.             Senast uppdaterad 25.10.2004