29.12.2013 Aufrufe

SPIM-Tutorium 1 - Institut für Informatik

SPIM-Tutorium 1 - Institut für Informatik

SPIM-Tutorium 1 - Institut für Informatik

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!