SPIM-Tutorium 1 - Institut für Informatik
SPIM-Tutorium 1 - Institut für Informatik
SPIM-Tutorium 1 - Institut für Informatik
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Technische Grundlagen der <strong>Informatik</strong> II<br />
<strong>SPIM</strong>-<strong>Tutorium</strong> 1<br />
Abgabe bis spätestens 4. Juni 2007, 17:00 Uhr, Übungskästen im Foyer des EG von<br />
Haus 4<br />
In den <strong>SPIM</strong>-Rechnerübungen sollen Sie mit dem <strong>SPIM</strong>-Simulator vertraut werden, den<br />
Aufbau des zugrundeliegenden MIPS-Prozessors kennenlernen, den Zusammenhang zwischen<br />
den einzelnen Stufen der Programmierung (High-Level-Language, Assembler, Maschinencode)<br />
erkennen und die Abarbeitung der Assembler-/Maschinenprogramme in der<br />
Simulation beobachten. Als Literatur zum <strong>SPIM</strong>-Simulator/MIPS-Prozessor empfehlen<br />
wir Ihnen:<br />
Gerry Kane und Joe Heinrich, MIPS RISC Architecture, Prentice Hall 1992, oder in dem<br />
Buch von David Patterson und John Hennessy, Computer Organization and Design - The<br />
Hardware / Software Interface, Morgan Kaufmann Publishers, 1994 (auch in Deutsch<br />
verfügbar). Auf den Webseiten zur Übung finden Sie den Link zu Dokumentation (in englisch).<br />
In den Übungsblättern werden Erläuterungen zu den inhaltlichen Schwerpunkten<br />
des <strong>Tutorium</strong>s gegeben.<br />
Der <strong>SPIM</strong>-Simulator ist als Software frei verfügbar, es gibt Versionen <strong>für</strong> Windows9x/NT<br />
und Linux. Die neuesten Versionen sind direkt unter<br />
http://www.cs.wisc.edu/∼larus/spim.html<br />
verfügbar. Auf den Webseiten zur Übung finden Sie ebenfalls die den Link zum Softwaredownload.<br />
In den Rechnerpools (PC-Labore 1.03 und 1.04) des <strong>Institut</strong>s <strong>für</strong> <strong>Informatik</strong><br />
ist <strong>SPIM</strong> unter Linux und Windows XP installiert.<br />
In den Rechnerübungen finden Sie Aufgaben zum Kennenlernen des Simulators und zur<br />
Vorbereitung auf die Aufgabe, deren Lösung Sie abgeben sollten. Vom ersten Übungsblatt<br />
sollen alle Aufgaben gelöst und abgegeben werden. Zur Aufgabe wird angegeben, ob der<br />
Assemblertext als Email einzusenden ist. Analog zum Einwurf der schriftliche Lösungen<br />
in die Kästen gibt es drei verschiedene Mailadressen:<br />
spimeins@cs.uni-potsdam.de <strong>für</strong> Übungsgruppe 1<br />
spimzwei@cs.uni-potsdam.de <strong>für</strong> Übungsgruppe 2<br />
spimdrei@cs.uni-potsdam.de <strong>für</strong> Übungsgruppe 3<br />
Bitte geben Sie als Subject die Nummer des <strong>SPIM</strong>-Aufgabenblattes an.<br />
Die Lösungen sind als Attachment der Mail anzufügen. Jedes Assemblertextfragment ist<br />
als einzelne Datei (ASCII) zu liefern. Der Dateiname ergibt sich wie folgt:”Ihr Name”**.s<br />
oder ”Ihr Name”**.asm. ** ist durch die Spimblattnr. Aufgabennummer zu ersetzen. Im<br />
Vorspann der Datei muß Ihr Name und das benutzte System (WindowsXP/Linux/Solaris)<br />
angegeben sein. Da jedes Übungsblatt auch einen schriftlich abzugebenen Anteil hat, sind<br />
die Programmausdrucke diesem beizulegen. Auf den Programmausdrucken werden die<br />
1
Korrektoren die erreichten Punkte und Bemerkungen anbringen. Programme sind zu kommentieren.<br />
Fehlende Kommentare führen zu Punktabzug! Programme, die nicht<br />
im Simulator laufen, werden nicht genauer untersucht. Fehler, die durch die unerschiedlichen<br />
Betriebssysteme auftreten, führen nicht zu Nachteilen in der Bewertung.<br />
Zu den Aufgaben:<br />
• Benutzen Sie zur Eingabe des Assemblerprogramms einen Editor ihrer Wahl (kein<br />
Textverarbeitungsprogramm). Die Dateien sollten die Extension *.s oder *.asm<br />
haben.<br />
• Die nötigen Informationen zur Syntax und zum Aufbau der Programme finden Sie<br />
in der Dokumentation bzw. in den Beispielen der Einführungsveranstaltung.<br />
• Das Programm wird dann in den Simulator geladen.<br />
Aufgabe 1. Erstes <strong>SPIM</strong>-Programm (–)<br />
Starten Sie eine beliebigen Texteditor. Geben Sie folgendes Programmfragment mit Hilfe<br />
des Texteditors ein uns speichern Sie es unter dem Namen name01_01.s.<br />
#####################################################<br />
#<br />
# Mein erstes <strong>SPIM</strong>-Programm<br />
#<br />
####################################################<br />
#<br />
# Autor: "Hier sollte Ihr Name stehen"<br />
# erstellt am: "Datum"<br />
# System: Linux/windows XP o.a.<br />
#<br />
###################################################<br />
# Hier beginnt der Programmtext<br />
main:<br />
.text<br />
.globl main<br />
la $t0, werte<br />
lw $t1, 0($t0)<br />
lw $t2, 4($t0)<br />
add $t3, $t2, $t1<br />
sw $t3, 8($t0)<br />
nop<br />
nop<br />
.data<br />
werte: .word 12, 111, 0<br />
2
Starten Sie den <strong>SPIM</strong>-Simulator wie folgt:<br />
• Unter Linux: Wechseln Sie in einem Terminal in das Verzeichnis /usr/local/spim/xspim<br />
und geben Sie das Kommando ./xspim &. Laden Sie das Programmfragment in<br />
den Simulator (absoluten Pfad angeben) oder starten Sie das Programm mit dem<br />
Kommando /usr/local/spim/xspim. Dazu mus vorher die Datei exception.s in das<br />
entsprechende Verzeichnis kopiert worden sein.<br />
• Unter Windows XP: Start über PCSpim-Desktop-Icon.<br />
Was leistet dieses Programm? (Anweisungsfolge notieren) Welche Aktion hat die erste<br />
Anweisung nach der Marke main zur Folge?<br />
Aufgabe 2. Arithmetischer Ausdruck (–)<br />
Gegeben ist folgender arithmetische Ausdruck:<br />
y = ((a + c) ∗ (a − c) − b) ∗ ((a + b) − 7)<br />
Schreiben Sie ein MIPS-Assemblerprogrammstück, welches den Wert y berechnet. Die<br />
Variablen a, b und c sollen in den Registern $s0, $s1, $s2 stehen. $t0 bis $t7 können als<br />
temporäre Register benutzt werden. Das Ergebnis y soll in $v0 stehen.<br />
Benutzen Sie dabei folgende arithmetische Operationen:<br />
add Ziel, Quelle1, Quelle2<br />
mulo Ziel, Quelle1, Quelle2<br />
sub Ziel, Quelle1, Quelle2<br />
Addition<br />
Multiplikation<br />
Subtraktion<br />
Belegen Sie die Register mit der set value-Funktion des Simulators und berechnen Sie<br />
y. Ergänzen Sie in untenstehender Tabelle die errechneten Werte.<br />
a b c Ergebnis y<br />
123 7 9<br />
9 15 1<br />
1 1 778<br />
3
Aufgabe 3. Bitfolge (4)<br />
Programm als Email-Attachment<br />
Schreiben Sie ein MIPS-Assemblerprogramm (Eingabe der Bitfolge über die Konsole),<br />
welches die Bits in Register $t0 umdreht. (z.B.<br />
Vorher: 0100 1001 1100 1110 0000 0000 0000 0000<br />
Nachher: 0000 0000 0000 0000 0111 0011 1001 0010)<br />
Aufgabe 4. Matrixverwaltung (6)<br />
Programm als Email-Attachment<br />
Legen Sie im Datensegment eine Matrix der Größe (n,m) ab. (n und m beliebig, aber<br />
fest, n,m >2) Initialisieren Sie die Matrix mit beliebigen Werten. Berechnen Sie im MIPS-<br />
Programm die Summe aller Matrixelemente. Achten Sie auf die Adressierung! Geben Sie<br />
das Ergebnis der Berechnungen über die Konsole aus.<br />
Bitte beachten Sie die Abgabemodalitäten <strong>für</strong> die einzelnen <strong>SPIM</strong>-Aufgaben!<br />
Bitte geben Sie Ihre Lösungsblätter geheftet mit Namen,<br />
Matrikelnummern sowie die Übungsgruppennummer versehen ab!<br />
Dozent: Prof. Dr. rer. nat. Christophe Bobda<br />
Übungskoordination: Petra Vogel<br />
4