4 ProzessorDatenpfad Assembler als Übersetzer Um ein AssemblerProgramm für den Universalrechner zu übersetzen iteriert der Assembler der Reihe nach über alle Programmzeilen und führt für jede Zeile folgendes aus Wenn die Programmzeile leer ist (nur Leerzeichen Tabulatorzeichen und ZeilenumbruchZeichen enthält) wird die Zeile ignoriert Wenn die Programmzeile nicht leer ist wird das erste Wort (alle Zeichen bis zum ersten Leerzeichen oder Tabulator) als BefehlsZeichenkette interpretiert und das zweite Wort als OperandenZeichenkette; die OperandenZeichenkette wird bei den Kommas in zwei bzw drei Operanden aufgetrennt; entspricht die BefehlsZeichenkette der Zeichenkette INPUT wird vom erste Operanden das R entfernt das übrigbleibende Zeichen in eine Zahl gewandelt und diese im Befehlswort als D abgespeichert (zb D = für R D = für R ) der zweite Operand im Befehlswort als M abgespeichert (zb M = falls zweiter Operand den Wert hat) entspricht die BefehlsZeichenkette den Zeichenketten ADD oder SUB oder MUL oder DIV wird von den drei Operanden das R entfernt und die übrig bleibenden Zahlen im Befehlswort als D (erster Operand) M (zweiter Operand) und M4 (dritter Operand) abgespeichert und der Wert von M bei ADD auf gesetzt bei SUB auf bei MUL auf bei DIV auf und M auf gesetzt; = entspricht die BefehlsZeichenkette der Zeichenkette SQRT wird von beiden Operanden das R entfernt und die übrig bleibenden Zahlen im Befehlswort als D (erster Operand) bzw M4 (zweiter Operand) abgespeichert M auf und M auf gesetzt;
4 Assembler entspricht die BefehlsZeichenkette der Zeichenkette SET wird vom ersten Operanden das R entfernt und die übrig bleibende Zahl im Befehlswort als D abgespeichert der zweite Operand in K abgespeichert (zb für oder für M auf und M auf gesetzt Neben dieser Grundfunktionalität würde ein richtiger Assembler auch noch diverse Fehlerüberprüfungen durchführen beispielsweise ob nur gültige Befehle und Operanden verwendet wurden ob alle Operanden angegeben sind ob das Format der Operanden stimmt ob die Konstanten nicht zu groß sind etc Das Grundprinzip jedoch ist immer das selbe AssemblerProgramme werden durch eine eindeutige Abbildungsregel in Befehlsworte übersetzt Betrachten Sie die folgende Codesequenz INPUT R MUL RRR INPUT R MUL RRR = ADD RRR SQRT RR loon Befehlsformat K ( Bit) D ( Bit) M4 ( Bit) M ( Bit) M ( Bit) M ( Bit) a) Übersetzen Sie das Programm in Befehlsworte des Universalrechners mit Hilfe obiger Übersetzungsregeln Geben Sie für alle irrelevanten Bits x an ^^^ xxxxxxxxxxlooolxxxlxkxkxxloo XXXXXXXK X xxxkx x Kx X Xxx XXX XXX X xxxxxxxx Xx = Xxx IXXXKXH on xxxxxxx xx nod ) xxx
" ^ ) ' ' ' tee'+ 4 ProzessorDatenpfad 8=56 Betrachten Sie die folgende Codesequenz hhfdegbejiejdcz ^^ MUL RRR SET R55 DIV RRR ADD RRR k4m 9 M b) Übersetzen Sie das Programm in Befehlsworte des Universalrechners mit Hilfe obiger Übersetzungsregeln Geben Sie für alle irrelevanten Bits x an XXXIKXX SET O= Betrachten Sie die folgende Codesequenz SET R INPUT R ADD RRR INPUT R ADD RRR INPUT R ADD RRR SET R DIV RRR T c) Übersetzen Sie das Programm in Befehlsworte des Universalrechners mit Hilfe obiger Übersetzungsregeln Geben Sie für alle irrelevanten Bits x an
4 Assembler Betrachten Sie den Datenpfad des Universalrechners SUB b a ab MUL ADD DIV b a a/b 7 6 5 4 4 7 6 5 4 D D6 D5 D D A7 A D D M M4 M M a b c Add clk reset 7 6 5 4 D D R7 R6 R5 R4 R R R R M M M M4 D BZ p X 5 M A A M4 M M M D4 D7 D8 D D9 D D4 D R K MSB n n
4 4 ProzessorDatenpfad iii } nf in then } Gegeben ist folgende Codesequenz SET R5 M A 4 INPUT R4 ~ QUELL d) ADD RRR ZIEL DIV R7RR Übersetzen Sie das Programm in Befehlsworte des Universalrechners lediglich mit Hilfe des Datenpfads (ohne Übersetzungsregeln) Geben Sie für alle irrelevanten Bits x an XXXIXXX XXX xxxxln Xxx ^ Xxx xx Xl ^ X Xxx # Xxx xxxxxxxxxx QUEL ^ ^^^ Gegeben ist folgende Codesequenz SET R SQRT RR INPUT R MUL ^^ R5RR T e) Übersetzen Sie das Programm in Befehlsworte des Universalrechners lediglich mit Hilfe des Datenpfads (ohne Übersetzungsregeln) Geben Sie für alle irrelevanten Bits x an Xxx KXXIO ^ Xkxxxxxxxxldl ^ XXX XXXXX xxxxx xxxvixxirxx Xxktxkaqyn ^^^
6 MMIXProzessor Verständnisfragen/Aufgaben Allgemein T a) Was ist ein Register? Kleiner Schneller Speicher T b) Wo findet man Register in einem ComputerSystem? Hovptprozessor steering von external Geroiten T c) Daten welcher Größenordnung kann ein Register aufnehmen Byte kilobytes megabytes gigabytes or terabytes? In der Regel wenige Bytes Allzweckregister a) Was sind Allzweckregister? b) Geben Sie ein Beispiel für eine typische Verwendung eines Allzweckregisters an c) Über wieviele Allzweckregister verfügt der MMIXProzessor? Welche Namen haben sie? Hat keinen bestimmten Zweckczb Steuerung von Hardware stew fr Programme pei sur Quell 56 und Vertusuns Zidperandea to ' arithuetasne Betake $ $55 )
6 Register T d) Was ist der Unterschied zwischen einem globalen und einem lokalen Register? Global ; Uerwendng von allen Programmfglen lokal ; Uerwendmg von einzdna Funktionen Spezialregister a) Was ist ein Spezialregister? sie Sind dem Prozessor aof warden zur un ssfeuarvng Hardware uerwendet b) Geben Sie eine typische Anwendung eines Spezialregisters an T c) Über wieviele Spezialregister verfügt der MMIXProzessor? Wie werden sie genannt (Prinzip)? ade enthalteu status information en Rundungsinodus for Gleitkomma Operation RA RZ T d) Kann jeder MMIXBefehl Spezialregister verwenden? Nein FYY Befehle GET Clesca ) RBB NT RZZ rwwirxx PUT Scheiber ) T e) Welches Spezialregister stellt Informationen über Arithmetische Operationen zur Verfügung? D T f) In welchem Spezialregister kann man die oberen 64 Bit eines 8 Bit breiten FestkommaDividenden ablegen?
4 6 MMIXProzessor T g) In welchem Register werden die oberen 64 Bit des Ergebnisses einer Festkomma Multiplikation abgelegt? T h) In welchem Spezialregister legt das Rechenwerk den Rest einer Festkomma Division ab? R i) Müssen normale Programme häufig auf Spezialregister zugreifen? Nein 64 Bit Festkomma genavigkeit in de Rogel uotlig ausreidrend j) Was müssen Sie tun wenn Sie einzelne Bits eines Spezialregisters verändern wollen? o GET Kiel ist ein Altwedrgistef AR bearbeiten o PUT Czid SR ) Die letzte Aufgabe hat gezeigt dass zur Bearbeitung von Spezialregistern zwei zusätzliche Befehle ausgeführt werden müssen Diese Ausführung kostet Zeit k) Können Sie sich einen Grund vorstellen warum nicht alle MMIXBefehle in Spezialregister schreiben bzw Spezialregister lesen können? Hardware eintade schnelle 4854 Zugrilt auf * 5 langsauner Da Zugnitt of SR die seller ibarwiegt @
4 6 MMIXProzessor Aufgaben Verständnis Speicher T a) Wozu verwendet ein Computer Arbeitsspeicher? Speicher non Paten gearbeitetwird unit denen gerade T b) Wo findet man den Arbeitsspeicher in einem Computersystem? Auf dem ProzessorKern? Auf dem Mainboard? Als externes Gerät? Main board T c) Sind Zugriffe auf den Arbeitsspeicher in der Regel schneller oder langsamer als Zugriffe auf Register? Nein Register Sind uid Schneller As vid Schneller als Festplattenzognilte T d) Begründen Sie Ihre Antwort auf die letzte Frage Register direkt in Processor ksrze Wegetkleinere kapazitaten AS moss Tba Datenbus
89 BYTE TETRA 6 Speicher 5 Alignment T a) Welche Wortbreiten werden bei Speicherzugriffen vom MMIX unterstützt? Wie werden diese genannt? 8 Bit ( BYTE ) 6 Bit ( WYDE ) bit ( Tetra T b) Wofür steht der Begriff Alignment? 64 Bit ( OCTA ) OCTA Ausrichtung Konner ibarall gespeidetwede WYDE nor an A dresser die dwcszteiksra " u " n 4 teilba Sind 8 teilbarsind T c) Warum wird Alignment angewendet? Dadurd wirdsidegestekt jedes Datenwort mit einem einzigen dass Speiderzugnilt ausgelesa Werder Kann 4 Adresse T d) Was würde passieren wenn ein 64 Bit breites Datenwort an einer durch 4 aber nicht durch 8 teilbaren Adresse abgelegt werden würde? Speiderzugiftenotig A ^4567 in
6 6 MMIXProzessor T e) Welche Eigenschaft müssen Byte Wyde Tetra und OctaAdressen beim MMIX haben? BYTE heine Ensdroinkurg WYDE dvrd Wei teilbar bzw letdes Adressbito TETRA dvrd Vier teilba ' bzw letter Adressbits OCTA dweh 8 teilbar bzu letter Adrcssbitsc Big und LittleEndian a) Welche Art von Daten betrifft die Abspeicherung als Big oder LittleEndian? b) Verwendet der MMIXProzessor Big oder LittleEndian? c) Was bedeutet Big und LittleEndian? Was ist der Unterschied? d) Wie wird die 6 BitZahl x4 im Speicher an der Adresse x abgelegt im Falle einer BigEndian und einer LittleEndianMaschine? Adresse Big Endian Little Endian x x
6 Speicher 7 Hexadecimal TETRA T e) Wie wird im Speicher an der Adresse x8 die BitZahl 55 x45678 abgelegt im Falle einer BigEndian und einer LittleEndianMaschine? Adresse Big Endian Little Endian tex x8 78 x9 4 56 xa 56 4 xb 78 dine f) Wie wird im Speicher an der Adresse x8 die 64 BitZahl ox 45678 abgelegt im Falle einer BigEndian und einer LittleEndianMaschine? xa HEX ' Adresse Big Endian Little Endian x8 ( x9 xa xb xc o xd xe xf oxoo 78 56 4 78 oooo r 4 56 78 Bit Zahl
Service Das 8 6 MMIXProzessor Speicherorganisation T a) Was wird im Textsegment gespeichert? o Programme de Direktopeanden lnterruptuektoren T b) Was ist ein Interrupt? 5 Interrupt Program 5h gesprungen Routine wird unto broken end in die end Aosgetehrt Program wind an der untubrochena slellefartgefihrt T c) Nennen Sie ein Ereignis bei dem ein Interrupt auftreten kann Division durch O exlerne Hardware Times T d) Was sind Interruptvektoren? Barcia in Arbeitsspeider Actresses ode Verzweigungen Werder gespeidert in den zu 5/ T e) Was wird im Datensegment gespeichert? o Variable Von niednign hohenea Adressen ru Stack Von hoiheren zu Hdrcssen hiedrigeren