T a) Welche Wortgrößen kann der MMIX vom Speicher in Register laden? Die MMIX-Ladebefehle unterstützen Wortbreiten von 8, 16, 32 und 64 Bit.

Größe: px
Ab Seite anzeigen:

Download "T a) Welche Wortgrößen kann der MMIX vom Speicher in Register laden? Die MMIX-Ladebefehle unterstützen Wortbreiten von 8, 16, 32 und 64 Bit."

Transkript

1 6.5 MMIX Befehle 265 T a) Welche Wortgrößen kann der MMIX vom Speicher in Register laden Die MMIX-Ladebefehle unterstützen Wortbreiten von 8, 16, 32 und 64 Bit. T b) Was ist der Unterschied zwischen vorzeichenbehaftetem (signed) und vorzeichenlosen (unsigned) Laden Vorzeichenbehaftet: Wenn die Breite des zu ladenden Datenwort kleiner ist als die Registerwortbreite (d.h. 8, 16 oder 32 Bit breites Datenwort in 64 Bit breites Register laden), werden die oberen Bits des Registers mit dem MSB (Most Significant Bit) des zu ladenden Wortes aufgefüllt. Vorzeichenlos: Wenn die Breite des zu ladenden Datenworts kleiner ist als die Registerwortbreite, werden die oberen Bits des Registers mit 0 aufgefüllt. T c) Warum muss man zwischen vorzeichenlosem und vorzeichenbehaftetem Laden unterscheiden Vor vorzeichenlosen Zahlen hat man implizit unendlich viele 0-er stehen, vor vorzeichenbehafteten Zahlen entweder unendlich viele 0-er (positive Zahl) oder unendlich viele 1-er (negative Zahl). Wenn man vor eine vorzeichenbehaftete, negative Zahl 0-er schreibt (was bei den vorzeichenlosen Ladebefehlen der Fall wäre) würde aus der negativen Zahl plötzlich eine andere (falsche) positive Zahl werden (! Fehler). T d) Wie unterscheiden sich die Namen der vorzeichenlosen und vorzeichenbehafteten Ladebefehle Bei vorzeichenlosen Ladebefehlen wird ein zusätzliches U an den Namen angefügt.

2 266 6 MMIX-Prozessor T e) Wie unterscheiden sich die Opcodes von vorzeichenlosen und vorzeichenbehafteten Ladebefehlen Opcode vorzeichenlos = Opcode vorzeichenbehaftet + 2 f) Nehmen Sie an, dass die vorzeichenbehaftete 8 Bit breite Zahl -64 mit dem LDB-Befehl in ein Allzweckregister geladen wurde und geben Sie alle Bits des Allzweckregisters in hexadezimaler Notation aus. 64 als positive Festkommazahl: er-Komplement: er-Komplement: Hexadezimal: 0xC0 Auf 64 Bit aufgefüllt: 0xFFFFFFFFFFFFFFC0 g) Welcher Wert würde im Allzweckregister stehen, wenn die Zahl -64 versehentlich mit einem LDBU-Befehl statt mit einem LDB-Befehl in das Allzweckregister geladen worden wäre Geben Sie den Wert in der Basis 10 an. 0xC0 = = 192 T h) Wie können die Ladebefehle 64 Bit breite Speicheradressen adressieren, obwohl im Befehlswort nur 16 Bit zur Darstellung der Adresse verfügbar sind Von den 16 Bit (Y und Z) werden 8 Bit (Y) verwendet um ein Allzweckregister zu adressieren, das eine 64 Bit breite Basisadresse enthält. Mit den anderen 8 Bit (Z) wird der Offset bestimmt, der zur Basisadresse hinzuaddiert wird. Abhängig vom Opcode des Ladebefehls ist dieser Offset entweder der Wert eines Allzweckregisters, das mit Z adressiert wird, oder der Direktoperand u(z).

3 6.5 MMIX Befehle 267 i) Vervollständigen Sie den nachfolgenden MMIX-Code um die Bereitstellung und Initialisierung eines Basisregisters zur Adressierung von A, B und C. LOC # A BYTE 0 B OCTA #FFFF C OCTA LOC #100 Main LDO $0,B...! 0x0.. 0x1.. 0x2.. 0x3.. 0x4.. 0x5.. 0x6.. 0x7.. 0x8.. 0x9.. 0xA.. 0xB.. 0xC.. 0xD.. 0xE.. 0xF..! 0x..0 0x..1 0x..2 0x..3 0x..4 0x..5 0x..6 0x..7 TRAP 5ν FCMP ν FUN ν FEQL ν FADD 4ν FIX 4ν FSUB 4ν FIXU 4ν FLOT[I] 4ν FLOTU[I] 4ν SFLOT[I] 4ν SFLOTU[I] 4ν FMUL 4ν FCMPE 4ν FUNE ν FEQLE 4ν FDIV 40ν FSQRT 40ν FREM 4ν FINT 4ν MUL[I] 10ν MULU[I] 10ν DIV[I] 60ν DIVU[I] 60ν ADD[I] ν 2ADDU[I] ν CMP[I] ν SL[I] ν BN[B] ν+π BNN[B] ν+π PBN[B] 3ν-π PBNN[B] 3ν-π CSN[I] ν ADDU[I] ν 4ADDU[I] ν CMPU[I] ν SLU[I] ν BZ[B] ν+π BNZ[B] ν+π PBZ[B] 3ν-π PBNZ[B] 3ν-π CSZ[I] ν SUB[I] ν 8ADDU[I] ν NEG[I] ν SR[I] ν BP[B] ν+π BNP[B] ν+π PBP[B] 3ν-π PBNP[B] 3ν-π CSP[I] ν SUBU[I] ν 16ADDU[I] ν NEGU[I] ν SRU[I]ν BOD[B] ν+π BEV[B] ν+π PBOD[B] 3ν-π PBEV[B] 3ν-π CSOD[I] ν CSNN[I] ν ZSN[I] ν CSNZ[I] ν ZSZ[I] ν CSNP[I] ν ZSP[I] ν CSEV[I] ν ZSOD[I] ν ZSNN[I] ν ZSNZ[I] ν ZSNP[I] ν ZSEV[I] ν LDB[I] µ+ν LDBU[I] µ+ν LDW[I] µ+ν LDWU[I] µ+ν LDT[I] µ+ν LDTU[I] µ+ν LDO[I] µ+ν LDOU[I] µ+ν LDSF[I] µ+ν LDHT[I] µ+ν CSWAP[I] 2µ+2ν LDUNC[I] µ+ν LDVTS[I] ν PRELD[I] ν PREGO[I] ν GO[I] 3ν STB[I] µ+ν STBU[I] µ+ν STW[I] µ+ν STWU[I] µ+ν STT[I] µ+ν STTU[I] µ+ν STO[I] µ+ν STOU[I] µ+ν STSF[I] µ+ν STHT[I] µ+ν STCO[I] µ+ν STUNC[I] µ+ν SYNCD[I] ν PREST[I] ν SYNCID[I] ν PUSHGO[I] 3ν OR[I] ν ORN[I] ν NOR[I] ν XOR[I] ν AND[I] ν ANDN[I] ν NAND[I] ν NXOR[I] ν BDIF[I] ν WDIF[I] ν TDIF[I] ν ODIF[I] ν MUX[I] ν SADD[I] ν MOR[I] ν MXOR[I] ν SETH ν SETMH ν SETML ν SETL ν INCH ν INCHM ν INCML ν INCL ν ORH ν ORMH ν ORML ν ORL ν ANDNH ν ANDNMH ν ANDNML ν ANDNL ν JMP[B] ν PUSHJ[B] ν GETA[B] ν PUT[I] ν POP 3ν RESUME 5ν [UN]SAVE 20µ+ν SYNC ν SWYM ν GET ν TRIP 5ν 0x..8 0x..9 0x..A 0x..B 0x..C 0x..D 0x..E 0x..F 0x0.. 0x1.. 0x2.. 0x3.. 0x4.. 0x5.. 0x6.. 0x7.. 0x8.. 0x9.. 0xA.. 0xB.. 0xC.. 0xD.. 0xE.. 0xF..!

4 268 6 MMIX-Prozessor Gegeben ist der nachfolgende MMIX-Programmcode: LOC $254 a IS $1 X BYTE 0 Y TETRA #FFFF Z OCTA LOC #100 Main j) In welches Befehlswort würde der MMIX-Assembler LDB a,x übersetzen 0x8101FE00. k) In welches Befehlswort würde der MMIX-Assembler LDT a,y übersetzen 0x8901FE04. l) In welches Befehlswort würde der MMIX-Assembler LDO a,z übersetzen 0x8D01FE08. T m) Geben Sie alle 64 Bit des Registers $1 nach Ausführung des Befehls LDBU a,y an. 0x FF T n) Geben Sie alle 64 Bit des Registers $1 nach Ausführung des Befehls LDB a,y an. 0xFFFFFFFFFFFFFFFF

5 6.5 MMIX Befehle 269 o) Tragen Sie in nachfolgende Tabelle den Speicherinhalt ein, der sich nach Ausführung der angegebenen MMIX-Befehle im Falle von Big- und Little-Endian- Adressierung ergeben würde. LOC Data_Segment BYTE 1 TETRA # TETRA #ABCDEF01 BYTE #77 WYDE #0123 Adresse Niederwert. vier Adress-Bits Big Endian Little Endian 0x x01 0x01 0x x x x x23 0x89 0x x45 0x67 0x x67 0x45 0x x89 0x23 0x xAB 0x01 0x xCD 0xEF 0x A xEF 0xCD 0x B x01 0xAB 0x C x77 0x77 0x D x E x01 0x23 0x F x23 0x01

6 270 6 MMIX-Prozessor p) Nehmen Sie die gezeigte Speicherbelegung an und geben Sie hexadezimal alle 64 Bit des Registers 0 nach Ausführung der folgenden Befehle an: LDB $0,$254,0: 0x LDB $0,$254,4: 0x LDB $0,$254,9: LDBU $0,$254,9: 0xFFFF FFFF FFFF FFCD 0x CD LDT $0,$254,4: 0x LDT $0,$254,5: 0x LDT $0,$254,9: LDTU $0,$254,9: 0xFFFF FFFF ABCD EF01 0x ABCD EF01 LDO $0,$254,0: 0x LDO $0,$254,1: 0x LDO $0,$254,12: 0xABCD EF

7 6.5 MMIX Befehle 271 T q) Tragen Sie in nachfolgende Tabelle den Speicherinhalt ein, der sich nach Ausführung der angegebenen MMIX-Befehle im Falle von Big- und Little-Endian- Adressierung ergeben würde. LOC $254 BYTE 1 WYDE #1234 OCTA #56789ABC Adresse Niederwert. vier Adress-Bits Big Endian Little Endian 0x x01 0x01 0x x x12 0x34 0x x34 0x12 0x x x x x x00 0xBC 0x x00 0x9A 0x A x00 0x78 0x B x00 0x56 0x C x56 0x00 0x D x78 0x00 0x E x9A 0x00 0x F xBC 0x00

8 272 6 MMIX-Prozessor T r) Nehmen Sie die gezeigte Speicherbelegung an und geben Sie hexadezimal alle 64 Bit des Registers 0 nach Ausführung der folgenden Befehle an: LDB $0,$254,3: 0x LDB $0,$254,14: LDBU $0,$254,15: LDT $0,$254,14: LDTU $0,$254,15: 0xFFFF FFFF FFFF FF9A 0x0x BC 0x ABC 0x ABC

9 6.5 MMIX Befehle 273 Daten vom Register in den Speicher schreiben (speichern) Befehl Operanden Name/Aktion Definition STB $X,$Y,$Z $X,$Y,Z Store byte; with overflow Store byte immed.; ovf. M 1 [u($y)+u($z)] ($X) s($x) 2 7 ) ra ra u 0 64 (26 ) s($x) < 2 7 ) ra ra u 0 64 (26 ) M 1 [u($y)+u(z)] ($X) s($x) 2 7 ) ra ra u 0 64 (26 ) s($x) < 2 7 ) ra ra u 0 64 (26 ) STBU $X,$Y,$Z Store byte unsigned M 1 [u($y)+u($z)] ($X) $X,$Y,Z Store byte uns. imm. M 1 [u($y)+u(z)] ($X) STW $X,$Y,$Z $X,$Y,Z Store wyde; with overflow Store wyde immed.; ovf. M 2 [u($y)+u($z)] ($X) s($x) 2 15 ) ra ra u 0 64 (26 ) s($x) < 2 15 ) ra ra u 0 64 (26 ) M 2 [u($y)+u(z)] ($X) s($x) 2 15 ) ra ra u 0 64 (26 ) s($x) < 2 15 ) ra ra u 0 64 (26 ) STWU $X,$Y,$Z Store wyde unsigned M 2 [u($y)+u($z)] ($X) $X,$Y,Z Store wyde uns. imm. M 2 [u($y)+u(z)] ($X) STT $X,$Y,$Z $X,$Y,Z Store tetra; with overflow Store tetra immed.; ovf. M 4 [u($y)+u($z)] ($X) s($x) 2 31 ) ra ra u 0 64 (26 ) s($x) < 2 31 ) ra ra u 0 64 (26 ) M 4 [u($y)+u(z)] ($X) s($x) 2 31 ) ra ra u 0 64 (26 ) s($x) < 2 31 ) ra ra u 0 64 (26 ) STTU STO STOU STCO STHT $X,$Y,$Z Store byte unsigned M 4 [u($y)+u($z)] ($X) $X,$Y,Z Store byte uns. imm. M 4 [u($y)+u(z)] ($X) $X,$Y,$Z Store octa M 8 [u($y)+u($z)] $X $X,$Y,Z Store octa immediate M 8 [u($y)+u(z)] $X $X,$Y,$Z Store octa unsigned M 8 [u($y)+u($z)] $X $X,$Y,Z Store octa uns. imm. M 8 [u($y)+u(z)] $X X,$Y,$Z Store constant octabyte M 8 [u($y)+u($z)] u64 0 ( u(x)) X,$Y,Z Store const. octa imm. M 8 [u($y)+u(z)] u64 0 ( u(x)) $X,$Y,$Z Store high tetra M 4 [u($y)+u($z)] ($X u 32) $X,$Y,Z Store high tetra imm. M 4 [u($y)+u(z)] ($X u 32)

10 274 6 MMIX-Prozessor Befehl Operanden Name/Aktion Definition STSF STUNC $X,$Y,$Z Store short float M 4 [u($y)+u($z)] f32 (f 64($X)) 1 $X,$Y,Z Store short float imm. M 4 [u($y)+u(z)] f32 (f 64($X)) $X,$Y,$Z Store uncached M 8 [u($y)+u($z)] $X $X,$Y,Z Store uncached imm. M 8 [u($y)+u(z)] $X 1 T a) Wie unterscheidet sich die Verwendung von X, Y und Z bei Speicher-Befehle von derjenigen aller anderen MMIX-Befehle Die Speicher-Befehle des MMIX verwenden Y und Z als Ziel und X als Quelle. Alle anderen MMIX-Befehle verwenden Y und Z als Quelle und X als Ziel. T b) Was ist beim MMIX der Unterschied zwischen vorzeichenbehaftetem und vorzeichenlosem Speichern Die vorzeichenbehafteten Speicherbefehle zeigen einen Festkomma- Überlauf an, wenn die abgespeicherten Werte bei STB kleiner als -128 oder größer als 127, bei STW kleiner als oder größer als , bei STT kleiner als 2,147,483,648 oder größer als 2,147,483,647 sind. Die vorzeichenlosen Speicherbefehle erzeugen keinen Überlauf. STO und STOU sind äquivalent.

11 6.5 MMIX Befehle 275 In folgendem Programmcode wird XXX XXXXXXXX als Platzhalter für einen einzelnen Befehl verwendet: LOC Data_Segment A OCTA #FFFFFFFFFFFFFFFF B TETRA # LOC #100 Main LDTU $0,B XXX XXXXXXXX TRAP 0,Halt,0 c) Geben Sie für das oben gezeigte Programm den Inhalt des 64 Bit breiten Wortes an, welches durch die Marke A adressiert wird, wenn XXX XXXXXXXX durch folgende Befehle ersetzt wird: STB $0,A: STTU $0,A: 0x21FF FFFF FFFF FFFF 0x FFFF FFFF STT $0,$254,6: 0xFFFF FFFF T d) Geben Sie für das oben gezeigte Programm den Inhalt des 64 Bit breiten Wortes an, welches durch die Marke A adressiert wird, wenn XXX XXXXXXXX durch folgende Befehle ersetzt wird: STW $0,A: STWU $0,A: STT $0,A: 0x4321 FFFF FFFF FFFF 0x4321 FFFF FFFF FFFF 0x FFFF FFFF STO $0,A: 0x STB $0,$254,5: STW $0,$254,1: 0xFFFF FFFF FF21 FFFF 0x4321 FFFF FFFF FFFF ST0 $0,$254,5: 0x

12 276 6 MMIX-Prozessor e) Geben Sie hexadezimal das 32 Bit breite Befehlswort des Befehls STBU $0,A an, wenn dieser in obigem Programmcode den Platzhalter XXX XXXXXXXX ersetzt. 0xA300FE00. T f) Geben Sie die Befehle an, mit denen Sie an Adresse 0x ein 64 Bit breites Datum anlegen, dieses Datum über die Marke Data ansprechbar machen und das Datenwort mit 0x initialisieren; an Adresse 0x100 ein Programm beginnen und das an Adresse Data gespeicherte Datenwort in Register 1 einlesen, Bits des Registers 1 an Adresse Data schreiben, Bits des Registers 1 an Adresse 0x schreiben, Bits des Registers 1 an Adresse 0x A schreiben. LOC Data_Segement Data OCTA # LOC #100 Main LDO $1,Data STB $1,Data LDA $2,Data STB $1,$2,2 STT $1,$2,#A

13 6.5 MMIX Befehle 277 Gegeben ist der folgende Programmcode: LOC Data_Segement Label OCTA # LOC #100 Main LDO $0,Label STB $0,Label LDA $2,Label STB $0,$2,2 STT $0,$2,10 T g) Zeichnen Sie byteweise den Inhalt des Speichers von Adresse 0x bis 0x F, der sich nach Ausführung des o.g. Programms ergibt. 0x x78 0x x00 0x x78 0x x00 0x x12 0x x34 0x x56 0x x78 0x x12 0x x34 0x A 0x56 0x B 0x78 0x C 0x D 0x E 0x F $0: $2:

14 278 6 MMIX-Prozessor Adressen in ein Register laden Befehl Operanden Name/Aktion Definition LDA $X,$Y,$Z Get address (absolute) $X u 0 64 (u($y)+u($z)) $X,$Y,Z Get address immed. (absolute) $X u 0 64 (u($y)+u(z)) GETA $X,YZ Get address (relativ) $X u64 0 (u(@) + 4 s(yz))! 0x0.. 0x1.. 0x2.. 0x3.. 0x4.. 0x5.. 0x6.. 0x7.. 0x8.. 0x9.. 0xA.. 0xB.. 0xC.. 0xD.. 0xE.. 0xF..! 0x..0 0x..1 0x..2 0x..3 0x..4 0x..5 0x..6 0x..7 TRAP 5ν FCMP ν FUN ν FEQL ν FADD 4ν FIX 4ν FSUB 4ν FIXU 4ν FLOT[I] 4ν FLOTU[I] 4ν SFLOT[I] 4ν SFLOTU[I] 4ν FMUL 4ν FCMPE 4ν FUNE ν FEQLE 4ν FDIV 40ν FSQRT 40ν FREM 4ν FINT 4ν MUL[I] 10ν MULU[I] 10ν DIV[I] 60ν DIVU[I] 60ν ADD[I] ν 2ADDU[I] ν CMP[I] ν SL[I] ν BN[B] ν+π BNN[B] ν+π PBN[B] 3ν-π PBNN[B] 3ν-π CSN[I] ν ADDU[I] ν 4ADDU[I] ν CMPU[I] ν SLU[I] ν BZ[B] ν+π BNZ[B] ν+π PBZ[B] 3ν-π PBNZ[B] 3ν-π CSZ[I] ν SUB[I] ν 8ADDU[I] ν NEG[I] ν SR[I] ν BP[B] ν+π BNP[B] ν+π PBP[B] 3ν-π PBNP[B] 3ν-π CSP[I] ν SUBU[I] ν 16ADDU[I] ν NEGU[I] ν SRU[I]ν BOD[B] ν+π BEV[B] ν+π PBOD[B] 3ν-π PBEV[B] 3ν-π CSOD[I] ν CSNN[I] ν ZSN[I] ν CSNZ[I] ν ZSZ[I] ν CSNP[I] ν ZSP[I] ν CSEV[I] ν ZSOD[I] ν ZSNN[I] ν ZSNZ[I] ν ZSNP[I] ν ZSEV[I] ν LDB[I] µ+ν LDBU[I] µ+ν LDW[I] µ+ν LDWU[I] µ+ν LDT[I] µ+ν LDTU[I] µ+ν LDO[I] µ+ν LDOU[I] µ+ν LDSF[I] µ+ν LDHT[I] µ+ν CSWAP[I] 2µ+2ν LDUNC[I] µ+ν LDVTS[I] ν PRELD[I] ν PREGO[I] ν GO[I] 3ν STB[I] µ+ν STBU[I] µ+ν STW[I] µ+ν STWU[I] µ+ν STT[I] µ+ν STTU[I] µ+ν STO[I] µ+ν STOU[I] µ+ν STSF[I] µ+ν STHT[I] µ+ν STCO[I] µ+ν STUNC[I] µ+ν SYNCD[I] ν PREST[I] ν SYNCID[I] ν PUSHGO[I] 3ν OR[I] ν ORN[I] ν NOR[I] ν XOR[I] ν AND[I] ν ANDN[I] ν NAND[I] ν NXOR[I] ν BDIF[I] ν WDIF[I] ν TDIF[I] ν ODIF[I] ν MUX[I] ν SADD[I] ν MOR[I] ν MXOR[I] ν SETH ν SETMH ν SETML ν SETL ν INCH ν INCHM ν INCML ν INCL ν ORH ν ORMH ν ORML ν ORL ν ANDNH ν ANDNMH ν ANDNML ν ANDNL ν JMP[B] ν PUSHJ[B] ν GETA[B] ν PUT[I] ν POP 3ν RESUME 5ν [UN]SAVE 20µ+ν SYNC ν SWYM ν GET ν TRIP 5ν 0x..8 0x..9 0x..A 0x..B 0x..C 0x..D 0x..E 0x..F 0x0.. 0x1.. 0x2.. 0x3.. 0x4.. 0x5.. 0x6.. 0x7.. 0x8.. 0x9.. 0xA.. 0xB.. 0xC.. 0xD.. 0xE.. 0xF..! a) Was ist der Unterschied zwischen dem Befehl LDA und den Ladebefehlen LDB,... Die Ladebefehle LDB,... laden Datenworte vom Speicher in ein Register. Der Befehl LDA lädt eine Adresse in ein Register.

15 6.5 MMIX Befehle 279 Nehmen Sie die folgenden Befehle an: LOC Data_Segment A BYTE #12 LOC #100 Main LDA $0,A TRAP 0,Halt,0 b) In welches hexadezimale Befehlswort wird der Befehl LDA $0,A übersetzt Warum 0x2300FE00. Der Assembler löst die Marke A in $ auf und ersetzt den Befehl LDA $0,A durch ADDUI $0,$254,0. Der Befehl ADDUI addiert den Wert im Basisregister 254 und den Offset 0 und speichert das Ergebnis in Register 0. Damit enthält Register 0 dann die Adresse der Marke A. Gegeben sind die folgenden Befehle: LOC Data_Segment A BYTE #12 LOC #100 Main LDA $0,A GETA $0,Main TRAP 0,Halt,0 c) In welches 32 Bit breite Befehlswort wird der Befehl GETA $0,Main übersetzt 0xF500FFFF

16 280 6 MMIX-Prozessor Zugriff auf Spezialregister Befehl Operanden Name/Aktion Definition GET $X,Z Get value of special purpose register $X S(Z) PUT X,$Z Put value to special purpose register S(X) $Z X,Z Put immed. value to spec. purp. reg. S(X) u 0 64 (u(z)) T a) Tragen Sie in nachfolgender Befehlssequenz Befehle zur Berechnung der Festkommadivisioni dividend/divisor ein und speichern Sie das Ergebnis an der Marke Quotient und den Divisionsrest an der Marke Remainder ab. LOC Data_Segment Dividend OCTA 7 Divisor OCTA 3 Quotient OCTA Remainder OCTA dividend IS $0 divisor IS $1 quotient IS $2 remainder IS $3 LOC #100 Main LDO dividend,dividend LDO divisor,divisor DIV GET STO STO quotient,dividend,divisor remainder,rr quotient,quotient remainder,remainder TRAP 0,Halt,0

17 6.5 MMIX Befehle 281 Gegeben ist das Format des Spezialregisters ra. Interrupt Enable (Freischalten) Interrupt Event (Auftreten) 0 0 R1 R0 D V W I O U Z X D V W I O U Z X nicht verwendet Gleitkommazahl ungenau (z.b. 1.0 / 3.0) Gleitkomma-Division durch 0 Gleitkomma-Unterlauf Gleitkomma-Überlauf Unerlaubte Gleitkommaoperation, z.b. sqrt(-1.0) Überlauf bei Wandlung Gleitkomma- in Festkommazahl Festkomma-Überlauf Festkomma-Division durch 0 Gleitkomma-Rundungsmodus 00: Nächster Wert (standard) 01: Abrunden (Richtung 0) 10: Aufrunden (Richtung + ) 11: Abrunden (Richtung - ) b) Geben Sie den MMIX-Code an, mit dem Sie den Gleitkomma-Rundungsmodus auf aufrunden setzen. Bits die geändert werden müssen: 17, 16 GET $0,rA ANDNML $0,3 ORML $0,2 PUT ra,$0 c) Ändern Sie das Interrupt-Enable Bit integer overflow (0 ) 1, 1 ) 0). GET $0,rA SET $1,#4000 XOR $0,$0,$1 PUT ra,$0

18 282 6 MMIX-Prozessor Verzweigungsbefehle Unbedingte Verzweigung Befehl Operanden Name/Aktion Definition JMP XYZ u64 0 ( u(@) + 4 s(xyz)) Bedingte Verzweigungen Befehl Operanden Name/Aktion Definition BZ $X,YZ Branch if zero s($x) u64 0 ( u(@) + 4 s(yz)) PBZ $X,YZ Probable br. if zero s($x) u64 0 ( u(@) + 4 s(yz)) BNZ $X,YZ Branch if nonzero s($x) 6= u64 0 ( u(@) + 4 s(yz)) PBNZ $X,YZ Prob. br. if nonzero s($x) 6= u64 0 ( u(@) + 4 s(yz)) BN $X,YZ Branch if negative s($x) < 0 u64 0 ( u(@) + 4 s(yz)) PBN $X,YZ Prob. br. if negative s($x) < 0 u64 0 ( u(@) + 4 s(yz)) BNN $X,YZ Branch if nonneg. s($x) 0 u64 0 ( u(@) + 4 s(yz)) PBNN $X,YZ Prob. br. if nonneg. s($x) 0 u64 0 ( u(@) + 4 s(yz)) BP $X,YZ Branch if positive s($x) > 0 u64 0 ( u(@) + 4 s(yz)) PBP $X,YZ Prob. br. if positive s($x) > 0 u64 0 ( u(@) + 4 s(yz)) BNP $X,YZ Branch if nonpositive s($x) apple 0 u64 0 ( u(@) + 4 s(yz)) PBNP $X,YZ Prob. br. if nonpos. s($x) apple 0 u64 0 ( u(@) + 4 s(yz)) BEV $X,YZ Branch if even u 0 64 ( u(@)+4 s(yz)) PBEV $X,YZ Prob. branch if even u 0 64 ( u(@)+4 s(yz)) BOD $X,YZ Branch if odd u 0 64 ( u(@)+4 s(yz)) PBOD $X,YZ Prob. branch if odd u 0 64 ( u(@)+4 s(yz))

19 6.5 MMIX Befehle 283 Betrachten Sie die folgenden Befehle: LOC Data_Segment A OCTA 1000 a IS $1 b IS $2 LOC #100 Main LDB a,a Start SUB a,a,1 OR a,a,0 BZ a,end JMP Start End TRAP 0,0,0 a) Bestimmen Sie das 32 Bit breite Befehlswort des Befehls JMP Start. 0xF1FFFFFD. (3 Befehle zurückspringen; FFFD ist -3 im 2er-Komplement) T b) Bestimmen Sie das 32 Bit breite Befehlswort des Befehls BZ a,end. 0x (2 Befehle vorwärts springen)

20 284 6 MMIX-Prozessor c) Benutzen Sie MMIX Verzweigungs-Befehle um folgenden C-Code zu implementieren: C-Code: if(a == 0) { a = 1; } MMIX-Code: BNZ a,end SET a,1 End d) Benutzen Sie MMIX Verzweigungs-Befehle um folgenden C-Code zu implementieren: C-code: int a;... if(a <= 0) { a = 1; } else { a = 2; } MMIX-Code: BP a,pos SET a,1 JMP End Pos SET a,2 End......

21 6.5 MMIX Befehle 285 T e) Geben Sie den MMIX-Code an, der nachfolgenden C-Code implementiert: C-Code: int a, b;... if(a > 0 && b < 0) { a = 1; } else if(a > 0 b == 0) { a = 2; } else { a = 3; } MMIX-Code: BNP a,l1 BNN b,l1 SET a,1 JMP End L1 BP a,l2 BZ b,l2 SET a,3 JMP End L2 SET a,2 End......

22 286 6 MMIX-Prozessor Befehle für Funktionsaufrufe Befehl Operanden Name/Aktion Definition GO $X,$Y,$Z $X,$Y,Z Go to location Go to location immediate $X u64 0 ( u(@) + 4) u64 0 ( u($y)+u($z)) $X u64 0 ( u(@) + 4) u64 0 ( u($y)+u(z)) T a) Was ist der Haupt-Unterschied zwischen dem JMP-Befehl und dem GO-Befehl JMP benutzt Relative Adressierung, während GO Absolute Adressierung verwendet. GO speichert die Rücksprungadresse ab, JMP nicht. T b) Wo speichern GO-Befehle die Rücksprungadresse ab Die Rücksprungadresse wird in Register X abgelegt. T c) Was ist die Rücksprungadresse Die Rücksprungadresse ist die Adresse des nächsten Befehlsworts. Wenn GO an einer durch vier teilbaren Adresse a steht, dann ist die Rücksprungadresse a +4. T d) Wenn GO Absolute Adressierung verwendet: Wie wird die Abolute Adresse (64 Bit) im 32 Bit breiten Befehlswort abgelegt Genauso wie es allgemein bei Marken gemacht wird: Der Assembler transformiert die Adresse der Marke in eine Basisadresse, die in Register Y gespeichert wird, und einem Offset, der in Register Z oder im Direktoperanden Z gespeichert wird. e) Geben Sie den Befehl an, mit dem Sie die Funktion fkt aufrufen und die Rücksprungadresse in Register 0 ablegen. GO $0,fkt

23 6.5 MMIX Befehle 287 Namensräume - der PREFIX-Befehl Der PREFIX-Befehl ist ein Assembler-Befehl. Er wird verwendet, um in einem Programm vorkommenden Namen vom Assembler-Präprozessor durch Voranstellen einer Zeichenkette automatisiert ändern zu lassen. Dazu wird der PREFIX-Befehl mit der voranzustellenden Zeichenkette als Operand aufgerufen. PREFIX Zeichenkette Ab dieser Anweisung setzt der Assembler-Präprozessor vor jeden Namen die angegebene Zeichenkette. Hat beispielsweise die Zeichenkette den Wert abc:, dann wird ein Name def in abc:def geändert. Fügt man vor jede Funktion einen PREFIX-Befehl mit dem Funktionsnamen als Zeichenkette ein, erzeugt man automatisch für jede Funktion einen eigenen Namensraum. Eine Variable i in der Funktion fkt bekommt dann den (globalen) Namen fkti und eine Variable i in der Funktion fkt2 den Namen fkt2i. Auf diese Weise kann der Assembler beide Variable als unterschiedliche Variable erkennen und es kommt zu keinem Konflikt, wenn der Assembler beispielsweise i sowohl durch $1 ersetzen soll (für die Funktion fkt1) als auch durch $2 (für die Funktion fkt2). Um den Funktionsnamen besser vom Variablennamen abgrenzen zu können, bietet es sich an, an die Prefix-Zeichenkette noch ein markantes Zeichen anzuhängen, beispielsweise einen Bindestrich oder einen Doppelpunkt. Um einen Namensraum zu beenden, d.h. um den Assembler-Präprozessor anzuweisen, vorkommenden Namen die Zeichenkette nicht mehr voranzustellen, wird der PREFIX- Befehl mit einem Doppelpunkt als Operand aufgerufen. PREFIX : Will man innerhalb eines Namensraums verhindern, dass der Assembler-Präprozessor einen Namen ändert, schreibt man vor den betreffenden Namen einen Doppelpunkt, z.b. :def statt def. Auf diese Weise kann man auf globale Namen wie z.b. den Stackpointer SP zugreifen. a) Geben Sie die Anweisung an, mit denen Sie den Namensraum Main: eröffnen und in diesem Namensraum die globale Marke Main definieren. PREFIX :Main... Main:

24 288 6 MMIX-Prozessor b) Wie kann man einen Namensraum beenden, d.h. wie kann man den Assembler anweisen, Marken/Namen nicht mehr umzuwandeln Wird PREFIX mit dem Operanden : aufgerufen, wird der zugehörige Namensraum geschlossen. c) Wie kann man innerhalb eines Namensraums verhindern, dass der Assembler einer bestimmten Marke bzw. einem bestimmten Namen die im PREFIX-Befehl angegebene Zeichenkette voranstellt Man muss vor die Marke bzw. vor den Namen einen Doppelpunkt schreiben, z.b. :SP statt SP. T d) Wozu dient der PREFIX-Befehl Der PREFIX-Befehl dient zur Generierung von Namensräumen. Kommt ein Name im selben Namensraum vor, beschreibt er die selbe Variable/Funktion. Kommt ein Name in unterschiedlichen Namensräumen vor, beschreibt er unterschiedliche Variable/Funktionen. Hat jede Funktion einen eigenen Namensraum, kann man dieselben Variablennamen in unterschiedlichen Funktionen verwenden, ohne dass damit auf dieselben Variablen zugegriffen wird. T e) Welche Auswirkung hat der Befehl PREFIX mein_prefix auf darauf folgende MMIX- Anweisungen Nach der Anweisung PREFIX myprefix wird jeder Marke bzw. jedem Registernamen die Zeichenkette mein_prefix vorangestellt. Gibt es z.b. eine Marke/einen Registernamen yy, so wird dieser in mein_prefixyy umgewandelt. Dabei handelt es sich um eine reine Textersetzung.

25 6.5 MMIX Befehle 289 T f) Geben Sie die Anweisungen an, mit denen Sie den Namensraum Fkt: eröffnen und die globale Marke Fkt anlegen. PREFIX :Fkt... Fkt: Funktionsaufrufe Mit Funktionen werden logisch zusammengehörige Befehle zur Bereitstellung einer Gesamt-Funktionalität zusammengefasst und durch Funktionsaufrufe von beliebigen Stellen im Programm abrufbar. Durch diese Struktur gebende Maßnahme werden Programme übersichtlicher und kürzer: Übersichtlicher, da der Programm-Code die Zerlegung eines großen Problems in kleinere Probleme durch Funktionsaufrufe widerspiegelt, und kürzer, da eine Funktionalität (viele Befehle) nur einmal aus Befehlen zusammengesetzt werden muss und durch Sprünge in die Funktion (wenige Befehle) beliebig oft verwendet werden kann. Beispiel: -Adresse von Personen aus einer csv-datei (csv = comma separated values = Werte durch Komma getrennt) extrahieren und jeder Person ein schreiben: Aufruf einer Funktion, welche den Namen der csv-datei als Parameter übergeben bekommt und den Inhalt der Datei in den String s einliest. Aufruf einer Funktion, welche den String s sowie das Zeichen \n als Parameter übergeben bekommt, den String an den Zeichen \n in Teil-Stings s 1, s 2,... auftrennt und als Ergebnis ein Array von Zeigern auf die Teil-Strings zurückliefert. Für jeden Teilstring s i : Aufruf einer Funktion, welche den String s i und das Komma-Zeichen als Parameter übergeben bekommt, den String an den Kommas in Teilstrings s ij auftrennt und als Ergebnis ein Array von Zeigern auf die Teil-Strings zurückliefert. Auswahl des Teil-Strings s ij, in dem die -Adresse gespeichert ist. Für jede -Adresse s ij : Aufruf einer Funktion, die als Parameter die - Adresse und den -Text bekommt und den -Text an die angegebene -Adresse verschickt.

26 290 6 MMIX-Prozessor Wert-Übergabe und Referenz-Übergabe Es gibt viele Möglichkeiten, Funktionen Parameter zu übergeben. Prinzipiell unterscheidet man zwischen der Übergabe von Werten und der Übergabe von Referenzen. Bei der Wert-Übergabe (engl. call by value) wird der Funktion direkt der zu verarbeitende Wert übergeben, z.b. eine Festkommazahl. Bei der Referenz-Übergabe (engl. call by reference) wird der Funktion die Adresse des zu verarbeitenden Werts übergeben, z.b. die Adresse, an der eine Festkommazahl im Speicher steht. In beiden Fällen wird bei der Parameterübergabe eine lokale Kopie erstellt. Bei der Wert-Übergabe wird eine Kopie des Werts erstellt. Ändert die Funktion die ihr übergebene Variable, so hat das keinen Einfluss auf den Wert der Original-Variable. Bei der Referenz-Übergabe wird eine Adresse übergeben und somit eine Kopie der Adresse erstellt. Auch wenn es sich nur um eine Kopie der Adresse handelt die kopierte Adresse zeigt auf dieselbe Speicherstelle wie die originale Adresse. Damit kann die Funktion Änderungen an den Werten durchführen, die an der übergebenen Speicheradresse stehen und der Funktionsaufrufer kann auf diese Änderungen zugreifen. Wert-Übergabe Referenz-Übergabe Speicher Funktionsaufrufer: Wert Adresse ruft auf wird kopiert wird kopiert zeigt auf zeigt auf wird kopiert wird kopiert Funktion: Wert Adresse Diese Variable steht hier im Speicher

0x01? 0x01. 0x12 0x34. 0x34 0x12 0xBC 0x00 0x00 0x9A 0x00 0x78. 0x00 0x56. 0x56 0x00 0x78 0x00 0x9A 0x00 0xBC 0x00. 6.

0x01? 0x01. 0x12 0x34. 0x34 0x12 0xBC 0x00 0x00 0x9A 0x00 0x78. 0x00 0x56. 0x56 0x00 0x78 0x00 0x9A 0x00 0xBC 0x00. 6. 6.5 MMIX Befehle 287 T q) Tragen Sie in nachfolgende Tabelle den Speicherinhalt ein, der sich nach Ausführung der angegebenen MMIX-Befehle im Falle von Big- und Little-Endian- Adressierung ergeben würde.

Mehr

6.5 MMIX Befehle 287. LOC $254 BYTE 1 WYDE #1234 OCTA #56789ABC 0x x x

6.5 MMIX Befehle 287. LOC  $254 BYTE 1 WYDE #1234 OCTA #56789ABC 0x x x 6.5 MMIX Befehle 287 T q) Tragen Sie in nachfolgende Tabelle den Speicherinhalt ein, der sich nach Ausführung der angegebenen MMIX-Befehle im Falle von Big- und Little-Endian- Adressierung ergeben würde.

Mehr

T e) Wie unterscheiden sich die Opcodes von vorzeichenlosen und vorzeichenbehafteten Ladebefehlen?

T e) Wie unterscheiden sich die Opcodes von vorzeichenlosen und vorzeichenbehafteten Ladebefehlen? - 282 6 MMIX-Prozessor T e) Wie unterscheiden sich die Opcodes von vorzeichenlosen und vorzeichenbehafteten Ladebefehlen? f) Nehmen Sie an, dass die vorzeichenbehaftete 8 Bit breite Zahl -64 mit dem LDB-Befehl

Mehr

Übungsblätter zur Vorlesung IT-Systeme 1. 1 Zahldarstellung und Codierung

Übungsblätter zur Vorlesung IT-Systeme 1. 1 Zahldarstellung und Codierung Hochschule für angewandte Wissenschaften (FH) München Wintersemester 2009/2010 Fakultät für Informatik und Mathematik 11. Januar 2010 Prof. Dr. A. Böttcher Übungsblätter zur Vorlesung IT-Systeme 1 1 Zahldarstellung

Mehr

276 6 MMIX-Prozessor. Befehl Operanden Name/Aktion Definition. $X,$Y,$Z Bitwise AND $X $Y & $Z $X,$Y,Z Bitwise AND immediate $X $Y & u64 0 ( u(z)) AND

276 6 MMIX-Prozessor. Befehl Operanden Name/Aktion Definition. $X,$Y,$Z Bitwise AND $X $Y & $Z $X,$Y,Z Bitwise AND immediate $X $Y & u64 0 ( u(z)) AND 276 6 MMIX-Prozessor Logische Operationen auf Bit-Ebene Befehl Operanden Name/Aktion Definition AND ANDN $X,$Y,$Z Bitwise AND $X $Y & $Z $X,$Y,Z Bitwise AND immediate $X $Y & u64 0 ( u(z)) $X,$Y,$Z Bitwise

Mehr

Nachfolgende Tabelle übersetzt MMIX-Opcodes in diejenigen Zahlen, die im Befehlswort in den Bits abgelegt werden müssen.

Nachfolgende Tabelle übersetzt MMIX-Opcodes in diejenigen Zahlen, die im Befehlswort in den Bits abgelegt werden müssen. 256 6 MMIX-Prozessor Nachfolgende Tabelle übersetzt MMIX-Opcodes in diejenigen Zahlen, die im Befehlswort in den Bits 3124 abgelegt werden müssen! 0x0 0x1 0x2 0x3 0x4 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 TRAP

Mehr

Aufgabenkatalog. Computersysteme 1 Dr. Michael Zwick. Technische Universität München

Aufgabenkatalog. Computersysteme 1 Dr. Michael Zwick. Technische Universität München Aufgabenkatalog Computersysteme 1 Dr. Michael Zwick Technische Universität München Inhalt 1 Komponenten eines Computer-Systems 5 Netzteil.................................... 5 Grafikkarten.................................

Mehr

q) Geben Sie Befehle an, die ein neues globales Register anlegen und dieses mit Speicheradresse 0x initialisieren,

q) Geben Sie Befehle an, die ein neues globales Register anlegen und dieses mit Speicheradresse 0x initialisieren, 6.4 MMIX-Programme 251 q) Geben Sie Befehle an, die ein neues globales Register anlegen und dieses mit Speicheradresse 0x2000000000000000 initialisieren, an dieser Speicheradresse ein Bit breites Datenwort

Mehr

T b) Wo findet man den Arbeitsspeicher in einem Computersystem? Auf dem Prozessor-Kern? Auf dem Mainboard? Als externes Gerät?

T b) Wo findet man den Arbeitsspeicher in einem Computersystem? Auf dem Prozessor-Kern? Auf dem Mainboard? Als externes Gerät? 234 6 MMIX-Prozessor Aufgaben Verständnis Speicher T a) Wozu verwendet ein Computer Arbeitsspeicher? T b) Wo findet man den Arbeitsspeicher in einem Computersystem? Auf dem Prozessor-Kern? Auf dem Mainboard?

Mehr

6.3 Speicher 233. Virtueller Speicher dreier Programme. realer Speicher Interrupt-Vektoren. Text-Segment.

6.3 Speicher 233. Virtueller Speicher dreier Programme. realer Speicher Interrupt-Vektoren. Text-Segment. 6.3 Speicher 233 Virtueller Speicher Die gezeigte Einteilung des Speichers in verschiedene Segmente bezieht sich auf den sog. virtuellen Speicher. Virtueller Speicher meint, dass die Speicheradressen,

Mehr

den Loader; der Loader ist derjenige Teil des Betriebssystems, der auszuführende Programme vom der Festplatte/SSD in den Speicher lädt

den Loader; der Loader ist derjenige Teil des Betriebssystems, der auszuführende Programme vom der Festplatte/SSD in den Speicher lädt 242 6 MMIX-Prozessor 64 MMIX-Programme MMIX-Programme bzw Assembler-Programme für den MMIX-Prozessor sind Quelltext- Dateien mit Befehlen für den MMIX-Prozessor; die vom MMIX unterstützen Befehle nennt

Mehr

Bachelorprüfung Modul Computertechnik

Bachelorprüfung Modul Computertechnik Prüfungsfähigkeit: Bachelorprüfung Modul Computertechnik Computersysteme 24.7.24 Hiermit bestätige ich, dass ich vor Prüfungsbeginn darüber in Kenntnis gesetzt wurde, dass ich im Falle einer plötzlich

Mehr

MMIX Assembler Programmierung Dr. Michael Zwick. Zahldarstellung

MMIX Assembler Programmierung Dr. Michael Zwick. Zahldarstellung MMIX Assembler Programmierung Dr. Michael Zwick Zahldarstellung Festkommazahlen Vorzeichenlose Zahlen n Bit => 2 n verschiedene Werte darstellbar Wertebereich: 0... 2 n - 1 Kodierung: 0... 000, 0... 001,

Mehr

MMIX Assembler Programmierung. Computersysteme 1 Dr. Michael Zwick

MMIX Assembler Programmierung. Computersysteme 1 Dr. Michael Zwick MMIX Assembler Programmierung Computersysteme 1 Dr. Michael Zwick Zahldarstellung Festkommazahlen Vorzeichenlose Zahlen n Bit => 2 n verschiedene Werte darstellbar Wertebereich: 0... 2 n - 1 Kodierung:

Mehr

GOP Computertechnik. Computersysteme

GOP Computertechnik. Computersysteme Prüfungsfähigkeit: Weitere Hinweise: - - - - - - - - GOP Computertechnik Computersysteme 7.8.27 Hiermit bestätige ich, dass ich vor Prüfungsbeginn darüber in Kenntnis gesetzt wurde, dass ich im Falle einer

Mehr

q) Geben Sie Befehle an, die ein neues globales Register anlegen und dieses mit Speicheradresse 0x initialisieren,

q) Geben Sie Befehle an, die ein neues globales Register anlegen und dieses mit Speicheradresse 0x initialisieren, 6.4 MMIX-Programme 235 q) Geben Sie Befehle an, die ein neues globales Register anlegen und dieses mit Speicheradresse 0x2000000000000000 initialisieren, an dieser Speicheradresse ein Bit breites Datenwort

Mehr

GOP Computertechnik. Computersysteme

GOP Computertechnik. Computersysteme Prüfungsfähigkeit: Weitere Hinweise: - - - - - - - - GOP Computertechnik Computersysteme 3.7.2 Hiermit bestätige ich, dass ich vor Prüfungsbeginn darüber in Kenntnis gesetzt wurde, dass ich im Falle einer

Mehr

Aufgabenkatalog. Computersysteme 1 Dr. Michael Zwick. Technische Universität München

Aufgabenkatalog. Computersysteme 1 Dr. Michael Zwick. Technische Universität München Aufgabenkatalog Computersysteme Dr. Michael Zwick Technische Universität München Inhalt Komponenten eines Computer-Systems 5 Netzteil.................................... 5 Grafikkarten.................................

Mehr

GOP Computertechnik. Computersysteme Probeklausur 2

GOP Computertechnik. Computersysteme Probeklausur 2 Prüfungsfähigkeit: Weitere Hinweise: - - - - - - - - Die Prüfungsdauer beträgt 75 Minuten. Es sind keine Hilfsmittel erlaubt, auch keine Taschenrechner! Heftung nicht öffnen - keine Blätter abtrennen!

Mehr

GOP Computertechnik. Computersysteme

GOP Computertechnik. Computersysteme Prüfungsfähigkeit: Weitere Hinweise: - - - - - - - - GOP Computertechnik Computersysteme 22.7.26 Hiermit bestätige ich, dass ich vor Prüfungsbeginn darüber in Kenntnis gesetzt wurde, dass ich im Falle

Mehr

k) Wie kann man beim MMIX auf die Parameter zugreifen? $1 + 8 $

k) Wie kann man beim MMIX auf die Parameter zugreifen? $1 + 8 $ 63 Speicher 241 k) Wie kann man beim MMIX auf die Parameter zugreifen? $0 : arge $1 : argv $1 +0 Virtueller Speicher $1 + 8 $1 16 +,, ARGUED Argus argv IZJ - a) Wenn alle Programme an Adresse 0x100 beginnen

Mehr

6.3 Speicher 233. Virtueller Speicher dreier Programme. realer Speicher Interrupt-Vektoren. Text-Segment.

6.3 Speicher 233. Virtueller Speicher dreier Programme. realer Speicher Interrupt-Vektoren. Text-Segment. 6.3 Speicher 233 Virtueller Speicher Die gezeigte Einteilung des Speichers in verschiedene Segmente bezieht sich auf den sog. virtuellen Speicher. Virtueller Speicher meint, dass die Speicheradressen,

Mehr

LOC Data_Segment

LOC Data_Segment 65 MMIX Befehle 291 In folgendem Programmcode wird XXX XXXXXXXX als Platzhalter für einen einzelnen Befehl verwendet: : LOC Data_Segment a iii GREG @ :;fff ±t A OCTA #FFFFFFFFFFFFFFFF B TETRA #87654321

Mehr

IM P label = Bedingte Verzweigungen

IM P label = Bedingte Verzweigungen 298 6 MMIX-Prozessor Verzweigungsbefehle Unbedingte Verzweigung 23 0 opc X 4 z Befehl Operanden Name/Aktion Definition JMP XYZ Jump @ u64 0 ( u(@) + 4 s(xyz)) IM P label = Bedingte Verzweigungen Befehl

Mehr

GOP Computertechnik. Computersysteme Probeklausur 2

GOP Computertechnik. Computersysteme Probeklausur 2 Prüfungsfähigkeit: Weitere Hinweise: - - - - - - - - Die Prüfungsdauer beträgt 75 Minuten. Es sind keine Hilfsmittel erlaubt, auch keine Taschenrechner! Heftung nicht öffnen - keine Blätter abtrennen!

Mehr

Aufgabenkatalog. Computersysteme 1 Dr. Michael Zwick. Technische Universität München

Aufgabenkatalog. Computersysteme 1 Dr. Michael Zwick. Technische Universität München Aufgabenkatalog Computersysteme 1 Dr. Michael Zwick Technische Universität München Inhalt 1 Komponenten eines Computer-Systems 5 Netzteil.................................... 5 Grafikkarten.................................

Mehr

GOP Computertechnik. Computersysteme Probeklausur 1

GOP Computertechnik. Computersysteme Probeklausur 1 Prüfungsfähigkeit: Weitere Hinweise: - - - - - - - - Die Prüfungsdauer beträgt 75 Minuten. Es sind keine Hilfsmittel erlaubt, auch keine Taschenrechner! Heftung nicht öffnen - keine Blätter abtrennen!

Mehr

Bachelorprüfung Modul Computertechnik

Bachelorprüfung Modul Computertechnik Prüfungsfähigkeit: Bachelorprüfung Modul Computertechnik Computersysteme Probeklausur 2 Hiermit bestätige ich, dass ich vor Prüfungsbeginn darüber in Kenntnis gesetzt wurde, dass ich im Falle einer plötzlich

Mehr

LOC Data_Segment A OCTA a) Bestimmen Sie das 32 Bit breite Befehlswort des Befehls JMP Start.

LOC Data_Segment A OCTA a) Bestimmen Sie das 32 Bit breite Befehlswort des Befehls JMP Start. humpl 6.5 MMIX Befehle 299 Betrachten Sie die folgenden Befehle: LOC Data_Segment GREG @ A OCTA 1000 a IS $1 b IS $2 LOC #100 Main LDB aa Start SUB aa1 swathe 2 Befehl OR aa0 BZ aend JMP Start End TRAP

Mehr

q) Geben Sie Befehle an, die ein neues globales Register anlegen und dieses mit Speicheradresse 0x2000000000000000 initialisieren,

q) Geben Sie Befehle an, die ein neues globales Register anlegen und dieses mit Speicheradresse 0x2000000000000000 initialisieren, At AZOCTA 6.4 MMIX-Programme 235 q) Geben Sie Befehle an, die ein neues globales Register anlegen und dieses mit Speicheradresse 0x2000000000000000 initialisieren, an dieser Speicheradresse ein Bit breites

Mehr

Namensräume - der PREFIX-Befehl

Namensräume - der PREFIX-Befehl 65 MMIX Befehle 33 Namensräume - der PREFIX-Befehl Der PREFIX-Befehl ist ein Assembler-Befehl Er wird verwendet um in einem Programm vorkommenden Namen vom Assembler-Präprozessor durch Voranstellen einer

Mehr

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: 1 ADRESSIERUNG IN MMIX Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: no base address is close enough to the address A! relative address

Mehr

Welche Register werden zur Parameterübergabe verwendet? In welcher Reihenfolge werden die Parameter auf dem Stack bzw. in den Registern abgelegt?

Welche Register werden zur Parameterübergabe verwendet? In welcher Reihenfolge werden die Parameter auf dem Stack bzw. in den Registern abgelegt? 6.5 MMIX Befehle 291 Aufrufkonventionen Eine Aufrufkonvention (engl. calling convention) legt fest, wie einer Funktion Parameter übergeben werden und wie der Rückgabewert zurückgegeben wird. Damit spezifiziert

Mehr

MMIX - Crashkurs. TI-II Rechnerarchitektur

MMIX - Crashkurs. TI-II Rechnerarchitektur MMIX - Crashkurs TI-II Rechnerarchitektur MMIX Einführung Aussprache: em-micks MMIX ist ein virtueller Prozessor, mit eigener Assemblersprache Um MMIX-Programme assemblieren und ausführen zu können, benötigt

Mehr

T c) Daten welcher Größenordnung kann ein Register aufnehmen: Byte, kilobytes, megabytes, gigabytes or terabytes?

T c) Daten welcher Größenordnung kann ein Register aufnehmen: Byte, kilobytes, megabytes, gigabytes or terabytes? 222 6 MMIXProzessor Verständnisfragen/Aufgaben Allgemein T a) Was ist ein Register? Kleiner aber Schneller Speicher T b) Wo findet man Register in einem ComputerSystem? Prozessor T c) Daten welcher Größenordnung

Mehr

4. TÜ-Zusammenfassung zum Modul Computersysteme

4. TÜ-Zusammenfassung zum Modul Computersysteme 4. TÜ-Zusammenfassung zum Modul Computersysteme Kurzzusammenfassung 6. Kapitel MMIX 256 Allzweckregister um Operanden abzuspeichern 32 Spezialregister bilden Schnittstelle zwischen Soft- und Hardware ALU(Arithmetic

Mehr

T e) Welche Eigenschaft müssen Byte-, Wyde-, Tetra- und Octa-Adressen beim MMIX haben?

T e) Welche Eigenschaft müssen Byte-, Wyde-, Tetra- und Octa-Adressen beim MMIX haben? 236 6 MMIX-Prozessor T e) Welche Eigenschaft müssen Byte-, Wyde-, Tetra- und Octa-Adressen beim MMIX haben? Byte : Reine besondere Eigenschaft wyde : durch 2 tutbar eetztesrstto Tetra : dutch 4 teicbar

Mehr

MMIX: Einführung. Einführung. Ressourcen. Aussprache: em-micks Autor: Donald Knuth

MMIX: Einführung. Einführung. Ressourcen. Aussprache: em-micks Autor: Donald Knuth MMIX: Einführung Einführung Aussprache: em-micks Autor: Donald Knuth MMIX ist ein virtueller Prozessor, mit eigener Programmiersprache MMIX-Programme sind maschinennah, d.h. eng an die Prozessorhardware

Mehr

Technische Informatik II Rechnerarchitektur

Technische Informatik II Rechnerarchitektur Technische Informatik II Rechnerarchitektur MMIX-Crashkurs Matthias Dräger, Markus Rudolph E-Mail: mdraeger@mi.fu-berlin.de rudolph@mi.fu-berlin.de www: tinyurl.com/mmix2010 www.matthias-draeger.info/lehre/sose2010ti2/mmix.php

Mehr

Übersicht. Quelle: Kapitel 3, 4 und 5 aus Anlauff, Böttcher, Ruckert: Das MMIX-Buch. Springer, 2002

Übersicht. Quelle: Kapitel 3, 4 und 5 aus Anlauff, Böttcher, Ruckert: Das MMIX-Buch. Springer, 2002 Übersicht Wiederholung: ein einfaches MMIX-Programm Speicherorganisation, Speicherzugriff Zahlen und Arithmetik Zeichenketten und Ein-/Ausgabe Kontrollstrukturen Unterprogramme Quelle: Kapitel 3, 4 und

Mehr

6 MMIX-Prozessor. 6.1 Programmiermodell. S.219 alles wichtig. 6.2 Register. Allzweckregister

6 MMIX-Prozessor. 6.1 Programmiermodell. S.219 alles wichtig. 6.2 Register. Allzweckregister 6 MMIXProzessor Modell eines Prozessors (keine LegacyEffekte) RegisterRegister Architektur mit 256 Allzweck Register und 32 Spezialregister Wortbreite der Register, des Rechenwerks, der Daten und AdressBusse:

Mehr

Nachfolgende Abbildung zeigt das Spezialregister ra, das Arithmetische Status Register. Interrupt Enable (Freischalten)

Nachfolgende Abbildung zeigt das Spezialregister ra, das Arithmetische Status Register. Interrupt Enable (Freischalten) 62 Register 205 Spezialregister Spezialregister (engl special purpose registers) haben im Gegensatz zu Allzweckregistern einen bestimmten Zweck, dh jedes Spezialregister hat seine ganz eigene Aufgabe Spezialregister

Mehr

ARM-Cortex-M4 / Thumb-2-Befehlssatz Adressierungsarten und arithmetische Operationen

ARM-Cortex-M4 / Thumb-2-Befehlssatz Adressierungsarten und arithmetische Operationen ARM-Cortex-M4 / Thumb-2-Befehlssatz Adressierungsarten und arithmetische Operationen Aufgabenstellung: - das beigefügte Assembler-Programm schrittweise ausführen - sich mit der Handhabung der Entwicklungswerkzeuge

Mehr

Technische Informatik II Rechnerarchitektur

Technische Informatik II Rechnerarchitektur Technische Informatik II Rechnerarchitektur 3.Unterprogramme in MMIX Matthias Dräger E-Mail: www: mdraeger@mi.fu-berlin.de www.matthias-draeger.info/lehre/sose2010ti2/ tinyurl.com/sose2010ti2 Zuletzt bearbeitet:

Mehr

6 MMIX-Prozessor MMIX-Prozessor

6 MMIX-Prozessor MMIX-Prozessor 218 6 MMI-Prozessor 6 MMI-Prozessor In diesem Kapitel beschäftigen wir uns mit dem MMI-Prozessor. Der MMI-Prozessor wurde von Donald Ervin Knuth zu Lehr- und Forschungszwecken an der Stanford University

Mehr

Speicher. T c) Daten welcher Größenordnung kann ein Register aufnehmen: Byte, kilobytes, megabytes, gigabytes or terabytes? einige Byte.

Speicher. T c) Daten welcher Größenordnung kann ein Register aufnehmen: Byte, kilobytes, megabytes, gigabytes or terabytes? einige Byte. R lzieloperanden rich 222 6 MMIXProzessor Verständnisfragen/Aufgaben Allgemein T a) Was ist ein Register? ein Schneller ate kleiner Speicher T b) Wo findet man Register in einem ComputerSystem? im Haupt

Mehr

6 MMIX-Prozessor MMIX-Prozessor

6 MMIX-Prozessor MMIX-Prozessor 218 6 MMI-Prozessor 6 MMI-Prozessor In diesem Kapitel beschäftigen wir uns mit dem MMI-Prozessor. Der MMI-Prozessor wurde von Donald Ervin Knuth zu Lehr- und Forschungszwecken an der Stanford University

Mehr

T e) Wie wird im Speicher an der Adresse 0x die 32 Bit-Zahl

T e) Wie wird im Speicher an der Adresse 0x die 32 Bit-Zahl 63 Speicher 237 T e) Wie wird im Speicher an der Adresse 0x2000000000000008 die 32 BitZahl 0x12345678 abgelegt im Falle einer BigEndian und einer LittleEndianMaschine? Adresse Big Endian Little Endian

Mehr

4 Prozessor-Datenpfad 4.1 Vom zu lösenden Problem abhängige Schaltung

4 Prozessor-Datenpfad 4.1 Vom zu lösenden Problem abhängige Schaltung 4 ProzessorDatenpfad 4.1 Vom zu lösenden Problem abhängige Schaltung Die Idee ist es nun nicht unflexible Schaltungen, die aus einer großen Anzahl von Komponenten bestehen und nur eine Aufgabe erledigen

Mehr

RO.RO, ADD RO, 120,121 MUL 120,120,121 INPUT RO, MUL INPUT 120,0 ADD RO, INPUT 121,1 INPUT R 1,2 INPUT 121,2 RO, IN put 121,1 N RO, ROIRA SET 121,3

RO.RO, ADD RO, 120,121 MUL 120,120,121 INPUT RO, MUL INPUT 120,0 ADD RO, INPUT 121,1 INPUT R 1,2 INPUT 121,2 RO, IN put 121,1 N RO, ROIRA SET 121,3 6 4 Prozessor-Datenpfad a) Schreiben Sie für den Universalrechner ein Programm in Assembler-Sprache, welches die drei Seiten eines Würfels von den Eingängen, und einliest, das Volumen des Würfels berechnet

Mehr

Hinweise. Auswertung. Einführung in die Technische Informatik WS 2007/2008 Bachelor-Klausur (TI) Aachen, 05. März 2008 SWS: V4/Ü2, ECTS: 7

Hinweise. Auswertung. Einführung in die Technische Informatik WS 2007/2008 Bachelor-Klausur (TI) Aachen, 05. März 2008 SWS: V4/Ü2, ECTS: 7 Professor Dr.-Ing. Stefan Kowalewski Dipl.-Inform. Philipp Kranen Dipl.-Inform. Andreas Polzer LEHRSTUHL INFORMATIK XI SOFTWARE FÜR EINGEBETTETE SYSTEME Aachen, 5. März 28 SWS: V4/Ü2, ECTS: 7 Einführung

Mehr

Hinweise. Auswertung. Einführung in die Technische Informatik WS 2006/2007 Bachelor-Klausur. Aachen, 07. März 2007 SWS: V2/Ü2, ECTS: 4

Hinweise. Auswertung. Einführung in die Technische Informatik WS 2006/2007 Bachelor-Klausur. Aachen, 07. März 2007 SWS: V2/Ü2, ECTS: 4 Professor Dr.-Ing. Stefan Kowalewski Dipl.-Inform. Andreas Polzer Dipl.-Inform. Ralf Mitsching LEHRSTUHL INFORMATIK XI SOFTWARE FÜR EINGEBETTETE SYSTEME Aachen, 07. März 2007 SWS: V2/Ü2, ECTS: 4 Einführung

Mehr

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9 Arithmetik, Register und Speicherzugriff Grundlagen der Rechnerarchitektur Assembler 9 Arithmetik und Zuweisungen Einfache Arithmetik mit Zuweisung C Programm: a = b + c; d = a e; MIPS Instruktionen: Komplexere

Mehr

4.3 Assembler 207 SET R0,0 INPUT R1,0 MUL R1,R1,R1 ADD R0,R0,R1 INPUT R1,1 MUL R1,R1,R1 ADD R0,R0,R1 INPUT R1,2 MUL R1,R1,R1 ADD R0,R0,R1 SQRT R0,R0

4.3 Assembler 207 SET R0,0 INPUT R1,0 MUL R1,R1,R1 ADD R0,R0,R1 INPUT R1,1 MUL R1,R1,R1 ADD R0,R0,R1 INPUT R1,2 MUL R1,R1,R1 ADD R0,R0,R1 SQRT R0,R0 4. Assembler 27 c) Schreiben Sie für den Universalrechner ein Programm in Assembler-Sprache, welches die an den Eingängen, 1 und 2 anliegenden Koordinaten eines Vektors im dreidimensionlen Raum einliest,

Mehr

Assembler als Übersetzer

Assembler als Übersetzer 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

Mehr

Übungsblatt 10 (Block C 2) (16 Punkte)

Übungsblatt 10 (Block C 2) (16 Punkte) georg.von-der-brueggen [ ] tu-dortmund.de ulrich.gabor [ ] tu-dortmund.de pascal.libuschewski [ ] tu-dortmund.de Übung zur Vorlesung Rechnerstrukturen Wintersemester 2016 Übungsblatt 10 (Block C 2) (16

Mehr

Technische Informatik I - HS 18

Technische Informatik I - HS 18 Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik I - HS 18 Musterlösung zu Übung 3 Datum : 25.-26. Oktober 2018 Aufgabe 1: Wurzelverfahren nach Heron Das

Mehr

Übung Praktische Informatik II

Übung Praktische Informatik II Übung Praktische Informatik II FSS 2009 Benjamin Guthier Lehrstuhl für Praktische Informatik IV Universität Mannheim guthier@pi4.informatik.uni-mannheim.de 20.03.09 4-1 Heutige große Übung Ankündigung

Mehr

Einführung Programmierpraktikum C Michael Zwick

Einführung Programmierpraktikum C Michael Zwick Einführung Programmierpraktikum C Michael Zwick Vorlesung, Übung & Fragestunde Dr.-Ing. Michael Zwick Raum Z945 zwick@tum.de (089) 289 23609 Tutorium Ab Dienstag: Auswahl Tutoriumsplatz auf www.ldv.ei.tum.de/lehre/computertechnik

Mehr

Nachfolgende Abbildung zeigt das Spezialregister ra, das Arithmetische Status Register. Interrupt Enable (Freischalten)

Nachfolgende Abbildung zeigt das Spezialregister ra, das Arithmetische Status Register. Interrupt Enable (Freischalten) 6.2 Register 205 Spezialregister Spezialregister (engl. special purpose registers) haben im Gegensatz zu Allzweckregistern einen bestimmten Zweck, d.h. jedes Spezialregister hat seine ganz eigene Aufgabe.

Mehr

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht Kap.2 Befehlsschnittstelle Prozessoren, externe Sicht 2 Befehlsschnittstelle 2.1 elementare Datentypen, Operationen 2.2 logische Speicherorganisation 2.3 Maschinenbefehlssatz 2.4 Klassifikation von Befehlssätzen

Mehr

4.3 Assembler. Assembler als leicht verständliche hardwarenahe Sprache Prozessor-Datenpfad

4.3 Assembler. Assembler als leicht verständliche hardwarenahe Sprache Prozessor-Datenpfad 24 4 Prozessor-Datenpfad 4.3 Assembler Die Programmierung des Universalrechners durch Niederschreiben der einzelnen Befehlswort-Bits aller Befehle ist sehr aufwendig. Aus diesem Grund wird dieser Schritt

Mehr

Rechnergrundlagen SS Vorlesung

Rechnergrundlagen SS Vorlesung Rechnergrundlagen SS 2007 3. Vorlesung Inhalt Zahlensysteme Binäre Darstellung von Integer-Zahlen Vorzeichen-Betrag Binary Offset 1er-Komplement 2er-Komplement Addition und Subtraktion binär dargestellter

Mehr

Assembler-Unterprogramme

Assembler-Unterprogramme Assembler-Unterprogramme Rolle des Stack Prinzipieller Ablauf Prinzipieller Aufbau Unterprogramme void main(void) int sub(int i) { { int i,k; return i*2; i = sub(13); } k = sub(14); } Wie macht man das

Mehr

Daniel Betz Wintersemester 2011/12

Daniel Betz Wintersemester 2011/12 Daniel Betz Wintersemester 2011/12 Digitally signed by daniel.betz@daniel-betz.com Date: 2011.12.04 17:24:40 +01'00' Insgesamt 16 Register von je 16 Bit (=WORD) Breite Untere 8 Register auch als 2 Register

Mehr

Sprungbefehle und Kontroll-Strukturen

Sprungbefehle und Kontroll-Strukturen Sprungbefehle und Kontroll-Strukturen Statusregister und Flags Sprungbefehle Kontrollstrukturen Das Status-Register 1 Register-Satz des ATmega128 Universal-Register (8Bit) R0..R15 16 Bit Program counter

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 1: Von der Maschinensprache zu C Prof. Dr. Maschinensprache: MIPS R2000 Was bewirkt folgendes Programm: 00100111101111011111111111100000 10101111101111110000000000010100

Mehr

MMIX Crashkurs Teil 3 Unterprogramme und Parameterübergabe. Freiling/Wienzek/Mink Vorlesung Rechnerstrukturen RWTH Aachen Sommersemester 2005

MMIX Crashkurs Teil 3 Unterprogramme und Parameterübergabe. Freiling/Wienzek/Mink Vorlesung Rechnerstrukturen RWTH Aachen Sommersemester 2005 MMIX Crashkurs Teil 3 Unterprogramme und Parameterübergabe Freiling/Wienzek/Mink Vorlesung Rechnerstrukturen RWTH Aachen Sommersemester 2005 Unterprogramme Hauptproblem heutiger Softwareentwicklung liegt

Mehr

PC/XT/AT ASSEMBLER-BUCH

PC/XT/AT ASSEMBLER-BUCH PC/XT/AT ASSEMBLER-BUCH Alle Befehle + Makro-Assembler KLAUS-DIETER THIES t

Mehr

SUB $2,$5,10 Zeile 1 LDO $5,$0,2*8 Zeile 2 OR $1,$2,$3 Zeile 3 SRU $1,$5,$1 Zeile 4.

SUB $2,$5,10 Zeile 1 LDO $5,$0,2*8 Zeile 2 OR $1,$2,$3 Zeile 3 SRU $1,$5,$1 Zeile 4. 33 7 Pipelining Gegeben ist der folgende Ausschnitt aus einer MMIX Codesequenz: SUB $2,$5, Zeile LDO $5,$,2* Zeile 2 OR $,$2,$3 Zeile 3 SRU $,$5,$ Zeile 4 Zeile und 3 wg b) Geben Sie alle auftretenden

Mehr

TI II. Sommersemester 2009 Prof. Dr. Mesut Güneş 7. Aufgabenblatt mit Lösungen

TI II. Sommersemester 2009 Prof. Dr. Mesut Güneş 7. Aufgabenblatt mit Lösungen 7. Aufgabenblatt mit Lösungen Problem 1: IEEE-Gleitkommazahlen (2+2+4=8) a) Welchen Bereich der positiven Zahlen kann man mit normalisierten Gleitkommazahlen im IEEE-754-Format mit 64 Bit darstellen? b)

Mehr

"Organisation und Technologie von Rechensystemen 4"

Organisation und Technologie von Rechensystemen 4 Klausur OTRS-4, 29.09.2004 Seite 1 (12) INSTITUT FÜR INFORMATIK Lehrstuhl für Rechnerarchitektur (Informatik 3) Universität Erlangen-Nürnberg Martensstr. 3, 91058 Erlangen 29.09.2004 Klausur zu "Organisation

Mehr

U23 Assembler Workshop

U23 Assembler Workshop Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface

Mehr

Unterprogramme. Unterprogramme

Unterprogramme. Unterprogramme Unterprogramme Unterprogramme wichtiges Hilfsmittel für mehrfach benötigte Programmabschnitte spielen in höheren Programmiersprachen eine wesentliche Rolle in Assembler sind bestimmte Konventionen nötig

Mehr

6 MMIX-Prozessor MMIX-Prozessor

6 MMIX-Prozessor MMIX-Prozessor 218 6 MMIProzessor 6 MMIProzessor In diesem Kapitel beschäftigen wir uns mit dem MMIProzessor Der MMIProzessor wurde von Donald Ervin Knuth zu Lehr und Forschungszwecken an der Stanford University entwickelt

Mehr

Selbststudium Informationssysteme - H1102 Christian Bontekoe & Felix Rohrer

Selbststudium Informationssysteme - H1102 Christian Bontekoe & Felix Rohrer Übung RA, Kapitel 1.5 1. Beantworten Sie bitte folgende Repetitionsfragen 1. Beschreiben Sie in eigenen Worten und mit einer Skizze die Schichtung einer Multilevel Maschine. Folie 5, rechte Seite 2. Welche

Mehr

6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten

6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten 6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten 6.1 Gegenstand der Vorlesung Interne Organisation - Architektur - Register - Statusbits - Speicherstruktur Basis-Adressierungsarten - direct - absolute

Mehr

Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009

Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009 Fachgebiet Rechnerarchitektur Fachbereich Informatik Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009 Aufgabe 9.1: Dinatos-Algorithmus-Analyse Die folgenden Verilog-Zeilen

Mehr

Assembler am Beispiel der MIPS Architektur

Assembler am Beispiel der MIPS Architektur Assembler am Beispiel der MIPS Architektur Frühere Einsatzgebiete MIPS Silicon Graphics Unix Workstations (z. B. SGI Indigo2) Silicon Graphics Unix Server (z. B. SGI Origin2000) DEC Workstations (z.b.

Mehr

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen Mikroprozessoren Grundlagen Aufbau, Blockschaltbild Grundlegende Datentypen AVR-Controller Anatomie Befehlssatz Assembler Speicherzugriff Adressierungsarten Kontrollstrukturen Stack Input / Output (I/O)

Mehr

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case

Mehr

Zur Multiplikation von Gleitkommazahlen müssen die Mantissen inkl. führender 1, als Festkommazahlen multipliziert werden.

Zur Multiplikation von Gleitkommazahlen müssen die Mantissen inkl. führender 1, als Festkommazahlen multipliziert werden. 70 Arithmetische Schaltungen Multiplikation vorzeichenbehafteter Zahlen Zur Multiplikation vorzeichenbehafteter Zahlen (er-komplement) kann auf die Schaltung für vorzeichenlose Multiplikation zurückgegriffen

Mehr

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Vorbesprechung U8 Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Basistypen Alignment der Basistypen auf deren Grösse Grössen (abhängig

Mehr

Lösung 5. Übungsblatt

Lösung 5. Übungsblatt Fakultät Informatik, Technische Informatik, Lehrstuhl für Eingebettete Systeme Lösung 5. Übungsblatt Entwicklung eines Mikroprogrammsteuerwerks und Maschinen-programmierung für einen einfachen Rechner.

Mehr

stackpointer dentals Basisadresse Arbeitsspeicher, Program mdaten wte Reicksprungadreson ltbergabe parameter Dater warden immeruber stack pointer

stackpointer dentals Basisadresse Arbeitsspeicher, Program mdaten wte Reicksprungadreson ltbergabe parameter Dater warden immeruber stack pointer 322 6 MMIXProzessor T i) Was ist der Stack? Bereich im Program mdaten wte lokale Arbeitsspeicher der lokale Register Reicksprungadreson ltbergabe parameter enthaet T j) Wo beginnt der Stack und in welche

Mehr

Der Nachfolger von MIX MMIX

Der Nachfolger von MIX MMIX Der Nachfolger von MIX MMIX Autor: Sven Bormann Matr.No.: 33196 Semester: I7EI Datum: 07.02.2004-1 - Inhaltsverzeichnis Inhaltsverzeichnis...2 1. Wofür einen neuen RISC-Prozessor?...5 2. Was bedeutet der

Mehr

32 Bit Konstanten und Adressierung. Grundlagen der Rechnerarchitektur Assembler 78

32 Bit Konstanten und Adressierung. Grundlagen der Rechnerarchitektur Assembler 78 32 Bit Konstanten und Adressierung Grundlagen der Rechnerarchitektur Assembler 78 Immediate kann nur 16 Bit lang sein Erinnerung: Laden einer Konstante in ein Register addi $t0, $zero, 200 Als Maschinen

Mehr

Assembler als Übersetzer

Assembler als Übersetzer 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

Mehr

Rechnernetze und Organisation

Rechnernetze und Organisation Framework für Assignment A2 1 Übersicht Framework für Assignment A2 WH: Aufgabenstellung Klassen und Methoden Getting started Erste Instruktion aus Testdaten dekodieren 2 Aufgabenstellung Instruction-Set

Mehr

Programmieren 1 C Überblick

Programmieren 1 C Überblick Programmieren C Überblick. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen

Mehr

Arrays (Felder/Vektoren)

Arrays (Felder/Vektoren) Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff

Mehr

1 pulsierender Speicher

1 pulsierender Speicher 1 pulsierender Speicher 1.1 Aufgabentyp Gegeben sei das folgende C-Programm: [...] (a) Geben Sie den Gültigkeitsbereich jedes Objektes des Programms an. (b) Stellen Sie die Rechnung des Programms für die

Mehr

U23 Assembler Workshop

U23 Assembler Workshop Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface

Mehr

0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags.

0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags. 3. Assembler-Programmierung Der PIC 16F84A Microcontroller kennt 35 verschiedene Befehle. Für eine ausführliche Beschreibung aller Befehle siehe PIC16F84A-Datenblatt Kapitel 7.1. 3.1 Wichtige Flaggen im

Mehr

Grundlagen der Rechnerarchitektur. MIPS Assembler

Grundlagen der Rechnerarchitektur. MIPS Assembler Grundlagen der Rechnerarchitektur MIPS Assembler Übersicht Arithmetik, Register und Speicherzugriff Darstellung von Instruktionen Logische Operationen Weitere Arithmetik Branches und Jumps Prozeduren 32

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 22: Mima-X Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Rechnerstrukturen Wintersemester 2002/03. Maschinensprache Opcode, Operanden, Adressierung Für Menschen schwer verdauliche Folgen von 0 und 1

Rechnerstrukturen Wintersemester 2002/03. Maschinensprache Opcode, Operanden, Adressierung Für Menschen schwer verdauliche Folgen von 0 und 1 (c) Peter Sturm, Universität Trier 1 Rechnerstrukturen 8. Assembler Für Hartgesottene Maschinensprache Opcode, Operanden, Adressierung Für Menschen schwer verdauliche Folgen von 0 und 1 Assembler Symbolische

Mehr

2. Aufgabenblatt mit Lösungen

2. Aufgabenblatt mit Lösungen Problem 1: (6*1 = 6) TI II 2. Aufgabenblatt mit Lösungen Geben Sie für jede der folgenden Zahlen deren Ziffernschreibweisen im Dezimal-, Dual-, Oktal- und Hexadezimal-System an. a) (2748) 10 b) (1010011011)

Mehr