Informatik II SS 2004 Teil 4-1: Assembler Programmierung
|
|
|
- Bertold Pohl
- vor 7 Jahren
- Abrufe
Transkript
1 Assembler Programmierung Motivation Informatik II SS 2004 Teil 4-1: Assembler Programmierung Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Was ist ein Programm? Eine Reihe von Befehlen, die der Ausführung einer Aufgabe dient Dazu wird das Programm sequentiell abgearbeitet und Befehl für Befehl abgearbeitet. Der Prozessor arbeitet dabei zustandsbasiert Problem: Welche Befehle kennt der Prozessor? Sind das dieselben Befehle, die ein Mensch verwendet? Sich Schritt für Schritt dem Prozessor nähern Anweisung: Addiere die Zahlen von eins bis hundert und speichere das Ergebnis! Integer: Ergebnis := Sum( );.aber das sind immer noch nicht die Befehle, die ein Prozessor versteht Assembler Allgemein Befehle (Maschinensprache) Die Befehle, die der Computer versteht und ausführen kann, sind Bitfolgen Maschinensprache, in der Regel für jede CPU unterschiedlich. Ausnahme: (aufwärts-) kompatible Rechnerfamilien Beispiel: 286, 386, 486, Pentium Der Befehl muss zwei Angaben enthalten (v. Neumann-Rechner): durchzuführende Operation (Was!) Operations-Code verwendeter Operand (Womit!) Adresse Häufig gehen diese Angaben auch direkt in den Op-Code ein. Nach der Anzahl der Operanden im Adressteil unterscheidet man: 8-Bit-Mikrocomputer arbeiten fast immer mit Einadress-Befehlen (1. Quelle und Zieladresse implizit gegeben, z.b. Akkumulator), 16-Bit-CPUs dagegen oft mit Zweiadress-Befehlen. Ein Befehl kann aus einem oder mehreren Speicherworten bestehen Bei Computern mit großer Wortlänge können auch mehrere Befehle in einem Speicherwort stehen Bei 8-Bit-Mikros besteht der OP-Code aus einem Byte, der Adress-Teil aus einem oder zwei Bytes (= eine Adressangabe) Assembler vs. Maschinensprache Gesamtheit aller vom Prozessor ausführbaren Befehle (Maschinenbefehle) heißt Maschinensprache Prozessoren können nur numerische Instruktionen ausführen Addiere den Inhalt der Register 17 und 18 und speichere das Ergebnis im Register 8 ab für den Menschen nicht gut verständlich Ein Assembler setzt die Befehle um und verwaltet symbolische Adressen Der Wortschatz eines Assembler heißt Assemblersprache oder auch einfach Assembler
2 Assembler Aber auch die Maschinenbefehle (bzw. Assemblerbefehle) sind für den Menschen schwer zu verstehen, selbst wenn er nicht direkt in der binären Maschinensprache programmieren muss. Es gibt keine Variablen Einige Befehle stehen nicht direkt zur Verfügung. Jeder Prozessor ist anders, also auch jeder Assembler Das bedeutet, dass ein Programmierer ein Assemblerprogramm (z.b. Summe von 1 bis 100) für jeden Prozessor neu schreiben muss. Vom Assembler zur Hochsprache Lösung des Problems: eine Hochsprache Es werden dem Programmierer mehr Befehle angeboten Speicherverwaltung wird übernommen Die Befehle sind Prozessor unabhängig Wer vermittelt nun zwischen Hochsprache und Maschinensprache? Ein Compiler übersetzt das Hochsprachenprogramm in Assemblerprogramm. Diesen Vorgang nennt man kompilieren Ein Assembler macht aus einem Assemblerprogramm ein Maschinensprachenprogramm Anstelle des Compilers kann auch ein Interpreter verwendet werden. Dieser erzeugt auch Maschinencode, aber erst zur Laufzeit. Im Unterschied zum Interpreter übersetzt der Compiler das gesamte Programm Wo wir jetzt sind ein kurzes Fazit Vorher Zahlendarstellung / Gatter ALU von Neumann Rechner Programm in einer Hochsprache (C, Java) Compiler temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; C code Jetzt Assembler Programmierung Später: Compilerbau: Wie bekomme ich aus einer Hochsprache ein Assemblercode? Wie optimiere ich den Compiler? In welcher Sprache schreibe ich einen solchen Compiler? Formale Sprachen: Formale Analyse der Sprachen und ihrer Mächtigkeit, usw. Assembler Programm (Spim für MIPS R2000) Maschinensprache Programm (MIPS R2000) Interpretation durch Leitwerk Registertransfer Anweisungen Assembler lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) IR Imem[PC]; PC PC + 4 ALUOP[0:3] InstReg[9:11] & MASK Assemblerprogramm Maschinencode Registertransfer Anweisung
3 Wie können wir nun Programmieren? Arbeitsweise des R 2000 Wir brauchen: Einen Simulator: MIPS R2000 Stanford Projekt: Microprocessor without Internal Pipeline Stages RISC Prozessor SPIM (unser Simulator) unterliegt der GNU-Lizenz Linux: xspim; Windows PCSpim Einen Texteditor Zum Erstellen der Programme 1. Der Befehl wird geladen 2. Der Befehl wird decodiert 3. Daten werden in die Register geladen Die zugehörigen Operanden werden geladen 4. In Abhängigkeit des aktuellen Befehls werden die Register verändert. z.b. der Inhalt von zwei Registern wird addiert und das Ergebnisse in ein anderes Register geschrieben. 5. Daten werden aus den Registern in den Speicher geschrieben Adressierung des Speichers Der Speicher Warum Hexadezimal? Größe des Speichers Jede Zelle ist 8 Bit (1 Byte) Groß und hat eine 32 Bit Adresse Kilobyte 1KB = 1024 Byte = 2 10 Byte Megabyte 1MB = 1024 KB = 2 20 Byte Gigabyte 1GB = 1024 MB = 2 30 Byte Von Neumann-Rechner haben gemeinsamen Speicher für Daten und Programm Der Programmierer muss verhindern, dass der Rechner versucht, die abgelegten Daten als Programm auszuführen. Der Prozessor soll nicht das Programm mit Daten überschreiben Selbstmodifizierender Code ist möglich (Beispiel: Computer Viren) Lösung: Segmente für Daten, Programm, OS und Stack Mit den Direktiven.data und.text geben wir an, wohin die folgenden Befehle geschrieben werden Der Programmierer kann aber auch direkt in den Speicher schreiben
4 Hauptspeicher Verwaltung Der Speicher besteht aus 2 32 Zellen à einem Byte.text und.data sind Direktiven, die angeben, was Programm und was Daten sind. Adresse 32 Bit Speicherzellen 8 Bit 0xFFFFFFFF 0x x7FFFFFFF 0x Betriebssystem und ROM Stack Segment Freier Bereich Daten Segment Datentypen Ganze Zahlen.word 32-Bit-Zahlen.half 16-Bit-Zahlen.byte 8-Bit-Zahlen Zeichenketten.ascii 8Bit pro Zeichen (256 verschiedene Zeichen).ascii Das ist ein Beispieltext. Und ohne.asciiz Zeilenumbruch geht es weiter. Floating Point wird vom Coprozessor unterstützt. 0x x Text Segment Reserved Speicher Litte Big Endian R 2000 Register Litte-Endian vs. Big-Endian Big Endian denkt, dass das erste Byte, das er liest, das größte ist. Little Endian denkt, dass das erste Byte, das er liest, das kleinste ist Big Endian: Mainfraim, IBM Litte Endian: PC, Intel, AMD Bi Endian: PowerPC Daten sollten im Speicher ausgerichtet (Aligned) sein Beispiel: (1025) Adresse Big-Endian Darstellung von Little-Endian Darstellung von General Purpose Register mit 32 Bit Wortbreite $0 bis $31 oder per Name $zero enthält immer(!) den Wert 0 $at temporäres Assemblerregister $v0, $v1 Funktionsergebnisse $a0 bis $a3 Argumente für Prozeduraufrufe $t1 bis $t9 temporäre Register $s0 bis $s7 langlebige Register $k0, $k1 Kernel Register $gp Zeiger auf Datensegment $sp Stack Pointer $fp Frame Pointer $ra Return Address Zusätzlich lo und hi (Spezialregister) 0 $zero 1 $at 2 $v0 3 $v1 4 $a0 5 $a1 6 $a2 7 $a3 8 $t0 9 $t1 10 $t2 11 $t3 12 $t4 13 $t5 14 $t6 15 $t7 16 $s0 17 $s1 18 $s2 19 $s3 20 $s4 21 $s5 22 $s6 23 $s7 24 $t8 25 $t9 26 $k0 27 $k1 28 $gp 29 $sp 30 $fp 31 $ra
5 Die Assembler Befehle Befehlsformat <Marke>: <Befehl1> <Arg_1> <Arg_2> <Arg_3> # <Kommentar> <Marke>: <Befehl2>, <Arg_1>, <Arg_2>, <Arg_3> # <Kommentar> Befehle Lade- / Speicherbefehle Arithmetische Operationen (+, *, -, / ) Logische Operationen (AND, OR, XOR, NAND, ) Schiebe- / Rotationsbefehle Sprungbefehle Pseudobefehle werden vom Assembler in mehrere Befehle umgesetzt in die Befehle, die der Prozessor verarbeiten kann. Direktiven sind Assembleranweisung, die NICHT in Befehle umgesetzt werden; z.b. um Platz zu lassen für Variablen (beginnen mit einem Punkt z.b..data ) Assembler Programme Sequentielle Abarbeitung von Befehlen Sprünge sind möglich Nur ein Befehl pro Zeile # leitet einen Kommentar ein <name>: ist ein Label Das Label main: muss immer vorhanden sein Label können angesprungen werden z.b. while: oder for: Den Namen des Labels entscheidet der Programmierer (bis auf main: ) Die drei Instruktionsformate Assember Programm ein Beispiel Register Format (R) Op-Code rs rt rd shamt funct Op-Code rs rt rd shamt funct Immediate Format (I) Op-Code rs rt 16 - Bit Konstante (Imm) Op-Code rs rt 16 - Bit Konstante (Imm) Sprung Format (J) Op-Code 26 Bit Sprungadresse Op-Code 26 Bit Sprungadresse # Beispielprogramm V. 001 # berechnet den Umfang eines Dreiecks mit den Kanten x, y, z # kein sehr sinnvolles Programm.data x:.word 12 y:.word 14 z:.word 5 u:.word 0.text main: lw $t0, x lw $t1, y lw $t2, z add $t0, $t0, $t1 # $t0 := x + y add $t0, $t0, $t2 # $t0 := x + y + z sw $t0, u # u := x + y + z li $v0, 10 # EXIT syscall
6 Ladebefehle und Adressierungsarten I Informatik II SS 2004 Teil 4-2: Assembler Programmierung Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner lw Rd, Adr Der Befehl lw (load word) lädt ein Wort in ein Register Rd und Adr sind die Argumente. Adr ist die Adresse im Hauptspeicher, von wo der Befehl in das Register Rd geladen wird. Adressierungsmodi I...wie wird die Adresse angegeben? Register Indirekt (RS): Der Wert steht an der Adresse, die im Register RS angegeben ist. Direkt: Die Adresse wird direkt angegeben über ein Label oder Label + Konstante. Indexierte Label (RS): Der Wert wird durch ein Label angegeben + den Wert aus Register RS (+ Konstante) Lehrstuhl für Telematik Institut für Informatik Ladebefehle und Pseudoinstruktionen und nun das Ganze noch mal zum Speichern Weitere Befehle lb Rd, Adr : load byte 8 Bit lbu Rd, Adr : load unsigned byte 8 Bit lh Rd, Adr : load halfword 16 Bit lhu Rd, Adr : load unsigned halfword 16 Bit ld Rd, Adr : load double-word ist eine Pseudoinstruktion Pseudoinstruktionen werden vom Assembler aufgelöst ld Rd, Adr := lw Rd, Adr lw Rd+1,Adr+4 Daten müssen aligned im Speicher sein Adressen von Wörtern müssen durch 4 teilbar sein Adressen von Halbwörtern müssen gerade sein Oder es werden die Befehle ulw, ulh und ulhu verwendet sw Rs, Adr sb Rs, Adr sh Rs, Adr sd Rs, Adr ush Rs, Adr usw Rs, Adr store word store byte store halfword store double-word (Pseudoinstruktion) unaligned store halfword unaligned store word
7 Register Transfer Befehle und Adressierungsarten II Arithmetische Befehle (Addition & Subtraktion) Register direkte Adressierung: Es wird direkt auf die Register zugegriffen unter Nennung der Registernamen Rd (destination) und Rs (source). move Rd,Rs move Rs Rd Unmittelbare Adressierung: Dort wird eine Konstante unmittelbar in ein Register übertragen. Die Konstante ist Teil des Programmcodes, nicht der Daten. Können nur direkt auf den Registern ausgeführt werden Addition und Subtraktion (mit Overflow) add Rd, Rs1, Rs2 Rd := Rs1 + Rs2 addi Rd, Rs1, Imm Rd := Rs1 + Imm subrd, Rs1, Rs2 Rd:= Rs1 Rs2 add kann auch mit einer Konstanten (unmittelbaren Operanden) verwendet werden. Der Assember benutzt dann automatisch addi. sub und alle weiteren arithmetischen Befehle können mit einer Konstanten verwendet werden. li Rd, Imm load immediate (Imm ist dann eine Konstante) lui Rs, Imm load upper immediate Rs Imm * Überläufe und Ausnahmen Addition ohne Überlauf Was passiert, wenn die Summe zweier positiver Zahlen negativ wird? Es tritt eine Ausnahme (Exception) auf. Ausnahmen sind Fehler, die während der Laufzeit des Programms auftreten. Der Exception Handler beendet in diesem Fall das Programm! Ein klassisches Beispiel ist auch die Division durch Null. Beispiel: Die Halfbytes (4 Bit) a und b werden addiert. addu addiu aubu Rd, Rs1, Rs2 Rd, Rs1, Imm Rd, Rs1, Rs2 U sollte nicht durch unsigned übersetzt werden, da auch bei Addition von vorzeichenlosen Zahlen Überläufe auftreten können. A= B= S=
8 Multiplikation und Division Multiplikation und Division Problem eines Überlaufs ist sehr wahrscheinlich und es werden sogar doppelt so viel Bits zum Speichern benötigt. Beispiel: (1 * 2 32 ) * (1* 2 32 ) = 1 * = 1* 2 64 Der MIPS verfügt über zwei Spezialregister hi und lo Es gibt aber nur 4 Maschinenbefehle für Multiplikation und Division div Rd, Rs hi:=rd MOD Rs; lo:= Rd DIV Rs divu Rd, Rs hi:=rd MOD Rs; lo:= Rd DIV Rs mult Rd, Rs hi:=rd * Rs DIV 2 16 ; lo:=rd * Rs MOD 2 16 multu Rd, Rs hi:=rd * Rs DIV 2 16 ; lo:=rd * Rs MOD 2 16 Die Ergebnisse von Maschinenbefehlen werden immer in hi und lo gespeichert. Es gibt auch Pseudobefehle, die direkt auf den Registern arbeiten. div Rd, Rs1, Rs2 hi:=rd MOD Rs; lo:= Rd DIV Rs divu Rd, Rs1, Rs2 hi:=rd MOD Rs; lo:= Rd DIV Rs Mult Rd, Rs hi:=rd * Rs DIV 2 16 ; lo:=rd * Rs MOD 2 16 multu Rd, Rs hi:=rd * Rs DIV 2 16 ; lo:=rd * Rs MOD 2 16 Die Ergebnisse werden immer in hi und lo gespeichert. Logische Operationen Sprünge Jetzt erst mal weiter mit dem SPIM Ein- und Ausgaben SPIM Ein- und Ausgaben Syscall Parameter Der Befehl syscall Der Befehl hat keine Argumente. Ein Parameter wird über das Register $v0 übergeben. Das Verhalten des Simulators ist abhängig vom Register $v0 $v0=1 print_int Wert in $a0 wird dezimal ausgegeben auf dem Bildschirm $v0=4 print_string Die mit Chr0 endende Zeichenkette wird ausgegeben. $a0 muss die Adresse enthalten, an der die Zeichenkette im Speicher beginnt. Vor Aufruf von syscall muss der Parameter in $v0 gegeben werden 1 print_int Wert in $a0 wird dezimal ausgegeben 2 print_float 32 Bit Gleitkommazahl aus Register $f12/13 wird ausgegeben 3 print_double 64 Bit 4 print_string Die an ($a0) beginnende und auf Chr 0 endende Zeichenkette wird ausgegeben. 5 read_int Schreibt eine Dezimalzahl in $v0 6 read_float Schreibt eine Gleitkommazahl in $f0 (32 Bit) 7 read_double Schreibt eine Gleitkommazahl in $f0/1 (64 Bit) 8 read_string Schreibt eine Zeichenkette bis Chr 0 in den Speicher. Startadresse: $a0 Max. Länge $a1 9 sbrk Reserviert Speicher 10 exit Beendet das Programm
9 Logische Befehle Rotations- und Schiebebefehle and Rd, Rs1, Rs2 andi Rd, Rs, Imm nor Rd, Rs1, Rs2 or Rd, Rs1, Rs2 ori Rd, Rs, Imm xor Rd, Rs1, Rs2 xori Rd, Rs, Imm not Rd, Rs Rd:=Rs1 AND Rs2 Rd:=Rs AND Imm Rd:=Rs1 NOR Rs2 Rd:=Rs1 OR Rs2 Rd:=Rs AND Imm Rd:=Rs1 XOR Rs2 Rd:=Rs AND Imm Rd:= NOT(Rs) := xori Rd, Rs, -1 Rotation: Alle Bits in einem Register werden nach links oder rechts verschoben; das Letzte kommt dann an den Anfang. Schiebebefehle: Wie Rotation allerdings fällt das letzte Bit weg. Das erste Bit wird durch 0 ersetzt (logische Schiebebefehle) oder das höchstwertige Bit wird übernommen, damit das Vorzeichen erhalten bleibt (arithmetische Schiebebefehle). rol Rd, Rs1, Rs2 rotiert Rs1 um Rs2 Stellen nach links (ror für rechts) sll und sllv (shift left logical); srl und srlv (shift right logical); sra und srav (shift right arithmetic) V steht für Variable, was bedeutet, dass ein Register die Anzahl der Schritte bestimmt; ansonsten ist der Wert eine Konstante Vergleiche Sprünge Es werden zwei Werte verglichen und wenn die Bedingung (z.b. gleich, >, <,.) erfüllt ist, wird in das Zielregister eine 1 geschrieben und sonst eine 0. Beispiel: seq Rd, Rs1, Rs2 Falls (Rs1)=(Rs2) Rd:=1, sonst Rd:=0 sne ungleich; sge größer oder gleich; sgeu größer oder gleich (unsigned) usw. Bei den Vergleichen gibt es nur 4 Maschinenbefehle: slt Rd, Rs1, Rs2 set less than sltu Rd, Rs1, Rs2 set less than unsigned slti Rd, Rs1, Imm set less than immediate sltui Rd, Rs1, Imm set less than immediate unsigned Sprünge machen Programme erst mächtig. Der Spim unterstützt bedingte und unbedingte Sprünge (jumping) an eine Marke (Label). Im Gegensatz zu Hochsprachen unterstützt der Assembler bedingte Sprünge nur aufgrund von Größenvergleichen zweier Register oder eines Registers mit einer Konstanten. b label unbedingter Sprung zum Label beq Rs1, Rs2 label bedingter Sprung falls Rs1 = Rs2 Es gibt insgesamt 21 Befehle für bedingte Sprünge, die auch =,<>,<=,>=,<,>,=0, usw. abfragen. Mit den Sprüngen können wir die Schleifenkonstrukte und Fallunterscheidungen der Hochsprachen nachbilden. Eigentlich erwartet der Assembler einen Offset zu PC (Branching), wir verwenden allerdings Marken, damit sind die Befehle j und b identisch im Spim
10 Kontrollstrukturen Informatik II SS 2004 Teil 4-3: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Beispiel: if then else in Assembler Beispiel: While in Assembler if ($t8 < 0) then{ $s0 = 0 - $t8; $t1 = $t1 + 1; } else{ $s0 = $t8; $t2 = $t2 + 1; } $v0 = 1; while ($a1 < $a2) do{ $t1 = mem[$a1]; $t2 = mem[$a2]; if ($t1!= $t2) go to break; $a1 = $a1 +1; $a2 = $a2 1;} return break: $v0 = 0 return main: bgez $t8, else # if ($t8 is > or = zero) branch to else sub $s0, $zero, $t8 # $s0 gets the negative of $t8 addi $t1, $t1, 1 # increment $t1 by 1 b next # branch around the else code else: ori $s0, $t8, 0 # $s0 gets a copy of $t8 addi $t2, $t2, 1 # increment $t2 by 1 next: loop: break: done: li $v0, 1 # Load $v0 with the value 1 bgeu $a1, $a2, done # If( $a1 >= $a2) Branch to done lb $t1, 0($a1) # Load a Byte: $t1 = mem[$a1 + 0] lb $t2, 0($a2) # Load a Byte: $t2 = mem[$a2 + 0] bne $t1, $t2, break # If ($t1!= $t2) Branch to break addi $a1, $a1, 1 # $a1 = $a1 + 1 addi $a2, $a2, -1 # $a2 = $a2-1 b loop # Branch to loop li $v0, 0 # Load $v0 with the value
11 Beispiel: Schleifen in Assembler $a0 = 0; For ( $t0 =10; $t0 > 0; $t0 = $t0-1) do { $a0 = $a0 + $t0; } li $a0, 0 # $a0 = 0 Komplexe Datenstrukturen Felder Wir können im MIPS Felder deklarieren, indem wir die Felder explizit belegen. Beispiel:.data feld:.word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 loop: li $t0, 10 # Initialize loop counter to 10 add $a0, $a0, $t0 addi $t0, $t0, -1 # Decrement loop counter bgtz $t0, loop # If ($t0 >0) Branch to loop Oder wir reservieren den Platz für 13 Wörter Beispiel:.data feld:.space 52 Hier wird nur Platz reserviert, aber nicht initialisiert! Ein Feld ist vergleichbar mit einem Array sw $t0, feld($t0) # feld[i] := i Der Stack Keller für mehr Daten Ein LIFO Speicher Kellerzeiger (SP) zeigt auf 0x7FFF FFFC Einige CISC Prozessoren verfügen über Extrabefehle (push, pop) zum Einkellern von Daten. Beim Spim müssen wir die Kellerverwaltung selbst übernehmen. Unterbrechungen müssen beachtet werden sw $t0, ($sp) # tep. Reg. $t0 auf Stack addi $sp, -4 # Stack Pointer neu setzen Besser: addi $t0, -4 sw $t0, 4($sp) Für den Fall, dass man mehrere Daten speichern will addi $sp, -12 #gleich für 3 Worte der SP setzen sw $t0, 12($sp) # t0 sichern sw $t1, 8($sp) # t1 sichern sw $t2, 4($sp) # t2 sichern Lesen analog mit dem Befehl lw Erst den Lesebefehl und dann den SP wieder neu setzen. Wir sind nun in der Lage, die ganzen temporären Register zu sichern
12 Unterprogramme Beispiel: Das Unterprogramm swap als C Programm Aus Hochsprachen ist das Konzept von Unterprogrammen bekannt. In Hochsprachen heißen sie Prozeduren, Methoden, Subrotinen oder Funktionen Der Grund von Unterprogrammen ist die Wiederverwendung von Programmteilen. Programme können leichter verständlich werden, wenn Unterprogramme sinnvoll eingesetzt werden. Auch Assembler unterstützen das Konzept von Unterprogrammen. swap vertauscht v[k] mit v[k+1] swap (int v[], int k) { int temp; temp = v[k]; v[k] = v [k+1]; v[k+1] = temp; } Swap als MIPS Assembler Programm Unterprogramme swap: addi $29, $29, -12 # reserve space on stack sw $2, 4($29) # save $2 on stack sw $15, 8($29) # save $15 on stack sw $16, 12($29) # save $16 on stack sll $2, $5, 2 # reg $2 = k * 4 add $2, $4, $2 # reg $2 = v + (k*4) # $2 con. addr. of v[k] lw $15, 0($2) # $15 <-- v[k] lw $16, 4($2) # $16 <-- v[k+1] sw $16, 0($2) # $16 --> v[k] sw $15, 4($2) # $15 --> v[k+1] lw $2, 4($29) # restore $2 from stack lw $15, 8($29) # restore $15 from stack lw $16, 12($29) # restore $16 from stack addi $29, $29, 12 # restore stackpointer jr $31 # return Das Unterprogramm wird mit jal swap aufgerufen. Die Parameter müssen in $4, $5 übergeben werden. Die Rückkehradresse wird automatisch in $31 gespeichert. jr $31 ist der Rücksprung aus dem Unterprogramm und entspricht einem Return
13 Konventionen für Prozeduren (Prolog) Konventionen für Prozeduren (Epilog) Für den Aufrufer (Caller) Sichere $a0-$a3, $v0, $v1, da diese in der Prozedur verändert werden dürfen. Speichere die zu übergebenden Argumente in $a0 bis $a3. Weitere Argumente werden über den Stack übergeben (das fünfte ist das letzte Argument auf dem Stack) Beachte: Call-by-Value vs. Call-by-Reference. Prozedur wird mit jal gestartet. Für den Aufgerufenen (Callee) Platz für Stackframe reservieren. Sichere alle callee-saved Register, die verändert werden. $fp, $ra, $s0 - $s7 Achtung Fehlerquelle: der Befehl jal verändert $ra Erstelle $fp durch $sp + Stackframe Callee Rückgabe des Funktionswerts in $v0, $v1 Register wieder herstellen $fp als letztes Register wieder herstellen Stackframe entfernen $sp = $sp Größe des Frames Return (jr $ra) Caller Auf dem Stack gesicherten Register wieder herstellen Argumente vom Stack nehmen ( RISC- Prozessoren und Pipelining Pipelining Ein-Zyklus-Maschinenbefehle Möglichst alle Befehle laufen in einem Taktzyklus ab. Load/Store-Architektur Nur über Load/Store-Befehle Zugriff auf den Hauptspeicher. Alle anderen Befehle: Reg.-Reg. Keine Mikroprogrammierung Festverdrahtete Ablaufsteuerung Möglichst wenige Befehle und Adressierungsarten Typischerweise ca. 50 Befehle, 2 Adressierungsarten: PC-relativ und indiziert. Nur Befehle aufnehmen, wenn sie eine deutliche Geschwindigkeitssteigerung im Mittel bringen. Einheitliches Befehlsformat 1 Wort = 1 Befehl (einfache Dekodierung) Aufwandsverlagerung in den Compiler Optimierender Compiler erzeugt Code (später mehr dazu). Phasen-Pipelining im RISC Ohne Pipelining IF ID OF OE OS Mit Phasen-Pipelining IF ID OF OE OS IF ID OF OE OS IF ID OF OE OS IF ID OF OE OS IF ID OF OE OS IF Instruction Fetch ID Instruction Decode OF Operand Fetch OE Operation Execute OS Operand Store
14 Pipelining Optimierung des Phasen-Pipelinings Der Befehl wird nicht schneller ausgeführt, aber es können mehr Befehle pro Zeit ausgeführt werden. Parallelität und damit eine Geschwindigkeitssteigerung um die Anzahl der Pipelinestufen. Pipelinekonflikte Datenfluss-Konflikt durch Datenabhängigkeiten (Data Interlock) Beispiel: add $t0, $t1, $t2 # $t0 $t1 + $t2 addi $t0, 1# $t0 $t0 + 1 Data Forwarding Operand kann vor dem Rückspeichern an den nächsten Befehl übergeben werden. Delayed Load Beim Ladebefehl darf nicht sofort im nächsten Befehl auf den geladenen Operanden zugegriffen werden, sondern erst im übernächsten. Es wird die Blase vermieden, dafür müssen evt. nop Befehle eingeschoben werden. Mit Blase ist die Zeit gemeint, in der der Prozessor nicht weiß, was er tun soll und auf das Rückspeichern wartet. add ID $t1,$t2 + $t0 addi ID $t0 + 1 $t Steuerfluss-Konflikte Fazit und Ausblick Delayed Branch (verzögerter Sprung) Verzweigung wird erst ab dem übernächsten Befehl wirksam. Das Loch wird durch einen Befehl, der eigentlich vor dem Branch hätte ausgeführt werden sollen, gestopft. Für den Programmierer lästig, für optimierende Compiler kein Problem. traditioneller Sprung LOAD X, R1 ADD 1, R1 BRANCH L ADD R1, R2 SUB R3, R2 L: STORE R1, Y verzögerter Sprung LOAD X, R1 ADD 1, R1 BRANCH L NOP ADD R1, R2 SUB R3, R2 L: STORE R1, Y optimierter verzögerter Sprung LOAD X, R1 BRANCH L ADD 1, R1 ADD R1, R2 SUB R3, R2 L: STORE R1, Y RISC hat sich durchgesetzt Einsatz in PCs, Workstation, Parallelrechnern und zunehmend auch in Mikrocontrollern Moderne CICS- Prozessoren haben mehr und mehr RISC Techniken übernommen z.b. Intel Pentium-Familie Neue Technologien besonders RISC geeignet (z.b. Galliumarsenid)
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.
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
Heute nur MIPS-Praxis (4 Aufgaben)
Themen heute Heute nur MIPS-Praxis (4 Aufgaben) Hinweis: Diese Aufgaben findet ihr auf den Übungsblättern zu den Tutorien (bei Aufgabe 4 wurde eine Teilaufgabe und im Tutorium #6 bereits geklärte Wissensfragen
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
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.
Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme
Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester 2016 Lorenz Schauer Mobile & Verteilte Systeme 05. Juli 2016 Agenda Theoretische Grundlagen Motivation Register Aufbau eines Programms
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
Programmiersprachen Einführung in C
Programmiersprachen Einführung in C Teil 1: Von der Maschinensprache zu C Prof. Dr. Maschinensprache: MIPS R2000 Was bewirkt folgendes Programm: 00100111101111011111111111100000 10101111101111110000000000010100
Besprechung des 4. Übungsblattes Was ist MIPS? SPIM-Simulator MIPS-Befehlsformate MIPS-Befehle Assemblerdirektiven Syscalls in MIPS
Organisatorisches Es gibt kein Übungsblatt zur heutigen Abgabe, da sich durch ausfallende Vorlesungstermine entsprechende Verschiebungen ergeben haben Das jetzige Übungsblatt ist abzugeben bis zum nächsten
Einführung. Saalübung Informatik II SS Einführung. Einführung
Saalübung Informatik II SS 2006 SPIM-Assembler Teil 1 Einführung Übung zur SPIM-Assemblerprogrammierung Assembler ist die elementare Sprache eines Prozessors Assemblerbefehle repräsentieren die Basisoperationen
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,
Unterprogramme. Unterprogramme
Unterprogramme Unterprogramme wichtiges Hilfsmittel für mehrfach benötigte Programmabschnitte spielen in höheren Programmiersprachen eine wesentliche Rolle in Assembler sind bestimmte Konventionen nötig
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/
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
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.
TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl
Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou ([email protected]) 22./23. Oktober 2015
Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou ([email protected]) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse
Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. [email protected] 16.03.2011
Technische Universität Graz Institut tfür Angewandte Informationsverarbeitung und Kommunikationstechnologie Rechnerorganisation 2 TOY Karl C. Posch [email protected] co1.ro_2003. 1 Ausblick. Erste
Assembler-Programmierung
Assembler-Programmierung Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Assembler-Programmierung 1/48 2012-02-29 Assembler-Programmierung
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.).
Datenpfad einer einfachen MIPS CPU
Datenpfad einer einfachen MIPS CPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19 Betrachten nun Load und Store Word Erinnerung, Instruktionen lw und sw sind vom I Typ Format:
Daniel Betz Wintersemester 2011/12
Daniel Betz Wintersemester 2011/12 Digitally signed by [email protected] Date: 2011.12.04 17:24:40 +01'00' Insgesamt 16 Register von je 16 Bit (=WORD) Breite Untere 8 Register auch als 2 Register
Technische Informatik 1 - HS 2016
Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik 1 - HS 2016 Lösungsvorschläge für Übung 8 Datum: 8. 9. 12. 2016 1 Instruktionsparallelität VLIW Gegeben
Was ist die Performance Ratio?
Was ist die Performance Ratio? Wie eben gezeigt wäre für k Pipeline Stufen und eine große Zahl an ausgeführten Instruktionen die Performance Ratio gleich k, wenn jede Pipeline Stufe dieselbe Zeit beanspruchen
Teil 1: Prozessorstrukturen
Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium
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
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:
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
Steuerwerk einer CPU. Einführung in die Technische Informatik Falko Dressler, Stefan Podlipnig Universität Innsbruck
Steuerwerk einer CPU Einführung in die Technische Informatik Falko Dressler, Stefan Podlipnig Universität Innsbruck Übersicht Implementierung des Datenpfads Direkte Implementierung Mikroprogrammierung
Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures
Vorbesprechung U8 Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Basistypen Alignment der Basistypen auf deren Grösse Grössen (abhängig
Einfuhrung in die Assemblerrogrammierung mit dem MIPS-Simulator SPIM Reinhard Nitzsche 15.09.97 Inhaltsverzeichnis 1 SPIM 4 1.1 Einleitung : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 14. Okt. 2015 Computeraufbau: nur ein Überblick Genauer: Modul Digitale Systeme (2. Semester) Jetzt: Grundverständnis
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
Karlsruher Institut für Technologie
Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt
Assembler - Einleitung
Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache
L3. Datenmanipulation
L Datenmanipulation Aufbau eines Computers Prozessor, Arbeitsspeicher und system Maschinensprachen und Maschinenbefehle Beispiel einer vereinfachten Maschinensprache Ausführung des Programms und Befehlszyklus
Mikrocontroller-Programmierung
Mikrocontroller-Programmierung Anhand des HC12 Fabian Wiesel Überblick Überblick Mikrocontroller Überblick HC12 CPU Peripherie des DG128 Assemblerprogrammierung Mikrocontroller Leistungsfähigkeit: zwischen
68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren.
WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren. Ein Programm liegt der CPU in binärer Form vor und wird durch den Assembler in einer primitiven
2.2 Rechnerorganisation: Aufbau und Funktionsweise
2.2 Rechnerorganisation: Aufbau und Funktionsweise é Hardware, Software und Firmware é grober Aufbau eines von-neumann-rechners é Arbeitsspeicher, Speicherzelle, Bit, Byte é Prozessor é grobe Arbeitsweise
Computer-Architektur Ein Überblick
Computer-Architektur Ein Überblick Johann Blieberger Institut für Rechnergestützte Automation Computer-Architektur Ein Überblick p.1/27 Computer-Aufbau: Motherboard Computer-Architektur Ein Überblick p.2/27
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
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
Vorlesung Rechnerarchitektur. Einführung
Vorlesung Rechnerarchitektur Einführung Themen der Vorlesung Die Vorlesung entwickelt an Hand von zwei Beispielen wichtige Prinzipien der Prozessorarchitektur und der Speicherarchitektur: MU0 Arm Speicher
Grundlagen der Informatik III
Grundlagen der Informatik III WS 2008 / 2009 [Folien basierend auf VL von Prof. Dr. Claudia Eckert, WS 07/08] Prof. Dr. rer. nat. Frederik Armknecht Sascha Müller Daniel Mäurer Fachbereich Informatik /
Random Access Machine (RAM) Berechenbarkeit und Komplexität Random Access Machines
Random Access Machine (RAM) Berechenbarkeit und Komplexität Random Access Machines Wolfgang Schreiner [email protected] Research Institute for Symbolic Computation (RISC) Johannes Kepler University,
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
Zusammenfassung der Assemblerbefehle des 8051
Zusammenfassung der Assemblerbefehle des 8051 Seite 1 von 5 Befehl Bezeichnung Syntax Wirkung / Beispiel Befehle zum Datentransfer MOV Move MOV [Ziel],[Quelle] MOV P1,P3 Kopiert den Inhalt von P3 nach
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
Synchronisation. Grundlagen der Rechnerarchitektur Assembler 91
Synchronisation Grundlagen der Rechnerarchitektur Assembler 91 Data Race Prozessor 1: berechne x = x + 2 lw $t0, 0($s0) # lade x nach $t0 addi $t0, $t0, 2 # $t0 = $t0 + 2 sw $t0, 0($s0) # speichere $t0
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
Teil 1: Prozessorstrukturen
Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium
Teil 2: Rechnerorganisation
Teil 2: Rechnerorganisation Inhalt: Zahlendarstellungen Rechnerarithmetik schrittweiser Entwurf eines hypothetischen Prozessors mit Daten-, Adreß- und Kontrollpfad Speicherorganisation Mikroprogrammierung
Microcomputertechnik
Microcomputertechnik mit Mikrocontrollern der Familie 8051 Bearbeitet von Bernd-Dieter Schaaf 2. Auflage 2002. Buch. 230 S. Hardcover ISBN 978 3 446 22089 8 Format (B x L): 16 x 22,7 cm Gewicht: 407 g
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
DLX-Assembler-Programmierung Kutil, 2010
DLX-Assembler-Programmierung Kutil, 200 Es gibt mehrere Simulatoren für den DLX-Prozessor. Erstens WinDLX, ein altes 6-Bit-Windows-Programm mit GUI und Dokumentation. Zweitens dlxsim, ein Unix-Programm
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
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
Auch hier wieder. Control. RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite. Instruction[31 26] (also: das Opcode Field der Instruktion)
Auch hier wieder Aus voriger Wahrheitstabelle lässt sich mechanisch eine kombinatorische Schaltung generieren, die wir im Folgenden mit dem Control Symbol abstrakt darstellen. Instruction[31 26] (also:
Klausur zur Vorlesung Rechnerarchitektur
Platznummer hier eintragen! LUDWIG-MAXIMILIANS-UNIVERSITÄT MÜNCHEN INSTITUT FÜR INFORMATIK LEHRSTUHL FÜR MOBILE UND VERTEILTE SYSTEME PROF. DR. CLAUDIA LINNHOFF-POPIEN Sommersemester 2011 Klausur 26.07.2011
RISC: Reduced Instruction Set Computer. Technische Informatik I Wintersemester 12/13 1. J. Kaiser, IVS-EOS
RISC: Reduced Instruction Set Computer 1 The CMOS Generations: Speedup through Miniaturization 10-fache Leistungssteigerung 2 Was ist ein Reduced Instruction Set Computer (RISC*)? * Der Begriff RISC wurde
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
Programmierung in C. Grundlagen. Stefan Kallerhoff
Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/
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
Im Original veränderbare Word-Dateien
Das Von-Neumann-Prinzip Prinzipien der Datenverarbeitung Fast alle modernen Computer funktionieren nach dem Von- Neumann-Prinzip. Der Erfinder dieses Konzeptes John von Neumann (1903-1957) war ein in den
8. Assemblerprogrammierung. addi addi $s3,$s3,4 # i i = i i + 1? 1?
8. Assemblerprogrammierung Loop: Loop: addi addi $s4,$s4,1 # j j = j j + 1? 1? add add $t1,$s3,$s3 # $t1 $t1 = 2 ** ii add add $t1,$t1,$t1 # $t1 $t1 = 4 ** ii add add $t1,$t1,$s5 # $t1 $t1 = @ A[i] A[i]
JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
Welche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
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
Technische Informatik 2 Maschinenprogrammierungskonzepte
Technische Informatik 2 Maschinenprogrammierungskonzepte Prof Dr Miroslaw Malek Sommersemester 2005 wwwinformatikhu-berlinde/rok/ca Thema heute Ausführung von Befehlen Ein-/Ausgabeprogrammierung Architekturen
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)
RO-Tutorien 3 / 6 / 12
RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
Technische Informatik 1 - Übung 3 3. & 4. November Philipp Miedl
Technische Informatik 1 - Übung 3 3. & 4. November 2016 Philipp Miedl Philipp Miedl 3. 11. 2016 1 Ziele der Übungen Aufgabe 1 Philipp Miedl 3. 11. 2016 2 Ziele der Übungen Aufgabe 1 Aufbau von Objekt-Dateien
Java-Prozessoren. Die Java Virtual Machine spezifiziert... Java Instruktions-Satz. Datentypen. Operanden-Stack. Konstanten-Pool.
Die Java Virtual Machine spezifiziert... Java Instruktions-Satz Datentypen Operanden-Stack Konstanten-Pool Methoden-Area Heap für Laufzeit-Daten Class File Format 26 Die Java Virtual Machine Java Instruktions-Satz
= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)
Musterlösung Übung 2 Aufgabe 1: Große Zahlen Das Ergebnis ist nicht immer richtig. Die Maschine erzeugt bei Zahlen, die zu groß sind um sie darstellen zu können einen Über- bzw. einen Unterlauf. Beispiele
Einführung in die Informatik
Einführung in die Informatik Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik [email protected] http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338 FB
1. Inhaltsverzeichnis
Mikrocomputer Simulator Inhaltsverzeichnis _ 2 _ 1. Inhaltsverzeichnis 1. INHALTSVERZEICHNIS...2 2. AUFBAU UND BEDIENUNG...3 2.1. EINFÜHRUNG...3 2.1.1. TECHNISCHE DATEN... 3 2.1.2. VERWENDUNGSZWECK...
Technische Informatik II Rechnerarchitektur
Technische Informatik II Rechnerarchitektur 3.Unterprogramme in MMIX Matthias Dräger E-Mail: www: [email protected] www.matthias-draeger.info/lehre/sose2010ti2/ tinyurl.com/sose2010ti2 Zuletzt bearbeitet:
JAVA-Datentypen und deren Wertebereich
Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).
1 Einleitung zum RISC Prozessor
1 Einleitung zum RISC Prozessor Wesentliche Entwicklungsschritte der Computer-Architekturen [2, 3]: Familienkonzept von IBM mit System/360 (1964) und DEC mit PDP-8 (1965) eingeführt: Gleiche Hardware-Architekturen
Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit)
Der Demo-Computer besitzt einen 4Bit-Mikroprozessor. Er kann entsprechend Wörter mit einer Breite von 4 Bits in einem Schritt verarbeiten. Die einzelnen Schritte der Abarbeitung werden durch Lampen visualisiert.
Technische Informatik 1
Technische Informatik 1 4 Prozessor Einzeltaktimplementierung Lothar Thiele Computer Engineering and Networks Laboratory Vorgehensweise 4 2 Prinzipieller Aufbau Datenpfad: Verarbeitung und Transport von
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
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013. Vorlesung 9, Dienstag 18.
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 9, Dienstag 18. Dezember 2012 (Performance Tuning, Profiling, Maschinencode) Prof. Dr.
3AA. Prof. Dr. Wolfgang P. Kowalk. Universität Oldenburg WS 2005/2006
3AA Prof. Dr. Wolfgang P. Kowalk Universität Oldenburg WS 2005/2006 Version vom 24.10.2005 Übersicht Einführung in maschinennahe Programmierung Verständnis für grundlegende Vorgänge im Computer Jedes Programm
Tutorium für Fortgeschrittene
Tutorium für Fortgeschrittene Stroop Aufgabe: Die Farbe gesehener Wörter ist zu klassifizieren. Es gibt 4 Farben (rot, blau, gelb, grün) In Eprime: red, blue, yellow and green. Jeder Farbe ist einer Taste
Neues vom STRIP Forth-Prozessor
Neues vom STRIP Forth-Prozessor Tagung der Forth-Gesellschaft April 2013 in Garmisch-Partenkirchen Willi Stricker 1 STRIP Forth-Prozessor STRIP32 32 Bit-Version Eigenschaften: Die 32-Bit-Version ist nahezu
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
Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2
Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016
Einführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
Arbeitsfolien - Teil 4 CISC und RISC
Vorlesung Informationstechnische Systeme zur Signal- und Wissensverarbeitung PD Dr.-Ing. Gerhard Staude Arbeitsfolien - Teil 4 CISC und RISC Institut für Informationstechnik Fakultät für Elektrotechnik
Programmieren I. Kapitel 5. Kontrollfluss
Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,
Einführung in die Assemblerprogrammierung mit
Einführung in die Assemblerprogrammierung mit dem MIPS-Simulator SPIM Reinhard Nitzsche 15.09.97 Letzte Änderung: 15. November 1999 $Id: spimintr.tex,v 1.3 1999/11/12 10:51:27 forth Exp $ Inhaltsverzeichnis
Lösungsvorschlag zu 1. Übung
Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zu 1. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche der Aussagen treffen auf jeden
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
Grundbegriffe der Informatik
Grundbegriffe der Informatik Übung Simon Wacker Karlsruher Institut für Technologie Wintersemester 2015/2016 GBI Grundbegriffe der Informatik Karlsruher Institut für Technologie 1 / 13 Programmiersprachen
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
Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. [email protected]. Hochschule Darmstadt -Fachbereich Informatik-
Informatik Studiengang Chemische Technologie Michael Roth [email protected] Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik
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
