MMIX Assembler Programmierung Dr. Michael Zwick. Zahldarstellung
|
|
- Ulrich Förstner
- vor 6 Jahren
- Abrufe
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,
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
MehrAufgabenkatalog. 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.................................
MehrAufgabenkatalog. 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.................................
MehrNachfolgende 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.
MehrWintersemester 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
MehrBeim 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
MehrZahlen 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
Mehr4.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
MehrRechnerstrukturen 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
MehrProgrammieren 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
MehrRechnerorganisation 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
MehrDATEN 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:
MehrTechnische 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
MehrHauptspeicherinhalt. 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
MehrDie 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.
Mehr2. 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)
MehrInstruktionssatz-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
MehrStephan 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,
MehrTI 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)
MehrDarstellung von Informationen
Darstellung von Informationen Bit, Byte, Speicherzelle und rbeitsspeicher Boolesche Operationen, Gatter, Schaltkreis Bit Speicher (Flipflop) Binär- Hexadezimal und Dezimalzahlensystem, Umrechnungen Zweierkomplement
MehrBarcode- 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
Mehr5.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
MehrKapitel 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?
MehrMikroprozessortechnik. 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.
MehrAdvanced 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
MehrDer 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
MehrAssembler-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/
MehrKap 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.).
Mehr3 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
MehrInformatikgrundlagen 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
Mehr2 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
Mehr1.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
Mehr0 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
MehrGrundlagen 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
MehrInstitut 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.
MehrMMIX 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
MehrX = {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
MehrDLX 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
MehrL3. Datenmanipulation
L Datenmanipulation Aufbau eines Computers Prozessor, Arbeitsspeicher und system Maschinensprachen und Maschinenbefehle Beispiel einer vereinfachten Maschinensprache Ausführung des Programms und Befehlszyklus
MehrWie 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
MehrCompiler: 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
MehrName: 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
Mehr21.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
MehrHC680 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
MehrBinä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
WS 06/07 Thema 4: Zahlensysteme / Codierung 1 Übung zur Winfo I - Themenplan - Informationsverarbeitung in Unternehmen Tabellenkalkulation Anwendungen PC-Komponenten Zahlensysteme / Codierung Boole sche
MehrTIn 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
MehrGrundlagen 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
MehrNumerische 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
MehrMikroprozessoren 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)
Mehrx86 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
MehrReprä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
MehrTechnische 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
MehrDas 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
MehrLö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
MehrD 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
MehrProgrammieren 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
MehrTOTAL 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:
MehrProgrammieren 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
Mehr3. 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
MehrAufbau 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)
MehrB1 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
MehrZahlensysteme. 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
MehrProzessor 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
MehrJava 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
MehrDas 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
MehrBesprechung 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
MehrKapitel 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
Mehrin 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
MehrProf. 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
MehrWas 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
Mehr2 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,
Mehr3.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
MehrGrundlagen 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
Mehr11/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
Mehr11/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
MehrJava 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
MehrDie 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
MehrMultimediale 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
Mehreconstor 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
MehrDas 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 =
MehrProgrammiertechnik 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;
MehrZahlendarstellungen 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
MehrMIMA 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
MehrInhalt: 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:
MehrComputerarithmetik ( )
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
MehrSMS 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
MehrMikroprozessor 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
MehrEIN 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:
MehrInhaltsverzeichnis. 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
MehrDie 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
MehrGrundlagen 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
Mehr16. 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
MehrGrundlagen 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
MehrChapter 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
MehrBinä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
MehrBinä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,
MehrEinfü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
MehrUnicode 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
MehrPrinzipieller 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