MMIX Assembler Programmierung Dr. Michael Zwick. Zahldarstellung

Größe: px
Ab Seite anzeigen:

Download "MMIX Assembler Programmierung Dr. Michael Zwick. Zahldarstellung"

Transkript

1 MMIX Assembler Programmierung Dr. Michael Zwick Zahldarstellung Festkommazahlen Vorzeichenlose Zahlen n Bit => 2 n verschiedene Werte darstellbar Wertebereich: n - 1 Kodierung: , , , , , usw. Vorzeichenbehaftete Zahlen 2er-Komplement Kodierung: alle Bits invertieren (= 1er-Komplement), dann 1 addieren Wertebereich: -2 n-1,..., 0,..., 2 n-1-1 1er-Komplement Kodierung: Alle Bits invertieren Wertebereich: -2 n-1 + 1,... -0, +0,..., 2 n-1-1 Vorzeichen & Betrag Kodierung: Bit n-1 ist Vorzeichen, Bits n-2,..., 0 ist Betrag der Zahl Wertebereich: -2 n-1 + 1,... -0, +0,..., 2 n Festkommazahlen Zahlenring für 4 Bit: negative positive Zahlen Zahlen Bereichsüberschreitung bei vorzeichenbehafteten Zahlen 4 3 Bereichsüberschreitung bei vorzeichenlosen Zahlen 4

2 Gleitkommazahlen Kodierung: s e f Wert = ( 1) s 2 e K 1.f normale Genauigkeit (32 Bit) s = 1 Bit e = 8 Bit f = 23 Bit K = 127 doppelte Genauigkeit () s = 1 Bit e = 11 Bit f = 52 Bit K = Gleitkommazahlen Besondere Werte Wert 0 e = 0 und f = 0 Denormalisierte Zahlen e = 0 und f > 0 Wert = (-1) s 0.f 2 1-K Normalisierte Zahlen 32 Bit: 0 < e < 255 : 0 < e < 2047 Wert = (-1) s 1.f 2 e-k Unendlich 32 Bit: e = 255, f = 0 : e = 2047, f = 0 NaN = Not a Number 32 Bit: e = 255, f > 0 : e = 2047, f > 0 6 Gleitkommazahlen Vorsicht bei Äußeren Grenzen (maximaler Betrag) 8e e307: e+308 9e e307: inf Inneren Grenzen (um 0 herum) Löchern zwischen den Zahlen Genauigkeit 32 Bit: ca. 7 Dezimalstellen : ca. 15 Dezimalstellen Rundungsfehlern Auf Gleichheit mit Interval vergleichen : : Zeichen American Standards Code for Information Interchange (ASCII) Bytecode Unterschiedliche Nullen 0: Zahl Null; als 0x00 codiert \0 : Ende einer Zeichenkette; als 0x00 codiert 0 : Zeichen Null; als 48 = 0x30 codiert ASCII-Zeichentabelle, hexadezimale Nummerierung Code A B C D E F 0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 2 SP " # $ % & ' ( ) * +, -. / : ; < = >? A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ _ 6 ` a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { } ~ DEL 8

3 Zeichen Druckbare Zeichen a..z, A..Z,, *, etc. Beginnen in der ASCII-Tabelle bei 32 Steuerzeichen nicht druckbare Zeichen Einträge 0,..., 31 der ASCII-Tabelle Dienten zur Steuerung von Druckern, Fernschreibern etc. 0x12: LF (line feed; strg + J) 0x10: BS (backspace; strg + H): Bewegt den Druckkopf 1 Zeichen rückwärts 0x07: BEL (bell; strg + G); Klingel des Fernschreibers Nur wenige der 32 Steuerzeichen noch in Verwendung Kodierungstabellen (Code Pages) Beschreiben Einträge der ASCII-Tabelle *0 *1 *2 *3 *4 *5 *6 *7 *8 *9 *A *B *C *D *E *F 0* 1* 2* " # $ % & ' ( ) * +, -. / 3* : ; < = >? A B C D E F G H I J K L M N O 5* P Q R S T U V W X Y Z [ \ ] ^ _ 6* ` a b c d e f g h i j k l m n o 7* p q r s t u v w x y z { } ~ 8* Ç ü é â ä à å ç ê ë è ï î ì Ä Å 9* É æ Æ ô ö ò û ù ÿ Ö Ü ø Ø ƒ A* á í ó ú ñ Ñ ª º ½ ¼ B* Á Â À C* ã Ã D* ð Ð Ê Ë È ı Í Î Ï Ì E* Ó ß Ô Ò õ Õ µ þ Þ Ú Û Ù ý Ý F* ± ¾ ¹ ³ ² 437: English 708: Arabisch : Westeuropa Unicode-Zeichen ISO 10646; UCS = Universal Character Set UTF: UCS Transformation Format UTF-32: 32 Bit breit => 4 Milliarden Zeichen UTF-8: Mehrfach-Byte Kodierung Zeichenketten Zeichenketten = Array aus Zeichen Beispiel: Hallo Adresse Address (hex) Daten Data (char) Daten Data (hex) Data Daten (binary) (binär) 0xxxxxxx 110xxxxx 10xxxxxx 1110xxxx 10xxxxxx 10xxxxxx 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx... 0x39A0BFFC 0x39A0BFFD 0x39A0BFFE 0x39A0BFFF 0x39A0C000 0x39A0C001 0x39A0C 'H' H 'a' a 'l' l 'l' l 'o' o \0 '\0' x48 0x61 0x6C 0x6C 0x6F 0x

4 Aufgaben S MMIX Architektur MMIX = 2009 (Cray I + IBM801 + RISC II + ClipperC300 + AMD29K + Motorola88K + IBM601 + Intelli960 + Alpha Power2 + MIPSR HitachiSuperH4 + StrongARM110 + Sparc64)/14 = 2009 Durchschnittlicher RISC Prozessor MMIX Architektur MMIX = Prozessor Modell Entwickelt für Forschung & Lehre Kein real existierender Prozessor keine Legacy-Effekte Sehr regulärer Befehlssatz (RISC) einfach erlernbar einfach in Hardware implementierbar => einfacher Datenpfad Nur wenige Spezialregister einfach zu merken aufgrund der geringen Anzahl Viele Allzweckregister trotz hoher Anzahl einfach zu merken, da alle gleich verwendet werden können mit nahezu jedem Befehl kombiniert werden Simulationstools verfügbar (auf unserer Webseite) (Erweiterung für GCC Compiler verfügbar) 16

5 MMIX Architektur Programmier-Architektur Spezial- Allzweck- Speicher 8, 16, 32, MMIX 32 Bit Befehlswort OP X Y Z 8, 16, 24 Bit Rechen- werk (ALU) 8 Bit 17 MMIX Architektur Allzweckregister MMIX Architektur Allzweckregister Spezial- Allzweck- Speicher $255 rg Globale 32 Bit Befehlswort OP X Y Z 8, 16, 24 Bit Rechen- werk (ALU) 8, 16, 32, 8 Bit rl $0 Marginale Lokale 19 20

6 MMIX Architektur Spezialregister Spezial- 32 Bit Befehlswort OP X Y Z 8, 16, 24 Bit Rechen- werk (ALU) Allzweck- 8, 16, 32, 8 Bit Speicher MMIX Architektur Spezialregister Zur Steuerung des Prozessors Welche Interrupts sollen auftreten können? Wie sollen virtuelle Adressen in reale Adressen gewandelt werden? Zwischenspeichern von Operanden falls Interrupts auftreten Welcher Rundungsmodus bei Gleitkommazahlen? Auslesen von (Status-) Informationen Wieviele Befehle wurden ausgeführt? Rest einer Division Zeit/Takte MMIX hat 32 Spezialregister ra, rb,... rz, rbb, rtt, rww, rxx, ryy, rzz Zugriff nur über PUT und GET MMIX Architektur ra: Arithmetisches Status 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 Gleitkomma-Rundungsmodus Gleitkommazahl ungenau (z.b. 1.0 / 3.0) Gleitkomma-Division durch 0 Gleitkomma-Unterlauf Gleitkomma-Überlauf Unerlaubte Gleitkomma- Operation, z.b. sqrt(-1.0) Überlauf bei Wandlung Gleitkomma- in Festkommazahl Festkomma-Überlauf Festkomma-Division durch 0 00: Nächster Wert (standard) 01: Abrunden (Richtung 0) 10: Aufrunden (Richtung + ) 11: Abrunden (Richtung - ) 8 8 MMIX Architektur rc: Cycle counter; zählt Prozessortakte rd: Dividend Speichert die oberen eines 128 Bit breiten Dividenden 128 Bit / = re: Epsilon Epsilon-Wert für Gleitkomma-Vergleiche FCMPE = floating compare with respect to epsilon rh: Himult Speichert die oberen eines 128 Bit Multiplikations-Ergebnisses x = 128 Bit rr: Remainder Rest einer Festkomma-Division Beispiel: 7 / 3 = 2 Rest

7 MMIX Architektur Arbeitsspeicher Spezial- Allzweck- Speicher Aufgaben S Bit Befehlswort OP X Y Z 8, 16, 24 Bit 8, 16, 32, Processor die Rechen- werk (ALU) 8 Bit 26 Arbeitsspeicher Speicher-Organisation 0x = Text_Segment 0x FF 0x Interruptvektoren MMIX-Programme Text- segment Arbeitsspeicher 0x1FFFFFFFFFFFFFFF 0x = Data_Segment 0x3FFFFFFFFFFFFFFF 0x = Pool_Segment Variable Datensegment Stack Poolsegment 0x5FFFFFFFFFFFFFFF 0x = Stack_Segment Stacksegment 0x7FFFFFFFFFFFFFFF 0x Für Betriebssystem reservierter Bereich 0xFFFFFFFFFFFFFFFF 28

8 Arbeitsspeicher Text Segment: Interrupt Vektoren Bei einem Fehler wird an die entspre- chende Stelle im Text-Segment ge- sprungen Dort steht dann der Programm-Code, der in die eigentliche Fehler-Routine verzweigt 0x00 0x04 0x08 0x0C 0x10 0x14 0x18 0x1C 0x20 0x24 0x28 0x2C 0x30 0x34 0x38 0x3C 0x40 0x44 0x48 0x4C 0x50 0x54 0x58 0x5C 0x60 0x64 0x68 0x6C 0x70 0x74 0x78 0x7C 0x80 0x84 0x88 0x8C Allgemeine Fehler Festkomma-Division durch 0 Überlauf Festkommazahl Überlauf bei Gleitkomma- Integer-Wandlung Unerlaubte Gleitkommaoperation Überlauf Gleitkommazahl Unterlauf Gleitkommazahl Gleitkomma-Division durch 0 Gleitkommazahl ungenau 29 Arbeitsspeicher Speicher-Organisation 0x = Text_Segment 0x FF 0x x1FFFFFFFFFFFFFFF 0x = Data_Segment 0x3FFFFFFFFFFFFFFF 0x = Pool_Segment 0x5FFFFFFFFFFFFFFF 0x = Stack_Segment 0x7FFFFFFFFFFFFFFF 0x xFFFFFFFFFFFFFFFF Variable Stack Interruptvektoren MMIX-Programme Datensegment Poolsegment Stacksegment Für Betriebssystem reservierter Bereich Text- segment 30 Arbeitsspeicher Pool Segment Kommunikation zwischen Betriebssystem und Benutzerprogramm Übergabe von Ausführungs-Parametern an das Benutzerprogramm Auslesen des Ergebnisses der Programmausführung Programm-Start In 0 wird die Anzahl der Argumente abgespeichert (argc) In 1 wird ein Zeiger auf ein Zeigerliste im Pool-Segment gespeichert (argv) Liste enthält Zeiger auf Zeichenketten/Strings Erster Parameter ist immer der Name des Programms, dann kommen die Parameter Liste endet mit 0 Beispiel: mmix skalprodarg In 0 wird 10 abgespeichert, da es 10 Argumente sind In 1 wird 0x als Startadresse abgespeichert 31 Arbeitsspeicher Pool Segment "#$%%$ &$#'(C8)OE &$#'C5(7//E 0x \0 \0 \0 \0 \0 \0 0x \0 \0 \0 \0 \0 \0 ` 0x \0 \0 \0 \0 \0 \0 p 0x \0 \0 \0 \0 \0 \0 x 0x \0 \0 \0 \0 \0 \0 Ç 0x \0 \0 \0 \0 \0 \0 ê 0x \0 \0 \0 \0 \0 \0 É 0x \0 \0 \0 \0 \0 \0 ÿ 0x \0 \0 \0 \0 \0 \0 á 0x \0 \0 \0 \0 \0 \0 0x \0 \0 \0 \0 \0 \0 0x x \0 \0 \0 \0 \0 \0 \0 \0 0x x736b616c70726f64 s k a l p r o d 0x x a r g \0 \0 \0 \0 \0 0x x \0 \0 \0 \0 \0 \0 \0 0x x \0 \0 \0 \0 \0 \0 \0 0x x \0 \0 \0 \0 \0 \0 \0 0x x \0 \0 \0 \0 \0 \0 \0 0x x \0 \0 \0 \0 \0 \0 \0 0x x \0 \0 \0 \0 \0 \0 0x a0 0x \0 \0 \0 \0 \0 \0 0x a8 0x \0 \0 \0 \0 \0 \0 0x b0 0x \0 \0 \0 \0 \0 \0 0x b8 0x \0 0 \0 \0 \0 \0 \0 \0 32

9 Arbeitsspeicher Speicher-Organisation Arbeitsspeicher Virtueller und Realer Speicher 0x = Text_Segment 0x FF 0x x1FFFFFFFFFFFFFFF 0x = Data_Segment 0x3FFFFFFFFFFFFFFF 0x = Pool_Segment 0x5FFFFFFFFFFFFFFF 0x = Stack_Segment 0x7FFFFFFFFFFFFFFF 0x Variable Stack Interruptvektoren MMIX-Programme Datensegment Poolsegment Stacksegment Text- segment Spezial- 32 Bit Befehlswort OP X Y Z 8, 16, 24 Bit Rechen- werk (ALU) Allzweck- 8, 16, 32, 8 Bit Adressraum je Programm (virtueller Speicher) Interruptvektoren Interruptvektoren Interruptvektoren MMIX-Programme Interruptvektoren MMIX-Programme Interruptvektoren Variable MMIX-Programme Interruptvektoren Variable MMIX-Programme Datensegment Variable MMIX-Programme Stack Datensegment Variable MMIX-Programme Stack Datensegment Variable Poolsegment Stack Datensegment Variable Poolsegment Stack Datensegment Poolsegment Stack Datensegment Poolsegment Stacksegment Stack Poolsegment Stacksegment Poolsegment Stacksegment Stacksegment Für Betriebssystem Stacksegment reservierter Bereich Für Betriebssystem Stacksegment reservierter Bereich Für Betriebssystem reservierter Bereich Für Betriebssystem reservierter Bereich Für Betriebssystem reservierter Bereich Für Betriebssystem reservierter Bereich realer Speicher Für Betriebssystem reservierter Bereich 0xFFFFFFFFFFFFFFFF Arbeitsspeicher Alignment Arbeitsspeicher Alignment "#$%%$ &'($ )'"$ *$(#+,-( "#$%%$ &'($ )'"$ *$(#+,-( x01 0x01 0x x23 0x23 0x x45 0x45 0x x67 0x67 0x x89 0x89 0x xAB 0xAB 0xAB xCD 0xCD 0xCD xEF 0xEF 0xEF x01 0x23 0x45 0x67 0x89 0xAB 0xCD 0xEF 35 36

10 Arbeitsspeicher Alignment Welches Wort ist an Adresse 0x gespeichert? "#$%%$ &'($ )'"$ *$(#+,-( x01 0x01 0x x23 0x23 0x x45 0x45 0x x67 0x67 0x x89 0x89 0x xAB 0xAB 0xAB xCD 0xCD 0xCD xEF 0xEF 0xEF x x x x ABCDEF x x2301 0xEFCDAB x01 0x23 0x45 0x67 0x89 0xAB 0xCD 0xEF Arbeitsspeicher Byte-Reihenfolge beim Abspeichern von Datenworten Big "#$%%$ Endian &'($ )'"$ *$(#+,-( Adressierung 0000 des höherwertigsten 0x01 Bytes 0x01 0x01 0x MMIX, 0001 MIPS, SPARC, Atmel 0x23AVR32,... 0x23 0x23 0x x ABCDEF x45 0x45 0x45 0x x67 0x67 0x67 0x x89 0x89 0x89 0x Little 0000 Endian xAB 0xAB 0xAB 0xAB Adressierung 0110 des niederwertigsten 0xCD Bytes 0xCD 0xCD 0xCD Intel 0111 x86, Renesas SH, 0xEF... 0xEF 0xEF 0xEF xEFCDAB Aufgaben S MMIX Programme

11 MMIX Programme Format von MMIX-Programmen Marke Befehl Operanden Kommentar LOC Data_Segment SP GREG Pool_Segment A OCTA init memory a IS $1 name $1 as a LOC #100 Main LDO a,a other comment Start SUB SP,SP,8 push to stack STO a,:sp, Assembler- und Loader-Befehle // Zeilen, die mit einem Sonderzeichen * beginnen, sind ein Kommentar 41 Assembler- und Loader-Befehle Assembler-Befehle werden vom Assembler ausgeführt Der Assembler ist das Programm, das MMIX-Quellcode in auf MMIX-Prozessoren ausführbaren MMIX-Maschinencode übersetzt Ein MMIX-Assembler-Programm ist auf der LDV-Webseite herunterladbar beeinflussen die Maschinencode-Generierung des Assemblers Der IS-Befehl führt eine reine Text-Ersetzung durch wie die Präprozessor-Anweisung #define in der Programmiersprache C ermöglicht es, namen $1, $2,... durch beliebige Namen zu ersetzen ADD $1,$2,$3 Assembler 0x ADD x,y,z Assembler 0x Assembler Befehle: x IS $1 y IS $2 z IS $3 43 Assembler- und Loader-Befehle Loader-Befehle werden vom Loader ausgeführt der Loader ist das Betriebssystem-Programm, das Benutzerprogramme in den Speicher lädt und dann ausführt werden vom Assembler aus dem MMIX-Quelltext generiert; Beispiel: Der MMIX-Quelltext enthält Anweisungen, welche Variable an welchen Speicheradressen abgelegt werden sollen Der Assembler erzeugt dann bei der Übersetzung des Quelltexts Loader-Befehle, die vom Loader interpretiert werden können, und schreibt diese zusammen mit den MMIX-Maschinenbefehlen in die ausführbare Binärdatei Wenn die Binärdatei ausgeführt werden soll, wird sie vom Loader in den Arbeitsspeicher geladen. Anschließend werden die in der Binärdatei enthaltenen Loader-Befehle vom Loader interpretiert und ausgeführt. Als Folge wird z.b. vom Betriebssystem Speicher für Variable angelegt und entsprechend der Loader-Befehle initialisiert. 44

12 Assembler- und Loader-Befehle Der GREG-Befehl GREG = Reserviere ein globales ; Beispiele: reserviert das nächste globale und weist diesem als Wert die aktuelle Position zu (@ bedeutet: the place where we are at the moment ) SP GREG # reserviert das nächste globale und weist diesem den Wert 0x zu das reservierte globale kann mit dem Namen SP angesprochen werden Assembler- und Loader-Befehle Der LOC-Befehl LOC = Locate; Locate an address legt die Start-Adresse für alle nachfolgenden Aktionen fest Beispiele: LOC Data_segment = LOC # Beginne beim Beginn des Datensegments Ab dieser Adresse werden die Variable abgelegt LOC #100 Beginne bei Adresse 0x100, d.h. direkt nach den Interruptvektoren Ab dieser Adresse wird der Programmcode abgelegt Assembler- und Loader-Befehle Die Befehle BYTE, WYDE, TETRA und OCTA reservieren 8 Bit (BYTE), 16 Bit (WYDE), 32 Bit (TETRA) oder (OCTA) an der aktuellen Adresse werden benutzt um Variable anzulegen können auch mehrere Variable des gleichen Typs anlegen, falls diese durch Komma getrennt werden; mit Anführungszeichen unterstützt BYTE Strings berücksichtigen automatisch das Alignment, d.h. Bytes können an jeder Adresse abgelegt werden Wydes werden an durch 2 teilbaren Adressen (letztes Adressbit = 0) abgelegt Tetras werden an durch 4 teilbaren Adressen (letzten beiden Adr.-Bits = 0) abgelegt Octas werden an durch 8 teilbaren Adressen (letzten drei Adr.-Bits = 0) abgelegt Assembler- und Loader-Befehle Die Befehle BYTE, WYDE, TETRA und OCTA Beispiele: A OCTA 10 Ist die aktuelle Adresse durch 8 teilbar, dann wird an dieser Adresse ein breites Datenwort reserviert Ist die aktuelle Adresse nicht durch 8 teilbar, wird die nächste durch 8 teilbare Adresse verwendet An die reservierte Adresse wird die breite Festkommazahl 10 gespeichert Die Speicherung erfolgt Big-Endian Auf die reservierte Adresse, und damit auch auf 10, kann über die Marke A zugegriffen werden A OCTA wie oben, jedoch fehlt die Initialisierung, d.h. an der durch A ansprechbaren Adresse steht ein undefinierter Wert 47 48

13 Assembler- und Loader-Befehle Beispiel Assembler- und Loader-Befehle Alignment LOC # LOC Data_Segment N WYDE ID OCTA Name BYTE Das ist ein String.,0 49 LOC 0 B WYDE #0123 W TETRA #89ABCDEF "#$%%$ Adresse Byte &'($ Wyde )'"$ Tetra *$(#+ Octa,-( x01 0x01 0x x23 0x23 0x x89 0x89 0x xAB 0xAB 0xAB xCD 0xCD 0xCD xEF 0xEF 0xEF x01 0x23 0x89 0xAB 0xCD 0xEF 50 Aufgaben S MMIX Befehlsformat

14 MMIX Befehlsformat Was wird zu MMIX-Befehlen? Marke Befehl Operanden Kommentar LOC Data_Segment SP GREG Pool_Segment A OCTA init memory a IS $1 name $1 as a LOC #100 Main LDO a,a other comment Start SUB SP,SP,8 push to stack STO a,:sp, MMIX Befehlsformat 32 Bit Befehlswort 31 Allgemein Opcode 1. Operand = X 2. Operand = Y 3. Operand = Z Befehl Ziel Quelle 1 Quelle 2 Speicher-Befehle 16 Befehl Quelle Ziel Ziel // Zeilen, die mit einem Sonderzeichen * beginnen, sind ein Kommentar MMIX Befehlsformat 32 Bit Befehlswort 31 Label ADD $1,$2,$3 Kommentar Opcode 1. Operand = X 2. Operand = Y 3. Operand = Z 0x20 0x01 0x02 0x x0.. 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..

15 0x0.. 0x1.. 0x2.. 0x3.. 0x4.. 0x5.. 0x6.. 0x7.. 0x8.. 0x9.. 0xA.. 0xB.. 0x..0 0x..1 0x..2 0x..3 0x..4 0x..5 0x..6 TRAP 5ν FCMP ν FUN ν FEQL ν FADD 4ν FIX 4ν FSUB 4ν FLOT[I] 4ν FLOTU[I] 4ν SFLOT[I] 4ν SFLOT FMUL 4ν FCMPE 4ν FUNE ν FEQLE 4ν FDIV 40ν FSQRT 40ν FREM 4ν MUL[I] 10ν MULU[I] 10ν DIV[I] 60ν DIVU ADD[I] ν ADDU[I] ν SUB[I] ν SUB 2ADDU[I] ν 4ADDU[I] ν 8ADDU[I] ν 16AD CMP[I] ν CMPU[I] ν NEG[I] ν NEG SL[I] ν SLU[I] ν SR[I] ν SR BN[B] ν+π BZ[B] ν+π BOD[ BNZ[B] ν+π BEV[ PBZ[B] 3ν-π PBOD[ BNN[B] ν+π PBN[B] 3ν-π PBNN[B] 3ν-π CSN[I] ν CSNN[I] ν ZSN[I] ν ZSNN[I] ν LDB[I] µ+ν LDT[I] µ+ν LDSF[I] µ+ν LDVTS[I] ν STB[I] µ+ν STT[I] µ+ν STSF[I] µ+ν SYNCD[I] ν PBNZ[B] 3ν-π CSZ[I] ν CSNZ[I] ν ZSZ[I] ν ZSNZ[I] ν LDBU[I] µ+ν LDTU[I] µ+ν LDHT[I] µ+ν PRELD[I] ν STBU[I] µ+ν STTU[I] µ+ν STHT[I] µ+ν PREST[I] ν BP[B] ν+π BNP[B] ν+π PBP[B] 3ν-π PBNP[B] 3ν-π CSP[I] ν CSNP[I] ν ZSP[I] ν ZSNP[I] ν LDW[I] µ+ν LDO[I] µ+ν CSWAP[I] 2µ+2ν PREGO[I] ν STW[I] µ+ν STO[I] µ+ν STCO[I] µ+ν SYNCID[I] ν PBEV[ CSO CSE ZSO ZSE LDWU LDOU LDUNC GO[ STWU STOU STUNC PUSHG 0x4.. 0x5.. 0x6.. 0x7.. 0x8.. 0x9.. 0xA.. 0xB.. 0xC.. 0xD.. 0xE.. 0xF.. BN[B] ν+π BZ[B] ν+π BP[B] ν+π BOD[ BNN[B] ν+π PBN[B] 3ν-π PBNN[B] 3ν-π CSN[I] ν CSNN[I] ν ZSN[I] ν BNZ[B] ν+π PBZ[B] 3ν-π PBNZ[B] 3ν-π CSZ[I] ν CSNZ[I] ν ZSZ[I] ν BNP[B] ν+π PBP[B] 3ν-π PBNP[B] 3ν-π CSP[I] ν CSNP[I] ν ZSP[I] ν BEV[ PBOD[ PBEV[ CSO CSE ZSO ZSNN[I] ν ZSNZ[I] ν ZSNP[I] ν ZSE LDB[I] µ+ν LDT[I] µ+ν LDSF[I] µ+ν LDVTS[I] ν STB[I] µ+ν STT[I] µ+ν STSF[I] µ+ν SYNCD[I] ν OR[I] ν AND[I] ν BDIF[I] ν MUX[I] ν LDBU[I] µ+ν LDTU[I] µ+ν LDHT[I] µ+ν PRELD[I] ν STBU[I] µ+ν STTU[I] µ+ν STHT[I] µ+ν PREST[I] ν ORN[I] ν ANDN[I] ν WDIF[I] ν SADD[I] ν LDW[I] µ+ν LDO[I] µ+ν CSWAP[I] 2µ+2ν PREGO[I] ν STW[I] µ+ν STO[I] µ+ν STCO[I] µ+ν SYNCID[I] ν NOR[I] ν NAND[I] ν TDIF[I] ν MOR[I] ν LDWU LDOU LDUNC GO[ STWU STOU STUNC PUSHG XOR NXO ODI MXO SETH ν SETMH ν SETML ν SETL ν INCH ν INCHM ν INCML ν ORH ν ORMH ν ORML ν ORL ν ANDNH ν ANDNMH ν ANDNML ν JMP[B] ν PUSHJ[B] ν GETA[B] ν PUT POP 3ν RESUME 5ν [UN]SAVE 20µ+ν SYNC ν SWYM ν GET ν 0x..8 0x..9 0x..A 0x..B 0x..C 0x..D 0x..E MMIX Befehlsformat 8 Bit Direktoperand MMIX Befehlsformat 16 Bit Direktoperand Marke ADD $1,$2,3 Kommentar Marke ADD $1,$2,$3 Kommentar Marke1 Marke2 BZ $1,Marke2 BZ $1,Marke Opcode 1. Operand = X 2. Operand = Y 3. Operand = Z 0x21 0x01 0x02 0x03 0x20 0x01 0x02 0x Opcode 1. Operand = X 2. Operand = Y 3. Operand = Z 0x42 0x01 0x0001 0x43 0x01 0xFFFF Allgemeine Form: ADD $X,$Y,Z ADD $X,$Y,$Z Allgemeine Form: BZ $X,YZ BZ $X,YZ 0x x4301FFFF 59 60

16 0x0.. 0x1.. 0x2.. 0x3.. 0x4.. 0x5.. 0x6.. 0x7.. 0x8.. 0x9.. 0xA.. 0xB.. 0x..0 0x..1 0x..2 0x..3 0x..4 0x..5 0x..6 TRAP 5ν FCMP ν FUN ν FEQL ν FADD 4ν FIX 4ν FSUB 4ν FLOT[I] 4ν FLOTU[I] 4ν SFLOT[I] 4ν SFLOT FMUL 4ν FCMPE 4ν FUNE ν FEQLE 4ν FDIV 40ν FSQRT 40ν FREM 4ν MUL[I] 10ν MULU[I] 10ν DIV[I] 60ν DIVU ADD[I] ν ADDU[I] ν SUB[I] ν SUB 2ADDU[I] ν 4ADDU[I] ν 8ADDU[I] ν 16AD CMP[I] ν CMPU[I] ν NEG[I] ν NEG SL[I] ν SLU[I] ν SR[I] ν SR BN[B] ν+π BZ[B] ν+π BOD[ BNZ[B] ν+π BEV[ PBZ[B] 3ν-π PBOD[ BNN[B] ν+π PBN[B] 3ν-π PBNN[B] 3ν-π CSN[I] ν CSNN[I] ν ZSN[I] ν ZSNN[I] ν LDB[I] µ+ν LDT[I] µ+ν LDSF[I] µ+ν LDVTS[I] ν STB[I] µ+ν STT[I] µ+ν STSF[I] µ+ν SYNCD[I] ν PBNZ[B] 3ν-π CSZ[I] ν CSNZ[I] ν ZSZ[I] ν ZSNZ[I] ν LDBU[I] µ+ν LDTU[I] µ+ν LDHT[I] µ+ν PRELD[I] ν STBU[I] µ+ν STTU[I] µ+ν STHT[I] µ+ν PREST[I] ν BP[B] ν+π BNP[B] ν+π PBP[B] 3ν-π PBNP[B] 3ν-π CSP[I] ν CSNP[I] ν ZSP[I] ν ZSNP[I] ν LDW[I] µ+ν LDO[I] µ+ν CSWAP[I] 2µ+2ν PREGO[I] ν STW[I] µ+ν STO[I] µ+ν STCO[I] µ+ν SYNCID[I] ν PBEV[ CSO CSE ZSO ZSE LDWU LDOU LDUNC GO[ STWU STOU STUNC PUSHG 0x4.. 0x5.. 0x6.. 0x7.. 0x8.. 0x9.. 0xA.. 0xB.. 0xC.. 0xD.. 0xE.. 0xF.. BN[B] ν+π BZ[B] ν+π BP[B] ν+π BOD[ BNN[B] ν+π PBN[B] 3ν-π PBNN[B] 3ν-π CSN[I] ν CSNN[I] ν ZSN[I] ν BNZ[B] ν+π PBZ[B] 3ν-π PBNZ[B] 3ν-π CSZ[I] ν CSNZ[I] ν ZSZ[I] ν BNP[B] ν+π PBP[B] 3ν-π PBNP[B] 3ν-π CSP[I] ν CSNP[I] ν ZSP[I] ν BEV[ PBOD[ PBEV[ CSO CSE ZSO ZSNN[I] ν ZSNZ[I] ν ZSNP[I] ν ZSE LDB[I] µ+ν LDT[I] µ+ν LDSF[I] µ+ν LDVTS[I] ν STB[I] µ+ν STT[I] µ+ν STSF[I] µ+ν SYNCD[I] ν OR[I] ν AND[I] ν BDIF[I] ν MUX[I] ν LDBU[I] µ+ν LDTU[I] µ+ν LDHT[I] µ+ν PRELD[I] ν STBU[I] µ+ν STTU[I] µ+ν STHT[I] µ+ν PREST[I] ν ORN[I] ν ANDN[I] ν WDIF[I] ν SADD[I] ν LDW[I] µ+ν LDO[I] µ+ν CSWAP[I] 2µ+2ν PREGO[I] ν STW[I] µ+ν STO[I] µ+ν STCO[I] µ+ν SYNCID[I] ν NOR[I] ν NAND[I] ν TDIF[I] ν MOR[I] ν LDWU LDOU LDUNC GO[ STWU STOU STUNC PUSHG XOR NXO ODI MXO SETH ν SETMH ν SETML ν SETL ν INCH ν INCHM ν INCML ν ORH ν ORMH ν ORML ν ORL ν ANDNH ν ANDNMH ν ANDNML ν JMP[B] ν PUSHJ[B] ν GETA[B] ν PUT POP 3ν RESUME 5ν [UN]SAVE 20µ+ν SYNC ν SWYM ν GET ν 0x..8 0x..9 0x..A 0x..B 0x..C 0x..D 0x..E MMIX Instruction Format 24 bit immediate operand 31 Marke1 Marke2 0xF0 0xF JMP Marke2 JMP Marke1 Opcode 1. Operand = X 2. Operand = Y 3. Operand = Z 0x xFFFFFF 0 Aufgaben S Allgemeine Form: JMP XYZ JMP XYZ 0xF xF1FFFFFF 63

17 Definitionen Wort MMIX Befehle w b ist ein Wort der Länge b Byte. w b x repräsentiert Bit Nr. x im Datenwort w b, wobei das niederwertigste Bit in w b an Bitposition x =0liegt. w b x...y meint Bits x...y des Datenworts w b. 66 Definitionen Befehlswort Sei ein 32 Bit breites MMIX Befehlswort. X = Y = Z = YZ = XY = XYZ = Definitionen Allzweckregister Der MMIX-Prozessor verfügt über 256 Allzweckregister, die mit 0, 1, durchnummeriert werden. Zur Adressierung eines Allzweckregisters im Befehlswort wird die als vorzeichenlose 8 Bit breite Zahl codierte nummer verwendet. Beispiel: 5 wird als 0x05 bzw. als Bitkombination codiert. $x, 0 apple x apple 255 entspricht der Bitkombination, die in x gespeichert ist. $X ist die Bitkombination, die in dem durch Bits des Befehlsworts adressierten gespeichert ist. Beispiel: Befehlswort ist 0x ; Bits extrahieren ) 0x34 (= Bitkombination ) = Dezimal 52 ) Im Falle des Befehlsworts 0x meint $X den Wert, der in 52 gespeichert ist. $Y ist die Bitkombination, die in dem durch Bits des Befehlsworts adressierten gespeichert ist. $Z ist die Bitkombination, die in dem durch Bits des Befehlsworts adressierten gespeichert ist

18 Definitionen Arbeitsspeicher M 1 [x] ist das an Adresse x gespeicherte Byte. M 2 [x] ist das an Adresse x &( M 3 [x] ist das an Adresse x &( M 4 [x] ist das an Adresse x &( 2) gespeicherte Wyde. 4) gespeicherte Tetra. 8) gespeicherte Octa. Definitionen Bitmuster Die Symbole, X, Y, Z, $X, $Y, $Z, $0, $1,..., M 1 [...], M 2 [...],... repräsentieren Bitmuster. Ein Zahlenwert entsteht erst durch entsprechende Interpretation des Bitmusters (z.b. vorzeichenlose Festkommazahl,...) Definitionen Operationen x y: Weise x den Wert y zu x, y: Ausdruck x ist äquivalent zum Ausdruck y x ) y: Wenn x, dann y x y: Logische operation x ODER y x = y: Vergleich ob x den gleichen Wert hat wie y; liefert wahr (d.h. 1), wenn x den selben Wert hat wie y, sonst falsch (d.h. 0) x y: Schiebe x um y Stellen nach links; fülle frei werdende Bitstellen mit 0 auf x u y: Schiebe x um y Bitstellen nach rechts; fülle frei werdende Bitstellen mit 0 auf x s y: Schiebe x um y Bitstellen nach rechts; fülle frei werdende Bitstellen mit dem Wert des Vorzeichenbits (MSB) auf. x % y: Rest der Festkomma-Division x/y. x: Invertiere alle Bits von x, d.h. berechne das 1er-Komplement x & y: Bitweise UND-Verknüpfung von x und y x y: Bitweise ODER-Verknüpfung von x und y x y: Bitweise XOR-Verknüpfung von x und y 71 Definitionen Umwandlung Festkommazahl <-> Gleitkommazahl $ f 32 (w 4 ): Nimmt an, dass das vier Byte breite Datenwort w 4 im 32 Bit IEEE 754 Gleitkommaformat codiert ist und gibt den entsprechenden Zahlenwert zurück (z.b. 1,75). f32 0 (x): Codiert die Zahl x als 32 Bit breite Gleitkommazahl und gibt das entsprechende 32 Bit breite Bitmuster zurück. f 64 (w 8 ): Nimmt an, dass das acht Byte breite Datenwort w 8 im IEEE 754 Gleitkommaformat codiert ist und gibt den entsprechenden Zahlenwert zurück (z.b. 1,75). f64 0 (x): Codiert die Zahl x als breite Gleitkommazahl und gibt das entsprechende breite Bitmuster zurück. r(x): Rundet eine reelle Zahl gemäß dem in ra ausgewählten Rundungsmodus auf eine ganze Zahl. 72

19 Definitionen (De-) Codierung von Festkommazahlen s(w b ): Nimmt an, dass das b Byte breite Wort w b im 2er-Komplement codiert ist und gibt den entsprechenden Wert zurück (z.b. 1, 0, -3) u(w b ): Nimmt an, dass das b Byte breite Wort w b als vorzeichenlose Festkommazahl codiert ist und gibt den entsprechenden Wert zurück (z.b. 0, 1) sb 0 (x): Gibt das b Bit breite im 2er-Komplement codiert Bitmuster zurück das dem Wert x entspricht. ub 0 (x): Gibt das b Bit breite Bitmuster (vorzeichenlose Codierung) zurück das dem Wert x, x 0, entspricht. Definitionen Zusammenfassen von Werten Wenn $X das breite in X gespeicherte Bitmuster ist und $Y das breite in Y gespeicherte Bitmuster ist, dann ist $X$Y das 128 Bit breite Bitmuster das aus der Aneinanderreihung der beiden Bitmuster $X und $Y entsteht. ($X$Y) = $X und ($X$Y) = $Y. Programm beenden TRAP 0,Halt,0 beendet ein MMIX-Programm und gibt die Kontrolle zurück an das Betriebssystem Laden und Speichern Progammiermodell Spezial- Allzweck- Laden Speicher Laden und Speichern 8, 16, 32, OP X Y Z 32 Bit Befehlswort 8, 16, 24 Bit Speichern Rechen- werk (ALU) 76

20 Laden und Speichern Laden von Daten Welche Größe? Byte, Wyde, Tetra, Octa? Vorzeichenbehaftet? Vorzeichenlos? Memory Laden und Speichern Adressierung des Arbeitsspeichers Befehlswort: 32 Bit Opcode: 8 Bit Laden: 8 Bit für Zielregister; Speichern: 8 Bit für Quellregister Verbleiben 16 Bit um breite Adresse abzuspeichern byte wyde Opcode 1. Operand = X 2. Operand = Y 3. Operand = Z tetra octa Laden und Speichern Speicheradressierung Laden und Speichern Speicheradressierung Spezial- Allzweck- Speicher Spezial- Allzweck- Speicher Laden 8, 16, 32, Quell-/Ziel- Basis-Adress- 8, 16, 32, OP X Y Z 32 Bit Befehlswort 8, 16, 24 Bit Offset OP X Y Z 32 Bit Befehlswort 8, 16, 24 Bit Speichern Rechen- werk (ALU) Rechen- werk (ALU) Adresse 79 80

21 Laden und Speichern Speicheradressierung LOC GREG A OCTA 1000 a IS $1 b IS $2 Ladebefehle LOC #100 Main LDB a,a Start SUB a,a,1 OR a,a,0 PBNZ a,start TRAP 0,0,0 LDB $1,$254,0 0x8101FE00 81 Befehl Operanden Name/Aktion Definition LDB LDBU LDW LDWU LDT LDTU LDO LDOU $X,$Y,$Z Load byte $X s64 0 (s(m 1[u($Y)+u($Z)])) $X,$Y,Z Load byte immediate $X s64 0 (s(m 1[u($Y)+u(Z)])) $X,$Y,$Z Load byte unsigned $X u64 0 (u(m 1[u($Y)+u($Z)])) $X,$Y,Z Load byte uns. immed. $X u64 0 (u(m 1[u($Y)+u(Z)])) $X,$Y,$Z Load wyde $X s64 0 (s(m 2[u($Y)+u($Z)])) $X,$Y,Z Load wyde immediate $X s64 0 (s(m 2[u($Y)+u(Z)])) $X,$Y,$Z Load wyde unsigned $X u64 0 (u(m 2[u($Y)+u($Z)])) $X,$Y,Z Load wyde uns. immed. $X u64 0 (u(m 2[u($Y)+u(Z)])) $X,$Y,$Z Load tetra $X s64 0 (s(m 4[u($Y)+u($Z)])) $X,$Y,Z Load tetra immediate $X s64 0 (s(m 4[u($Y)+u(Z)])) $X,$Y,$Z Load tetra unsigned $X u64 0 (u(m 4[u($Y)+u($Z)])) $X,$Y,Z Load tetra uns. immed. $X u64 0 (u(m 4[u($Y)+u(Z)])) $X,$Y,$Z Load octa $X M 8 [u($y)+u($z)] $X,$Y,Z Load octa immediate $X M 8 [u($y)+u(z)] $X,$Y,$Z Load octa unsigned $X M 8 [u($y)+u($z)] $X,$Y,Z Load octa uns. immed. $X M 8 [u($y)+u(z)] Adressen lesen

22 Befehl Operanden Name/Aktion Definition $X,$Y,$Z Get address (absolute) $X u64 0 LDA Aufgaben (u($y)+u($z)) $X,$Y,Z Get address immed. (absolute) $X u64 0 (u($y)+u(z)) GETA $X,YZ Get address (relativ) $X u64 0 (u(@) + 4 s(yz)) S Befehl Operanden Name/Aktion Definition Speicherbefehle STB STBU $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 ) $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) M [u($y)+u(z)] ($X)

23 STW $X,$Y,Z Store wyde immed.; ovf. s($x) 2 ) ra ra u 0 64 (2 ) 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 STT STTU STO STOU $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) $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 ) $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 Aufgaben S Direktoperanden in schreiben Direktoperanden in schreiben -Layout 63 Beispiele H MH ML L SETL $1,0 SETL $1,65535 SETL $1, OK Fehler SET $1,0 Umgewandelt in SETL $1,0 SET $1,$0 SET funktioniert auch mit n -> OR $1,$0,0 92

24 Direktoperanden in schreiben Befehle Befehl Operanden Name/Aktion Definition SETL $X,YZ Set to low wyde $X u 0 64 (u(yz)) SETML $X,YZ Set to med. low wyde $X u64 0 (u(yz 16)) SETMH $X,YZ Set to med. high wyde $X u64 0 (u(yz 32)) SETH $X,YZ Set to high wyde $X u64 0 (u((yz 48)) INCL $X,YZ Increase by low wyde $X u 0 64 (u($x)+u(yz)) Umwandlung Festkomma <-> Gleitkomma INCML $X,YZ Inc. by med. low wyde $X u64 0 (u($x)+u(yz 16)) INCMH $X,YZ Inc. by med. high wyde $X u64 0 (u($x)+u(yz 32)) INCH $X,YZ Increase by high wyde $X u64 0 (u($x)+u(yz 48)) 93 Umwandlung Festkomma <-> Gleitkomma Befehle $ Befehl Operanden Name/Aktion Definition FLOT FLOTU FIX FIXU $X,$Z Convert fixed to floating $X f64 0 $X,Z Conv. fixed to float. imm. $X f64 0 $X,$Z Conv. uns. fixed to floating $X f64 0 $X,Z Conv. uns. fixed to float. $X f64 0 imm. $X,$Z $X,$Z Convert floating to fixed with overflow Convert floating to fixed without overflow $X s 0 64 ( r( f 64($Z))) f 64 ($Z) < 2 63 ) ra ra u 0 64 (25 ) f 64 ($Z) > ) ra ra u 0 64 (25 ) $X s 0 64 ( r( f 64($Z))) Aufgaben S

25 BefehlOperanden Name/Aktion Definition Arithmetische Befehle ADD $X,$Y,$Z $X,$Y,Z Add; signed, with overflow Add immediate; signed, with overflow $X s 0 64 (s($y)+s($z)) (s($y)+s($z) < 2 63 ) (s($y)+s($z) 2 63 ) ) ra ra u 0 64 (25 ) $X s 0 64 (s($y)+s(z)) (s($y)+s(z) < 2 63 ) (s($y)+s(z) 2 63 ) ) ra ra u 0 64 (25 ) ADDU $X,$Y,$Z Add unsigned; no overflow $X u0 64 (u($y)+u($z)) $X,$Y,Z Add unsigned; no overflow $X u 0 64 (u($y)+u(z)) SUB $X,$Y,$Z $X,$Y,Z Subtract; signed, with overflow Subtract immediate; signed, with overflow $X s64 0 (s($y) s($z)) (s($y) s($z) < 2 63 ) (s($y) s($z) 2 63 ) ) ra ra u 0 64 (25 ) $X s64 0 (s($y) s(z)) (s($y) s(z) < 2 63 ) (s($y) s(z) 2 63 ) ) ra ra u 0 64 (25 ) $X,$Y,$Z $X 0 $Y $Z $X,$Y,Z Subtract immediate; signed, with overflow (s($y) s(z) < 2 63 ) (s($y) s(z) 2 63 ) ) ra ra u 0 64 (25 ) SUBU $X,$Y,$Z Subtract unsigned; no overflow $X u0 64 (u($y) u($z)) $X,$Y,Z Subtract unsigned immed.; no ovf. $X u64 0 (u($y) u(z)) NEG $X,$Y,$Z Negate; signed, with overflow $X s64 0 (u(y) s($z)) u(y) s($z 2 63 ) ) ra ra u 0 64 (25 ) $X,$Y,Z Negate immediate; signed, with overflow $X s64 0 (u(y) s(z)) DIVU $X,$Y,$Z $X,$Y,Z (case $Z = 0) rr $Y Divide unsigned; no overflow; $X u128 0 ( bu(rd$y)/u($z)c ) (case u($z) > u(rd) ) rr u128 0 ( u(rd$y)%u($z)) Divide unsigned; no overflow; $X rd no overflow (case u($z) apple u(rd) ) rr $Y Divide unsigned immediate; $X u128 0 ( bu(rd$y)/u(z)c ) no overflow; (case u(z) > u(rd) ) rr u128 0 ( u(rd$y)%u(z)) Divide unsigned immedediate; $X rd no overflow (case u(z) apple u(rd) ) rr $Y NEGU $X,Y,$Z Negate unsigned; no overflow $X s0 64 (u(y) s($z)) $X,Y,Z Negate unsigned immed.; no overflow $X s64 0 (u(y) u(z)) MUL $X,$Y,$Z Multiply; signed, with overflow $X s64 0 (s($y) s($z)) $X,$Y,Z Multiply immediate; signed, with ovf. $X s64 0 (s($y) u(z)) MULU $X,$Y,$Z Multiply unsigned; rh ($Y $Z) rh$x u128 0 (u($y) u($z)) $X,$Y,Z Multiply uns. imm.; rh ($Y Z) rh$x u128 0 (u($y) u(z)) DIV Divide; signed, with overflow $X s 0 64 (bs($y)/s($z)c) $X,$Y,$Z (case $Z 6= 0) rr s 0 64 ( s($y)%s($z)) $X,$Y,Z Divide immediate; signed, with ovf. $X u 0 64 (0) (case $Z = 0) rr $Y 127 rd..10 XX $Y $Z $X u 0 ( bu(rd$y)/u($z)c )

26 Arithmetische Befehle Mit Gleitkommazahlen Befehl Operanden Name/Aktion Definition FADD $X,$Y,$Z Floating point add $X f 0 64 ( f 64($Y)+f 64 ($Z)) FSUB $X,$Y,$Z Floating point subtract $X f 0 64 ( f 64($Y) f 64 ($Z)) FMUL $X,$Y,$Z Floating point multiplication $X f 0 64 ( f 64($Y) f 64 ($Z)) FDIV $X,$Y,$Z Floating point divide $X f 0 64 ( f 64($Y)/f 64 ($Z)) FSQRT $X,$Z Square root $X f 0 64 ( p f 64 ($Z)) Aufgaben S Schieben Befehle Schieben Befehl Operanden Name/Aktion Definition SL $X,$Y,$Z $X,$Y,Z Shift left; with overflow Shift left immediate; with ovf. $X u64 0 ( u($y u($z)) ) u($y) 2 u($z) 2 64 ) ra ra u 0 64 (25 ) $X u64 0 ( u($y u(z)) ) u($y) 2 u(z) 2 64 ) ra ra u 0 64 (25 ) SLU SR SRU $X,$Y,$Z Shift left uns., no overflow $X u64 0 ( u($y u($z)) ) $X,$Y,Z Shift left uns. immed.; no ovf. $X u64 0 ( u($y u(z)) ) $X,$Y,$Z Shift right; fill with sign $X $Y s u($z) $X,$Y,Z Shift right imm.; fill with sign $X $Y s u(z) $X,$Y,$Z Shift right unsigned; fill with 0 $X $Y u u($z) $X,$Y,Z Shift right uns. imm.; fill w. 0 $X $Y u u(z) 104

27 Logische Operationen auf Bit-Ebene Befehle Befehl Operanden Name/Aktion Definition Logische Operationen auf Bit-Ebene AND ANDN $X,$Y,$Z Bitwise AND $X $Y & $Z $X,$Y,Z Bitwise AND immediate $X $Y & u 0 64 ( u(z)) $X,$Y,$Z Bitwise AND NOT $X $Y & $Z $X,$Y,Z Bitww AND NOT immed. $X $Y & u 0 64 ( u(z)) ANDNL $X,YZ Bitw. AND NOT low wyde $X $X & u 0 64 ( u(yz)) ANDNML $X,YZ Bw. AND NOT med. l. wd. $X $X & ( u64 0 ( u(yz)) 16) ANDNMH $X,YZ Bw. AND NOT med. h. wd. $X $X & ( u64 0 ( u(yz)) 32) ANDNH $X,YZ Bw. AND NOT high wyde $X $X & ( u64 0 ( u(yz)) 48) NAND $X,$Y,$Z Bitwise NOT AND $X ($Y & $Z) $X,$Y,Z Bitwise NOT AND immed. $X ( $Y & u 0 64 ( u(z))) $X,$Y,Z Bitwise OR immediate $X $Y u 0 64 ( u(z)) OR $X,$Y,$Z Bitwise OR $X $Y $Z $X,$Y,Z Bitwise OR immediate $X $Y u 0 64 ( u(z)) ORL $X,YZ $X $X 0 YZ 106 ORL $X,YZ Bitwise OR low wyde $X $X u 0 64 ( u(yz)) ORML $X,YZ Bitw. OR med. low wyde $X $X ( u64 0 ( u(yz)) 16) ORMH $X,YZ Bitw. OR med. high wyde $X $X ( u64 0 ( u(yz)) 32) ORH $X,YZ Bitwise OR high wyde $X $X ( u64 0 ( u(yz)) 48) ORN NOR XOR NXOR $X,$Y,$Z Bitwise OR NOT $X $Y $Z $X,$Y,Z Bitwise OR NOT immediate $X $Y u64 0 ( u(z)) $X,$Y,$Z Bitwise NOT OR $X ($Y $Z) $X,$Y,Z Bitwise NOT OR immediate $X ($Y u64 0 ( u(z))) $X,$Y,$Z Bitwise XOR $X $Y $Z $X,$Y,Z Bitwise XOR immediate $X $Y u64 0 ( u(z)) $X,$Y,$Z Bitwise NOT XOR $X ($Y $Z) $X,$Y,Z Bitw. NOT XOR immediate $X ($Y u64 0 ( u(z))) Aufgaben S

28 Spezialregister Spezialregister Befehle Befehl Operanden Name/Aktion Definition GET $X,Z Get value of special purpose register $X r[z] X,$Z Put value to special purpose register r[x] $Z PUT X,Z Put immed. value to spec. purp. reg. r[x] u64 0 (u(z)) -Codierung rb: 0x00 rc: 0x08 rq: 0x10 rw: 0x18 rd: 0x01 rn: 0x09 ru: 0x11 rx: 0x19 re: 0x02 ro: 0x0A rv: 0x12 ry: 0x1A rh: 0x03 rs: 0x0B rg: 0x13 rz: 0x1B rj: 0x04 ri: 0x0C rl: 0x14 rww: 0x1C rm: 0x05 rt: 0x0D ra: 0x15 rxx: 0x1D rr: 0x06 rtt: 0x0E rf: 0x16 ryy: 0x1E rbb: 0x07 rk: 0x0F rp: 0x17 rzz: 0x1F 110 Aufgaben S Verzweigungen

29 Verzweigungen Unbedingte Verzweigung Verzweigungen Bedingte Verzweigungen Befehl Operanden Name/Aktion Definition JMP XYZ u64 0 ( u(@) + 4 s(xyz)) 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)) 113 BNP $X,YZ Branch if nonpositive s($x) apple 0 u64 0 ( u(@) + 4 s(yz)) ) apple ) 0 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)) Verzweigungen Programmaufrufe 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)) 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)) 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)) 116

30 Aufgaben S Namensräume Namensräume Problem Wie kann eine Funktion wissen, welche Variablen-Namen von anderen Funktionen verwendet wurden? Mehrfache Definition von Marken/Namen => Assembler-Fehler Lösung C-Programmierung: Lokale Sichtbarkeit innerhalb des Blocks MMIX: Namensvorsatz (Prefix), der vor alle Namen/Marken gestellt wird (Textersetzung) Namensräume PREFIX expression Beginnt einen neuen Namensraum Vor jeden Namen wird die Zeichenkette expession angefügt, falls der Name nicht mit einem Doppelpunkt beginnt => globale Namen können innerhalb eines Blocks durch manuelles Hinzufügen von Doppelpunkten vor einen Namen erstellt werden PREFIX : Beendet den Namensraum Verschachtelungen Verschachtelungen mehrerer PREFIX-Anweisungen möglich Eine einzige Anweisung PREFIX : reicht aber, um alle vorherigen PREFIX- Anweisungen zu beenden

31 Namensräume Beispiel PREFIX main: LOC # var_a OCTA 4 main:var_a reg_a IS $4 main:reg_a LOC #110 :Main LDO :reg_a,:var_a GLOBAL LDO :fkt:reg_a,:fkt:var_a OTHER NAMESPACE LDO reg_a,var_a LOCAL GO $0,:fkt GLOBAL TRAP 0,:Halt,0 GLOBAL PREFIX : // Ab hier kein Prefixing mehr Namensräume Symboltabelle fkt Main var_a "#$%& fkt:var_a fkt:nochmal:var_a main:var_a reg_a $1 fkt:reg_a $2 fkt:nochmal:reg_a $3 main:reg_a $4 0x100 0x110 '()* 0x x x x Aufgaben S

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

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

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

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 11

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 11 Kapitel 11 Zeichenverarbeitung Seite 1 von 11 Zeichenverarbeitung - Jedem Zeichen ist ein Zahlencode zugeordnet. - Dadurch wird ermöglicht, zwischen verschiedenen Systemen Texte auszutauschen. - Es werden

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

Zahlen und Zeichen (1)

Zahlen und Zeichen (1) Zahlen und Zeichen () Fragen: Wie werden Zahlen repräsentiert und konvertiert? Wie werden negative Zahlen und Brüche repräsentiert? Wie werden die Grundrechenarten ausgeführt? Was ist, wenn das Ergebnis

Mehr

4.2 Universalrechner: Schaltung unabhängig vom Problem 185

4.2 Universalrechner: Schaltung unabhängig vom Problem 185 4.2 Universalrechner: Schaltung unabhängig vom Problem 85 a) Geben Sie binär die Befehlsworte an, mit denen Sie die Eingänge a, b und c in die Register R, R2 und R übernehmen. K D M4 M M2 M Kommentar XXXXXXXXXXX

Mehr

Rechnerstrukturen WS 2012/13

Rechnerstrukturen WS 2012/13 Rechnerstrukturen WS 2012/13 Repräsentation von Daten Repräsentation natürlicher Zahlen (Wiederholung) Repräsentation von Texten Repräsentation ganzer Zahlen Repräsentation rationaler Zahlen Repräsentation

Mehr

Programmieren in C Einführung

Programmieren in C Einführung Programmieren in C Einführung Aufbau eines Programms Einfache Programme Datentypen und Vereinbarungen Das Entwicklungswerkzeug Seite Einfache Programme Kugeltank-Berechnung #include void main

Mehr

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011 Technische Universität Graz Institut tfür Angewandte Informationsverarbeitung und Kommunikationstechnologie Rechnerorganisation 2 TOY Karl C. Posch Karl.Posch@iaik.tugraz.at co1.ro_2003. 1 Ausblick. Erste

Mehr

DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE

DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE D - CA - IV - AA - 1 HUMBOLDT-UNIVERSITÄT ZU BERLIN INSTITUT FÜR INFORMATIK Vorlesung 4 DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE Sommersemester 2003 Leitung:

Mehr

Technische Informatik 1

Technische Informatik 1 Technische Informatik 1 2 Instruktionssatz Lothar Thiele Computer Engineering and Networks Laboratory Instruktionsverarbeitung 2 2 Übersetzung Das Kapitel 2 der Vorlesung setzt sich mit der Maschinensprache

Mehr

Hauptspeicherinhalt. Ton. Vektorgrafik Bitmapgrafik Digit. Video. 1. Darstellung von Daten im Rechner. Abb. 1.1: Einteilung der Daten

Hauptspeicherinhalt. Ton. Vektorgrafik Bitmapgrafik Digit. Video. 1. Darstellung von Daten im Rechner. Abb. 1.1: Einteilung der Daten Hauptspeicherinhalt Programmcode Daten numerisch logisch alphanumerisch Ton Grafik Ganze Zahlen Gleitkommazahlen Zeichen Zeichenketten vorzeichenlos mit Vorzeichen Vektorgrafik Bitmapgrafik Digit. Video

Mehr

Die Mikroprogrammebene eines Rechners

Die Mikroprogrammebene eines Rechners Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.

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

Instruktionssatz-Architektur

Instruktionssatz-Architektur Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2005/2006 Übersicht 1 Einleitung 2 Bestandteile der ISA 3 CISC / RISC Übersicht 1 Einleitung 2 Bestandteile

Mehr

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44 Aufgabe 33 a) Der Pseudobefehl move $rd,$rs wird als addu $rd,$0,$rs übersetzt. Dabei macht sich SPIM zunutze, dass das Register $0 immer Null ist. Somit wird das Register $rd ersetzt durch $rd=0+$rs=$rs,

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

Darstellung von Informationen

Darstellung von Informationen Darstellung von Informationen Bit, Byte, Speicherzelle und rbeitsspeicher Boolesche Operationen, Gatter, Schaltkreis Bit Speicher (Flipflop) Binär- Hexadezimal und Dezimalzahlensystem, Umrechnungen Zweierkomplement

Mehr

Barcode- Referenzhandbuch

Barcode- Referenzhandbuch Barcode- Referenzhandbuch Version 0 GER/AUS/SWI-GER 1 Einführung 1 Übersicht 1 1 Dieses Referenzhandbuch bietet Informationen zum Drucken von Barcodes über Steuerbefehle, die direkt an ein Brother-Druckergerät

Mehr

5.BMaschinensprache und Assembler

5.BMaschinensprache und Assembler Die Maschinenprogrammebene eines Rechners Jörg Roth 268 5.BMaschinensprache und Assembler Die vom Prozessor ausführbaren Befehle liegen im Binärformat vor. Nur solche Befehle sind direkt ausführbar. So

Mehr

Kapitel 1. Programmierkurs. 1.2 Allgemeiner Aufbau des Computers. 1.1 Hallo, Computer...?

Kapitel 1. Programmierkurs. 1.2 Allgemeiner Aufbau des Computers. 1.1 Hallo, Computer...? Kapitel 1 Programmierkurs Birgit Engels, Anna Schulze ZAIK Universität zu Köln Einführung Hallo, Computer...? Aufbau eines Computers Was ist eine Programmiersprache? Der Programmierprozess Warum Java?

Mehr

Mikroprozessortechnik. 03. April 2012

Mikroprozessortechnik. 03. April 2012 Klausur 03. April 2012 Name:. Vorname Matr.-Nr:. Studiengang Hinweise: Bitte füllen Sie vor dem Bearbeiten der Aufgaben das Deckblatt sorgfältig aus. Die Klausur besteht aus 6 doppelseitig bedruckten Blättern.

Mehr

Advanced Encryption Standard. Copyright Stefan Dahler 20. Februar 2010 Version 2.0

Advanced Encryption Standard. Copyright Stefan Dahler 20. Februar 2010 Version 2.0 Advanced Encryption Standard Copyright Stefan Dahler 20. Februar 2010 Version 2.0 Vorwort Diese Präsentation erläutert den Algorithmus AES auf einfachste Art. Mit Hilfe des Wissenschaftlichen Rechners

Mehr

Der Toy Rechner Ein einfacher Mikrorechner

Der Toy Rechner Ein einfacher Mikrorechner Der Toy Rechner Ein einfacher Mikrorechner Dr. Gerald Heim Haid-und-Neu-Str. 10-14 76131 Karlsruhe 16. Mai 1995 Allgemeine Informationen 2 Quelle: Phil Kopmann, Microcoded versus Hard-Wired Logic, Byte

Mehr

Assembler-Programme. Systemprogrammierung (37-023) Elementare Komponenten eines Assembler-Programmes

Assembler-Programme. Systemprogrammierung (37-023) Elementare Komponenten eines Assembler-Programmes Systemprogrammierung (37-023) Assemblerprogrammierung Betriebssystemgrundlagen Maschinenmodelle Dozent: Prof. Thomas Stricker krankheitshalber vertreten durch: Felix Rauch WebSite: http://www.cs.inf.ethz.ch/37-023/

Mehr

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Kap 4. 4 Die Mikroprogrammebene eines Rechners 4 Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten (Befehl holen, Befehl dekodieren, Operanden holen etc.).

Mehr

3 Rechnen und Schaltnetze

3 Rechnen und Schaltnetze 3 Rechnen und Schaltnetze Arithmetik, Logik, Register Taschenrechner rste Prozessoren (z.b. Intel 4004) waren für reine Rechenaufgaben ausgelegt 4 4-Bit Register 4-Bit Datenbus 4 Kbyte Speicher 60000 Befehle/s

Mehr

Informatikgrundlagen I Grundlagen der Informatik I

Informatikgrundlagen I Grundlagen der Informatik I Informatikgrundlagen I Grundlagen der Informatik I Dipl.-Inf. Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 Fachbereich Automatisierung

Mehr

2 Darstellung von Zahlen und Zeichen

2 Darstellung von Zahlen und Zeichen 2.1 Analoge und digitale Darstellung von Werten 79 2 Darstellung von Zahlen und Zeichen Computer- bzw. Prozessorsysteme führen Transformationen durch, die Eingaben X auf Ausgaben Y abbilden, d.h. Y = f

Mehr

1.7 Assembler Programmierung

1.7 Assembler Programmierung 1.7 Assembler Programmierung Die nach außen sichtbare Programmierschnittstelle eines Prozessors ist der Befehlscode. Dies ist eine binäre Dateninformation, die vom Prozessor Byte für Byte abgearbeitet

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 Technischen Informatik Wintersemester 12/13 J. Kaiser, IVS-EOS

Grundlagen der Technischen Informatik Wintersemester 12/13 J. Kaiser, IVS-EOS Gleit komma zahlen Gleitkommazahlen in vielen technischen und wissenschaftlichen Anwendungen wird eine große Dynamik benötigt: sowohl sehr kleine als auch sehr große Zahlen sollen einheitlich dargestellt

Mehr

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04. Kontrollstrukturen Informatik II SS 2004 Teil 4: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Institut für Informatik Prof.

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

X = {x 1,x 2,...} sei ein Symbolalphabet eines Kodes. In diesem Kode sind card(x) = X Sachverhalte darstellbar

X = {x 1,x 2,...} sei ein Symbolalphabet eines Kodes. In diesem Kode sind card(x) = X Sachverhalte darstellbar 3. Kodierung Wir wollen Kodierung nicht als Verschlüsselung zum Zwecke der Geheimhaltung auffassen, sondern als Mittel zur Darstellung von Sachverhalten so, daß eine Rechner mit diesen Sachverhalten umgehen

Mehr

DLX Befehlsübersicht

DLX Befehlsübersicht DLX sübersicht 1 Instruktionen für den Daten-Transfer Daten können mit folgenden en zwischen Registern und dem Speicher oder zwischen Integer- und Fließkomma-Registern ausgetauscht werden. Der einzige

Mehr

L3. Datenmanipulation

L3. Datenmanipulation L Datenmanipulation Aufbau eines Computers Prozessor, Arbeitsspeicher und system Maschinensprachen und Maschinenbefehle Beispiel einer vereinfachten Maschinensprache Ausführung des Programms und Befehlszyklus

Mehr

Wie werden die Barcode Prüfziffern berechnet?

Wie werden die Barcode Prüfziffern berechnet? KB Consult; K. Bögli Bergwiesenstrasse 23 CH-8484 Weisslingen Telefon: [41] 052 / 384 16 96 Fax: [41] 052 / 384 25 20 E-Mail: kurt.boegli@kbconsult.ch Wie werden die Barcode Prüfziffern berechnet? Nachfolgend

Mehr

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Compiler: Vom Code zum Maschinen-Code C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Zusammenhänge: C und Assembler Hochsprachen

Mehr

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note:

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note: Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 95 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel

Mehr

21.10.2013. Vorlesung Programmieren. Agenda. Dezimalsystem. Zahlendarstellung. Zahlendarstellung. Oder: wie rechnen Computer?

21.10.2013. Vorlesung Programmieren. Agenda. Dezimalsystem. Zahlendarstellung. Zahlendarstellung. Oder: wie rechnen Computer? Vorlesung Programmieren Zahlendarstellung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Agenda Zahlendarstellung Oder: wie rechnen

Mehr

HC680 PROGRAMMER'S REFERENCE MANUAL

HC680 PROGRAMMER'S REFERENCE MANUAL HC680 PROGRAMMER'S REFERENCE MANUAL Programmieranleitung Mnemonic Assembler Maschinenbefehl Wirkung /Bedeutung Register (0 bis 3 allg. Reg.) Ope- Opcode/Binärcode - Adressierungsart - Nr Bez. xx Bin Art

Mehr

Binäre Division. Binäre Division (Forts.)

Binäre Division. Binäre Division (Forts.) Binäre Division Umkehrung der Multiplikation: Berechnung von q = a/b durch wiederholte bedingte Subtraktionen und Schiebeoperationen in jedem Schritt wird Divisor b testweise vom Dividenden a subtrahiert:

Mehr

Übung zur Wirtschaftsinformatik I. Zahlensysteme / Codierung

Übung zur Wirtschaftsinformatik I. Zahlensysteme / Codierung WS 06/07 Thema 4: Zahlensysteme / Codierung 1 Übung zur Winfo I - Themenplan - Informationsverarbeitung in Unternehmen Tabellenkalkulation Anwendungen PC-Komponenten Zahlensysteme / Codierung Boole sche

Mehr

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems Mitglied der Zürcher Fachhochschule TIn 1: Lecture 4 Data transfer Feedback Laboratories Question: What is the IP? Why do we NEED an IP? Lecture 3: Lernziele Moving data, the why s and wherefores Moving

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler

Mehr

Numerische Datentypen. Simon Weidmann

Numerische Datentypen. Simon Weidmann Numerische Datentypen Simon Weidmann 08.05.2014 1 Ganzzahlige Typen 1.1 Generelles Bei Datentypen muss man immer zwei elementare Eigenschaften unterscheiden: Zuerst gibt es den Wertebereich, zweitens die

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

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 1 / 53 Inhaltsverzeichnis 1 Einführung 2 Assembler Syntax, Register und Flags 3 Hauptspeicher 4 Stack 5 Assemblerbefehle

Mehr

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen Kapitel 4: Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Codierung von rationalen Zahlen Konvertierung

Mehr

Technische Grundlagen der Informatik Kapitel 8. Prof. Dr. Sorin A. Huss Fachbereich Informatik TU Darmstadt

Technische Grundlagen der Informatik Kapitel 8. Prof. Dr. Sorin A. Huss Fachbereich Informatik TU Darmstadt Technische Grundlagen der Informatik Kapitel 8 Prof. Dr. Sorin A. Huss Fachbereich Informatik TU Darmstadt Kapitel 8: Themen Zahlensysteme - Dezimal - Binär Vorzeichen und Betrag Zweierkomplement Zahlen

Mehr

Das Rechnermodell - Funktion

Das Rechnermodell - Funktion Darstellung von Zahlen und Zeichen im Rechner Darstellung von Zeichen ASCII-Kodierung Zahlensysteme Dezimalsystem, Dualsystem, Hexadezimalsystem Darstellung von Zahlen im Rechner Natürliche Zahlen Ganze

Mehr

Lösungsvorschlag zur 9. Übung

Lösungsvorschlag zur 9. Übung Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 9. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche der folgenden Aussagen über

Mehr

D A T E N... 1 Daten Micheuz Peter

D A T E N... 1 Daten Micheuz Peter D A T E N.....! Symbole, Alphabete, Codierung! Universalität binärcodierter Daten! Elementare Datentypen! Speicherung binärcodierter Daten! Befehle und Programme! Form und Bedeutung 1 Daten Micheuz Peter

Mehr

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

Programmieren in C Teil 3: Mikrocontrollerprogrammierung Programmieren in C Teil 3: Mikrocontrollerprogrammierung 08/30/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 1 Tag 1 Hello World 08/30/10 Fachbereich Physik Institut für Kernphysik

Mehr

TOTAL DIGITAL - Wie Computer Daten darstellen

TOTAL DIGITAL - Wie Computer Daten darstellen TOTAL DIGITAL - Wie Computer Daten darstellen Computer verarbeiten Daten unter der Steuerung eines Programmes, das aus einzelnen Befehlen besteht. Diese Daten stellen Informationen dar und können sein:

Mehr

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff Programmieren in C C Syntax Datentypen, Operatoren und Kontrollstrukturen Prof. Dr. Nikolaus Wulff Elementare Typen Imperative und objektorientierte Programmiersprachen bieten i.d.r. einen Satz elementarer

Mehr

3. Informationsdarstellung

3. Informationsdarstellung Fakultät Informatik Institut Systemarchitektur Professur Datenschutz und Datensicherheit WS 204/205 3. Informationsdarstellung Dr.-Ing. Elke Franz Elke.Franz@tu-dresden.de 3 Informationsdarstellung Bitfolgen

Mehr

Aufbau und Funktionsweise eines Computers

Aufbau und Funktionsweise eines Computers Aufbau und Funktionsweise eines Computers Thomas Röfer Hardware und Software von Neumann Architektur Schichtenmodell der Software Zahlsysteme Repräsentation von Daten im Computer Hardware Prozessor (CPU)

Mehr

B1 Stapelspeicher (stack)

B1 Stapelspeicher (stack) B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen

Mehr

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = 1100110011 binär

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = 1100110011 binär Zahlensysteme Menschen nutzen zur Angabe von Werten und zum Rechnen vorzugsweise das Dezimalsystem Beispiel 435 Fische aus dem Teich gefischt, d.h. 4 10 2 + 3 10 1 +5 10 0 Digitale Rechner speichern Daten

Mehr

Prozessor HC680 fiktiv

Prozessor HC680 fiktiv Prozessor HC680 fiktiv Dokumentation der Simulation Die Simulation umfasst die Struktur und Funktionalität des Prozessors und wichtiger Baugruppen des Systems. Dabei werden in einem Simulationsfenster

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Das Prinzip an einem alltäglichen Beispiel

Das Prinzip an einem alltäglichen Beispiel 3.2 Pipelining Ziel: Performanzsteigerung é Prinzip der Fließbandverarbeitung é Probleme bei Fließbandverarbeitung BB TI I 3.2/1 Das Prinzip an einem alltäglichen Beispiel é Sie kommen aus dem Urlaub und

Mehr

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Themen heute Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Besprechung des 3. Übungsblattes Aufgabe 3 Speicherplätze für Mikrocode-Anweisungen

Mehr

Kapitel 1. Zahlendarstellung. Prof. Dr. Dirk W. Hoffmann. Hochschule Karlsruhe w University of Applied Sciences w Fakultät für Informatik

Kapitel 1. Zahlendarstellung. Prof. Dr. Dirk W. Hoffmann. Hochschule Karlsruhe w University of Applied Sciences w Fakultät für Informatik Kapitel 1 Zahlendarstellung Prof. Dr. Dirk W. Hoffmann Hochschule Karlsruhe w University of Applied Sciences w Fakultät für Informatik Zahlensystemkonvertierung Motivation Jede nichtnegative Zahl z lässt

Mehr

in vielen technischen und wissenschaftlichen Anwendungen erforderlich: hohe Präzision große Dynamik möglich durch Verwendung von Gleitkommazahlen

in vielen technischen und wissenschaftlichen Anwendungen erforderlich: hohe Präzision große Dynamik möglich durch Verwendung von Gleitkommazahlen Gleitkommazahlen in vielen technischen und wissenschaftlichen Anwendungen erforderlich: hohe Präzision große Dynamik möglich durch Verwendung von Gleitkommazahlen allgemeine Gleitkommazahl zur Basis r

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Zahlensysteme und Datendarstellung

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Zahlensysteme und Datendarstellung Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Zahlensysteme und Datendarstellung Zahlensysteme Problem: Wie stellt man (große) Zahlen einfach, platzsparend und rechnergeeignet

Mehr

Was ist Wirtschaftsinformatik?

Was ist Wirtschaftsinformatik? 1. Grundlagen, 1.1 Grundverständnis der Wirtschaftsinformatik Was ist Wirtschaftsinformatik? BWL Betriebswirtschaftliche Problemstellung: Wie kann IT im Unternehmen angewendet werden, z.b. im Bereich Beschaffung

Mehr

2 Einfache Rechnungen

2 Einfache Rechnungen 2 Einfache Rechnungen 2.1 Zahlen Computer, auch bekannt als Rechner, sind sinnvoller eingesetzt, wenn sie nicht nur feste Texte ausgeben, sondern eben auch rechnen. Um das Rechnen mit Zahlen zu verstehen,

Mehr

3.0 8051 Assembler und Hochsprachen

3.0 8051 Assembler und Hochsprachen 3.0 8051 Assembler und Hochsprachen Eine kurze Übersicht zum Ablauf einer Programmierung eines 8051 Mikrocontrollers. 3.1 Der 8051 Maschinencode Grundsätzlich akzeptiert ein 8051 Mikrocontroller als Befehle

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur ARM, x86 und ISA Prinzipien Übersicht Rudimente des ARM Assemblers Rudimente des Intel Assemblers ISA Prinzipien Grundlagen der Rechnerarchitektur Assembler 2 Rudimente

Mehr

11/2/05. Darstellung von Text. ASCII-Code. American Standard Code for Information Interchange. Parity-Bit. 7 Bit pro Zeichen genügen (2 7 = 128)

11/2/05. Darstellung von Text. ASCII-Code. American Standard Code for Information Interchange. Parity-Bit. 7 Bit pro Zeichen genügen (2 7 = 128) Darstellung von Text ASCII-Code 7 Bit pro Zeichen genügen (2 7 = 128) 26 Kleinbuchstaben 26 Großbuchstaben 10 Ziffern Sonderzeichen wie '&', '!', ''' nicht druckbare Steuerzeichen, z.b. - CR (carriage

Mehr

11/2/05. Darstellung von Text. ASCII-Code. American Standard Code for Information Interchange. ASCII-Tabelle. Parity-Bit. Länderspezifische Zeichen

11/2/05. Darstellung von Text. ASCII-Code. American Standard Code for Information Interchange. ASCII-Tabelle. Parity-Bit. Länderspezifische Zeichen Darstellung von Text ASCII-Code 7 Bit pro Zeichen genügen ( 7 = 18) 6 Kleinbuchstaben 6 Großbuchstaben 10 Ziffern Sonderzeichen wie '&', '!', ''' nicht druckbare Steuerzeichen, z.b. - CR (carriage return

Mehr

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen Java Kurs für Anfänger Einheit 2 Datentypen und Operationen Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 16. Mai 2009 Inhaltsverzeichnis

Mehr

Die Maschinenprogrammebene eines Rechners Jörg Roth 294

Die Maschinenprogrammebene eines Rechners Jörg Roth 294 Die Maschinenprogrammebene eines Rechners Jörg Roth 294 5.E Die SPIM-Umgebung SPIM ist ein Simulationswerkzeug für MIPS-Prozessoren Es enthält einen Assembler und eine Laufzeitumgebung Da das Wirtsystem

Mehr

Multimediale Werkzeuge. Textformate, Medienobjekte

Multimediale Werkzeuge. Textformate, Medienobjekte Multimediale Werkzeuge Textformate, Medienobjekte File/Datei organiation: Binaer, Gruppe von 8 bits, 1 Byte: 2 x 4er Gruppen (Nibble). Darstellung als Binaer (4 stellen Nibble), Octal (Ziffern 0-7,3 stellen

Mehr

econstor Make Your Publication Visible

econstor Make Your Publication Visible econstor Make Your Publication Visible A Service of Wirtschaft Centre zbwleibniz-informationszentrum Economics Lanne, Markku; Saikkonen, Pentti Working Paper Reducing size distortions of parametric stationarity

Mehr

Das Maschinenmodell Datenrepräsentation

Das Maschinenmodell Datenrepräsentation Das Maschinenmodell Datenrepräsentation Darstellung von Zahlen/Zeichen in der Maschine Bit (0/1) ist die kleinste Informationseinheit Größere Einheiten durch Zusammenfassen mehrerer Bits, z.b. 8 Bit =

Mehr

Programmiertechnik Skalare Typen,Variablen, Zuweisungen

Programmiertechnik Skalare Typen,Variablen, Zuweisungen Programmiertechnik Skalare Typen,Variablen, Zuweisungen Prof. Dr. Oliver Haase int i; long j; boolean isempty; double average; char naechsteszeichen; j = 42L; i = (int) j; isempty = true; average = 37.266;

Mehr

Zahlendarstellungen und Rechnerarithmetik*

Zahlendarstellungen und Rechnerarithmetik* Zahlendarstellungen und Rechnerarithmetik* 1. Darstellung positiver ganzer Zahlen 2. Darstellung negativer ganzer Zahlen 3. Brüche und Festkommazahlen 4. binäre Addition 5. binäre Subtraktion *Die Folien

Mehr

MIMA Die Sicht von außen

MIMA Die Sicht von außen MIMA Die Sicht von außen Aufgabensammlung & Lösungen zur MIMA-Assemblersprache 1. Juni 2004 Vorwort Weniger ist bekanntlich mehr. Auf diesem Prinzip baut die Architektur der MIMA auf. Das Befehlsformat

Mehr

Inhalt: Binärsystem 7.Klasse - 1 -

Inhalt: Binärsystem 7.Klasse - 1 - Binärsystem 7.Klasse - 1 - Inhalt: Binärarithmetik... 2 Negative Zahlen... 2 Exzess-Darstellung 2 2er-Komplement-Darstellung ( two s complement number ) 2 Der Wertebereich vorzeichenbehafteter Zahlen:

Mehr

Computerarithmetik ( )

Computerarithmetik ( ) Anhang A Computerarithmetik ( ) A.1 Zahlendarstellung im Rechner und Computerarithmetik Prinzipiell ist die Menge der im Computer darstellbaren Zahlen endlich. Wie groß diese Menge ist, hängt von der Rechnerarchitektur

Mehr

SMS Zeichensatz GSM 7-Bit (GSM 03.38)

SMS Zeichensatz GSM 7-Bit (GSM 03.38) SMS Zeichensatz GSM 7-Bit (GSM 03.38) Version 1.0 08.03.2010 Web: http://www.sms-expert.de Der Zeichensatz GSM 7-Bit (GSM 03.38) ist der Standardzeichensatz für Kurznachrichten. In diesem Dokument finden

Mehr

Mikroprozessor als universeller digitaler Baustein

Mikroprozessor als universeller digitaler Baustein 2. Mikroprozessor 2.1 Allgemeines Mikroprozessor als universeller digitaler Baustein Die zunehmende Integrationsdichte von elektronischen Schaltkreisen führt zwangsläufige zur Entwicklung eines universellen

Mehr

EIN NEUES KAPITEL: SPEICHERUNG UND INTERPRETATION VON INFORMATION

EIN NEUES KAPITEL: SPEICHERUNG UND INTERPRETATION VON INFORMATION Auf diesem Computerschirm sieht man verschiedene Arten von Information dargestellt. Wie wird sie eigentlich im Computer abgespeichert. Was man sieht, ist nur eine Graphik! EIN NEUES KAPITEL EIN NEUES KAPITEL:

Mehr

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr

Die Befehle mit dem Ziel IP sind nichts anderes als Sprungbefehle, sie sind unten noch mal aufgeführt.

Die Befehle mit dem Ziel IP sind nichts anderes als Sprungbefehle, sie sind unten noch mal aufgeführt. Die Befehle des Modellrechners in übersichtlichen Tabellen: Alle Opcodes sind Hexadezimal angegeben (s.u.). 1.) Die Ladebefehle zwischen den einzelnen Registern. In der oberen Zeile steht jeweils die Quelle

Mehr

Grundlagen der Rechnerarchitektur. Einführung

Grundlagen der Rechnerarchitektur. Einführung Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler

Mehr

16. März 2016 artb5-v1.1

16. März 2016 artb5-v1.1 C 16. März 2016 artb5-v1.1 Inhaltsverzeichnis C 2 Was ist ein Programm?........................ 2 Was ist C?............................... 3 Grundgerüst - Hallo Welt....................... 3 Tools und

Mehr

Grundlagen der Informatik I Informationsdarstellung

Grundlagen der Informatik I Informationsdarstellung Grundlagen der Informatik I Informationsdarstellung Einführung in die Informatik, Gumm, H.-P./Sommer, M. Themen der heutigen Veranstaltung. ASCIi Code 2. Zeichenketten 3. Logische Operationen 4. Zahlendarstellung

Mehr

Chapter 1 : þÿ b w i n g l ü c k s r a d c h a p t e r

Chapter 1 : þÿ b w i n g l ü c k s r a d c h a p t e r Chapter 1 : þÿ b w i n g l ü c k s r a d c h a p t e r þÿ z u b w i n s e r v i c e s a g i n 1 0 1 0 w i e n i n w e t t b ü r o l i e f e r t h e r o l d. a t g e l b e. f r e u n d e t i t a n b e t

Mehr

Binäre Gleitkommazahlen

Binäre Gleitkommazahlen Binäre Gleitkommazahlen Was ist die wissenschaftliche, normalisierte Darstellung der binären Gleitkommazahl zur dezimalen Gleitkommazahl 0,625? Grundlagen der Rechnerarchitektur Logik und Arithmetik 72

Mehr

Binärcodierung elementarer Datentypen: Darstellung negativer Zahlen

Binärcodierung elementarer Datentypen: Darstellung negativer Zahlen Binärcodierung elementarer Datentypen: Darstellung negativer Zahlen Statt positive Zahlen von 0 bis 2 n -1mit einem Bitmuster der Länge n darzustellen und arithmetische Operationen darauf auszuführen,

Mehr

Einführung in die technische Informatik

Einführung in die technische Informatik Einführung in die technische Informatik Christopher Kruegel chris@auto.tuwien.ac.at http://www.auto.tuwien.ac.at/~chris Betriebssysteme Aufgaben Management von Ressourcen Präsentation einer einheitlichen

Mehr

Unicode und UTF-8. Anna-Katharina Wurst. 28. April 2015. WP5 Angewandte Programmierung

Unicode und UTF-8. Anna-Katharina Wurst. 28. April 2015. WP5 Angewandte Programmierung 28. April 2015 WP5 Angewandte Programmierung David Kaumanns & Sebastian Ebert SoSe 2015 CIS Ludwig-Maximilians-Universität München 2 Inhalt 1 Zeichensätze ASCII ISO 8859-x Unicode 2 Kodierung UTF-8 3 Anwendung

Mehr

Prinzipieller Grundaufbau eines einfachen C-Programmes

Prinzipieller Grundaufbau eines einfachen C-Programmes Prinzipieller Grundaufbau eines einfachen C-Programmes C unterscheidet zwischen Groß- und Kleinschreibung! Siehe zu den folgenden Erklärungen auch das Programm am Ende der nächsten Seite. Am Anfang aller

Mehr