Kode-Erzeugung, Abstrakte Maschinen. Grundlagen der Programmierung 2. Rechnerarchitekturen. Rechnerarchitekturen. Dann Kode-Erzeugung
|
|
- Britta Beckenbauer
- vor 5 Jahren
- Abrufe
Transkript
1 Kode-Erzeugung, Abstrakte Maschinen Grundlagen der Programmierung 2 Kode-Erzeugung (Compiler 5G) Prof. Dr. Manfred Schmidt-Schauß Kode-Erzeugung: Syntaxbaum Ausgabeprogramm Starte mit Syntaxbaum: Wähle Zielarchitektur Wähle abstrakte Maschine abstrakte Maschine Darstellung des eingegebenen Programms Zum Beispiel: andere Programmiersprache (C), oder Prozessor als Stackmaschine oder Registermaschine mit Assembler oder Akkumulatormaschine zur Zielarchitektur spezifiziert durch: Programmiersprache und operationale Semantik Sommersemester 2013 Dann Kode-Erzeugung aus dem Syntaxbaum in die Sprache der abstrakten Maschine. Grundlagen der Programmierung 2 (Comp-G) 2/46 Rechnerarchitekturen Rechnerarchitekturen Maschinenprogramm sieht externe Rechnerarchitektur Maschinenbefehlssatz interne Rechnerarchitektur Software Schnittstelle Hardware Die externe Architektur legt durch den Maschinenbefehlssatz fest, wie ein Rechner von der Seite der Software her angesprochen werden kann. Dies ist die für den Kodegenerator maßgebliche Schnittstelle. Die interne Architektur bezieht sich auf den internen Aufbau und das Organisationsprinzip eines Rechners. Hardware bzw. mittels Software modellierte Hardwareschnittstelle. Grundlagen der Programmierung 2 (Comp-G) 3/46 Grundlagen der Programmierung 2 (Comp-G) 4/46
2 Typische externe Architekturen Beispiel: externe Architekturen Stackmaschinen: Maschinenbefehle beziehen sich implizit auf einen Stack. Das Ergebnis von Operationen wird im Stack abgelegt. Dieser wird z.t. durch Register in der CPU nachgebildet. Akkumulatormaschinen: implizites Akkumulator-Register. Operationen beziehen sich auf einen Operanden und implizit den Akkumulator. Registersatzmaschinen: Befehle verknüpfen zwei oder drei Operanden (Zwei- bzw. Dreiadressbefehle), die Register oder Hauptspeicheradressen sein können. Es gibt praktisch nur noch RISC-Befehlssätze mit starken Beschränkungen (s.u.) a := b c Die Befehlsfolge (Programm) dazu: Stack Akkumulator Registersatz PUSH b LOAD c LOAD R1,c PUSH c ADD b ADD R1,b ADD STORE a STORE a,r1 (a Variable, b, c Konstanten.) Grundlagen der Programmierung 2 (Comp-G) 5/46 Grundlagen der Programmierung 2 (Comp-G) 6/46 Abarbeitung auf der Stackmaschine Abarbeitung auf der Akkumulatormaschine: Befehl Stack......, PUSH b..., b PUSH c..., b, c ADD..., d wobei d = b c Befehl Zustand... Akku =? LOAD c Akku = c ADD b Akku = d wobei d = b c STORE a Akku = d, Adresse a wird mit d überschrieben Grundlagen der Programmierung 2 (Comp-G) 7/46 Grundlagen der Programmierung 2 (Comp-G) 8/46
3 Abarbeitung auf der Registersatzmaschine: Kode-Erzeugung und abstrakte Maschinen Befehl Zustand Anmerkung... R1 =? R2 =?,... LOAD R1,c R1 = c, R2 =?,... ADD R1,b R1 = c, R2 =?,... wobei c := c b STORE a,r1 R1 = c, R2 =?,... Speicheradresse a wird mit dem Inhalt von R1 überschrieben Kode-Erzeugung: wähle eine Architektur (rechnernah) konzipiere passende abstrakte Maschine erzeuge Zwischencode (als Programm für die abstrakte Maschine) transformiere/optimiere Zwischencode Erzeuge Zielkode aus Zwischencode Grundlagen der Programmierung 2 (Comp-G) 9/46 Grundlagen der Programmierung 2 (Comp-G) 10/46 Abstrakte Maschine Stackmaschine: Zwischencode-Erzeugung besteht aus Modellierung des globalen Speichers: I.a. eine Kombination von Hauptspeicher, Stack, Register, Akkumulator, usw. abstrakte Maschinensprache: Normalerweise Programmiersprache für imperative und prozedurale Programme mit Zugriff auf die verwendeten Speicherobjekte. operationale Semantik: Interpreter für die abstrakte Maschinenbefehle Datenstrukturen dazu: Stack (bzw. Stapel; Keller) Programm, Programmzeiger Hauptspeicher Anmerkungen: Der Stack wird von oben her adressiert (wie Liste) einfachsten Stackbefehle: push, pop Annahme: nur ganze Zahlen sind auf dem Stack Grundlagen der Programmierung 2 (Comp-G) 11/46 Grundlagen der Programmierung 2 (Comp-G) 12/46
4 Operationen eines Stackprogramms pushk n pop n ist Zahlenkonstante, die auf den Stack obendrauf gelegt wird. das oberste Element des Stacks wird entfernt. push i i ist eine Zahl als Stackadresse; 0 = oberstes, 1 = zweites, usw. dieses Element des Stacks wird oben auf den Stack kopiert.,,, / arithmetische Operationen: Jeweils die obersten beiden Elemente des Stacks werden verknüpft und danach vom Stack entfernt. D.h. aus... ; a; b wird unter der Operation : der Stack..., a b. print Gebe das Ergebnis aus: drucke das oberste Element des Stacks und lösche das gedruckte Element. Beispiel Stackmaschine Berechne : Befehl Stack pushk 1 1; pushk 3 1; 3 4 pushk 5 4; 5 pushk 6 4; 5; 6 * 4; print Beschränkungen i, k konstant in pushk k und push i Grundlagen der Programmierung 2 (Comp-G) 13/46 Grundlagen der Programmierung 2 (Comp-G) 14/46 Operationale Semantik der Stackbefehle Interpreter I mit zwei Argumenten: das aktuelle Programm als Liste. Der nächste (aktuelle) Befehl ist das erste Element der Liste. Stack als Liste. P rogramm Stack I (pop : progr) (a : stackr) I progr stackr I (pushk k : progr) stack I progr (k : stack) I (push i : progr) stack I progr (k :: stack) wobei k = stack!! i I ( : progr) (a : b : stackr) I progr (c : stackr) wobei c = b a I ( : progr) (a : b : stackr) I progr (c : stackr) wobei c = b a I (print : rest) (a : stackr) I progr (stackr) drucke a als Seiteneffekt. Grundlagen der Programmierung 2 (Comp-G) 15/46 Funktionsaufrufe Übergabekonventionen zu Argumenten: Argumente sind auf dem Stack das letzte Argument ist oben auf dem Stack usw. Am Ende der Auswertung des Funktionsaufrufs steht statt der Argumente das Ergebnis auf dem Stack Berechne x 2 y 2, wenn der Stack am Anfang..., x, y ist: aktueller Befehl Stackinhalt danach r; x; y push 0 r; x; y; y r; x; y 1 wobei y 1 = y y push 1 r; x; y 1 ; x push 0 r; x; y 1 ; x; x r; x; y 1 ; x 1 wobei x 1 = x x r; x; z wobei z = y 1 x 1 print r; x z wird gedruckt Übergabekonvention nicht ganz erfüllt: x statt z Grundlagen der Programmierung 2 (Comp-G) 16/46
5 Funktionsaufrufe; slide Funktionsaufruf: jetzt richtig Beispiel jetzt mit richtiger Übergabekonvention des Resultats. Um Übergabekonvention sauber zu erfüllen: slide m n Schiebe die obersten m Elemente des Stacks um n nach unten. D.h. n Elemente unter den m oberen verschwinden. Operationale Semantik des slide-befehls: I (slide m n : progr) stack I progr (take m stack (drop (nm) stack)) aktueller Befehl Stackinhalt r; x; y push 0 r; x; y; y r; x; y 1 wobei y 1 = y y push 1 r; x; y 1 ; x push 0 r; x; y 1 ; x; x r; x; y 1 ; x 1 wobei x 1 = x x r; x; z wobei z = y 1 x 1 slide 1 1 r; z push 0 r; z; z print r; z Grundlagen der Programmierung 2 (Comp-G) 17/46 Grundlagen der Programmierung 2 (Comp-G) 18/46 Fallunterscheidungen und Sprünge Beispiel: fakultaet marke. branchz marke jump marke symbolische Sprungmarke im Stack-Programm. Wenn auf dem Stack eine Null steht, springe zu marke und lösche das oberste Element Ansonsten gehe zum nächsten Befehl (und lösche das oberste Element) Springe zu marke. Die operationale Semantik muss erweitert werden: I(.,.,.) drittes Argument ist Kopie des Programms. P rog Stack P rogkopie I (marke : prog) stack progs I prog stackprogs I (branchz marke) : prog) (top : stack) progs if (0 == top) then I (dropwhile (marke /=) progs) stack progs else I prog stack progs I (jump marke) : prog) stack progs I (dropwhile (marke /=) progs) stack progs anfang. push 0 loop. push 1 pushk 1 - branchz ende. push 1 pushk 1 - push 1 push 1 * slide 2 2 jump loop ende. slide 1 1 print Grundlagen der Programmierung 2 (Comp-G) 19/46 Grundlagen der Programmierung 2 (Comp-G) 20/46
6 Programmablauf zu (fakultaet 3) Kode-Erzeugung für Stackmaschine Stack Befehl 3 push 0 3,3 push 1 3,3,3,1 pushk 1 3,3,2-3,3,2 branchz e. 3,3 push 1 3,3,3 pushk 1 3,3,3,1-3,3,2 push 1 3,3,2,3 push 1 3,3,2,3,2 * 3,3,2,6 slide 2 2 Stack Befehl 2,6 jump loop. 2,6 push 1 2,6,2 pushk 1 2,6,2,1-2,6,1 branchz e. 2,6 push 1 2,6,2 pushk 1 2,6,2,1-2,6,1 push 1 2,6,1,6 push 1 2,6,1,6,1 * 2,6,1,6 slide 2 2 Stack Befehl 1,6 jump loop. 1,6 push 1 1,6,1 pushk 1 1,6,1,1-1,6,0 branchz e. 1,6 slide ENDE Beispiel-Ausdruck Der Syntaxbaum dazu in Präfixschreibweise ist: minus (plus 1 3) (mal 5 6) Der Syntaxbaum graphisch: Grundlagen der Programmierung 2 (Comp-G) 21/46 Grundlagen der Programmierung 2 (Comp-G) 22/46 Kode-Erzeugung für Stackmaschine Speicheradressierung in der Stackmaschine Kode-Erzeugung mittels rekursivem Programm auf dem Syntaxbaum: minus s t Code für s; Code für t; mal s t Code für s; Code für t; plus s t Code für s; Code für t; Konstante pushk Konstante Dies ergibt: Code(plus 1 3); Code(mal 5 6); Das Stackmaschinenprogramm ist dann: Speicher ist dargestellt als Array SP[0..] von Integers Zustand der Stackmaschine besteht aus: Stack Programm, Programmzeiger globaler Speicher SP[.] Neue Befehle: iget iput Der Wert SP[Stack[0]] wird auf den obersten Platz des Stacks abgelegt. Die Adresse auf dem Stack wird gelöscht. Der Wert Stack[0] wird nach SP[Stack[1]] kopiert. Die obersten zwei Elemente des Stacks werden gelöscht. pushk 1; pushk 3; ; pushk 5; pushk 6; ; Grundlagen der Programmierung 2 (Comp-G) 23/46 Grundlagen der Programmierung 2 (Comp-G) 24/46
7 Erweiterter Interpreter Zuweisungen I(.,.,.,.) hat 4 Argumente: Programm, Stack, Programmkopie, Speicher, Operationale Semantik: I (iget : prog) (a : stack) progs SP I prog (SP [a] : stack) progs SP I (iput : prog) (v : a : stack) progs SP I prog stack progs SP [a v] x := x 1 kann erzeugt werden: Befehl Stack Anmerkungen r; SP[123765] = 7 push 0 r; ; iget r; ; 7 pushk 1 r; ; 7; 1 r; ; 8 iput r SP[123765] = 8 Grundlagen der Programmierung 2 (Comp-G) 25/46 Grundlagen der Programmierung 2 (Comp-G) 26/46 Zusammengesetzte Objekte im Speicher Operationale Semantik der Paar-Befehle Paare a, b bestehen aus zwei Adressen a, b (d.h. Zahlen) und sind adressierbar SP-Einträge: ein Paar aus zwei Zahlen, oder eine Zahl. Neue Befehle für Paare: genpair readpair getmem vorher sind zwei Adressen auf dem Stack. Es wird ein Objekt erzeugt, das diese beiden Adressen enthält, und an einer neuen Adresse steht. Diese wird auf dem Stack abgelegt. Beide Adressen werden vorher vom Stack gelöscht. Dies Operation nimmt die oberste Element des Stacks als Adresse, löscht diese vom Stack, liest an dieser Adresse im Speicher das Paar und legt die beiden Adressen des Paars auf dem Stack ab. Legt einen Speicherplatz für eine Zahl an und legt die Adresse auf dem Stack ab. Die Adresse wird auf dem Stack gelöscht. Interpreter mit 5 Argumenten: nächste freie Adresse als weiteres Argument Operationale Semantik: I(genpair : prog) (b : a : stack) progs SP c I prog (c : stack) progs SP [c a, b ] (c 1) I(readpair : prog) (c : stack) progs SP c I prog (b : a : stack) progs SP[c a, b ] c wobei SP[c] = a, b ist I(getmem : prog) stack progs SP c I prog (c : stack) progs SP (c 1) Grundlagen der Programmierung 2 (Comp-G) 27/46 Grundlagen der Programmierung 2 (Comp-G) 28/46
8 Beispiel Code-Optimierung durch den Compiler Die Liste [1, 2] kann man jetzt erzeugen durch: Befehl Stack Anmerkungen r; nächste freie Adresse = getmem r; nächste freie Adresse = push 0 r; 12348; pushk 1 r; 12348; 12348; 1 iput r; SP[12348] := 1 getmem r; 12348; nächste freie Adresse = push 0 r; 12348; 12349; pushk 2 r; 12348; 12349; 12349; 2 iput r; 12348; SP[12349] := 2 genpair r; SP[12350] := 12348, Optimierung auf hoher Ebene: Im Syntaxbaum oder nach der Zwischencodeerzeugung. Prozedurersetzung (procedure inlining) Schleifentransformation, partielle Auswertung Nach Kode-Erzeugung Gucklochoptimierung Elimination redundanter Sprünge Umstellungen der Befehle Grundlagen der Programmierung 2 (Comp-G) 29/46 Grundlagen der Programmierung 2 (Comp-G) 30/46 Gucklochoptimierungen Gucklochoptimierungen Gucklochoptimierungen: lokale Optimierungen Beispiel Zwischencode:... ; push i; pop ;... Die Sequenz push i; pop kann man streichen, da ohne Effekt Es ist i.a. nicht möglich, direkt optimalen Code zu erzeugen. Das liegt an der schematischen Vorgehensweise Beispiel Für die Funktion f(x) = x, wird erzeugt: push 0; slide 1 1 Diese Sequenz ist redundant und kann eliminiert werden. Generell: Gucklochoptimierungen ergeben nur leichte Verbesserungen. Bessere Optimierung erfordert höheren Aufwand im Compiler. Grundlagen der Programmierung 2 (Comp-G) 31/46 Grundlagen der Programmierung 2 (Comp-G) 32/46
9 Prozedurersetzung Auf der Ebene des Syntaxbaums (sqrt (quadratsumme x y)) wird durch Ersetzung der Funktion quadratsumme zu (sqrt (x*x y*y)) Vorteile erspart einen Prozeduraufruf Semantik-erhaltend in nicht-strikten Prog. Sprachen. Beispiel: Terminierungsverhalten anders In strikt auswertenden Programmiersprachen (z.b. Python) def f (x,y): if y == 0 then x else 0 def g (x): return g(x) Nachteile mehrfache Einsetzung kann den Programmkode vergrößern sogar exponentielle Vergrößerung ist möglich Nicht-Terminierung des Ersetzungsprozesses: z.b. bei rekursiven Funktionen. Nicht Semantik-erhaltend in strikten Programmier-Sprachen: im Rumpf der ersetzten Prozedur könnten die Parameter mehrfach vorkommen Verdopplung von Seiteneffekten ( Zuweisungen, Drucken) f(g(x),1) wird zu if 1 == 0 then g(x) else 0 Grundlagen der Programmierung 2 (Comp-G) 33/46 Grundlagen der Programmierung 2 (Comp-G) 34/46 Beispiel: Verdopplung von Seiteneffekten Partielle Auswertung def f (x): x*x def g(x): print x;return x f (g x) wird zu g(x) * g(x) Berechnungen zur Compilezeit! Im Prinzip ist dies auf jede Auswertung oder Berechnung anwendbar, wenn diese nicht von irgendeiner Eingabe abhängt. statt 10*10 y*y kompiliert man: 100 y*y Partielle Auswertung: Interpreter Wenn im Compiler vorhanden, kann man den Interpreter zur partiellen Auswertung benutzen. Verdopplung (hier print x) tritt ein, wenn ein formaler Parameter der ersetzten Prozedur mehr als einmal im Rumpf vorkommt. Vermeiden kann man diesen Effekt durch ein let-konstrukt, wobei allerdings der Optimierungseffekt verloren gehen kann. Terminierung Seiteneffekte erreicht man durch maximale Anzahl Schritte, oder durch Beschränkung der Auswertungsvarianten während der partiellen Auswertung sind zu vermeiden. Grundlagen der Programmierung 2 (Comp-G) 35/46 Grundlagen der Programmierung 2 (Comp-G) 36/46
10 Partielle Auswertung: Varianten Instanziierung von Funktionen: map f [] = [] map f (x:xs) = (f x) : map f xs map quadrat Optimierung mittels partieller Auswertung: mapq [] = [] mapq (x:xs) = (quadrat x) : mapq xs Kode-Erzeugung für Registermaschinen RISC (reduced instruction set computer) Registermaschinen haben Universalregister Befehle: Üblich sind Dreiadress-Befehle OP DEST, SRC1, SRC2 entspricht DEST:= SRC1 OP SRC2 Diese können nur auf Registern ausgeführt werden. UND: Lade- und Speicher-Befehle (Hauptspeicher) Register: feste und gleiche Bytelänge Befehlskodierung im Speicher ebenfalls feste und gleiche Bytelänge Das Pipelining wird erleichtert (d.i. zeitlich überlappende Ausführung von Befehlen) Grundlagen der Programmierung 2 (Comp-G) 37/46 Grundlagen der Programmierung 2 (Comp-G) 38/46 Registersatzmaschinen, Beispiel Codegenerierung für RISC-Registersatzmaschinen Die Operation wird durch drei Befehle realisiert: LOAD R0,a ADD R0,R6 STORE R0,a SP[a] := SP[a] R6 Codegenerierung in drei Schritten; Eingabe: Syntaxbaum 1. Schritt: Einführung von Hilfsvariablen h i für jeden Knoten im Syntaxbaum. 2. Schritt Lebenszeitanalyse der Hilfsvariablen. 3. Schritt: Zuordnung von Registern zu Hilfsvariablen Ausgabe: Folge von RISC-Befehlen. Grundlagen der Programmierung 2 (Comp-G) 39/46 Grundlagen der Programmierung 2 (Comp-G) 40/46
11 Codegenerierung für RISC-Registersatzmaschinen: Codegenerierung RegisterMaschine 1. Schritt: Einführung von Hilfsvariablen h i für jeden Knoten im Syntaxbaum. Umwandlung in Folge von Zuweisung (bottom-up). Dies nennt man auch: SSA-Form (static single assignment: statische einmalige Zuweisung). Beispiel a b c wird zu h 1 := b c; h 2 := h 1 a; h 2 h 1 a b c Bei einer Load/Store-(RISC)-Architektur können nur Register verknüpft werden. a, b, c müssen vorher in Register geladen werden. a b c wird wie folgt übersetzt: Zuweisungen unter RISC h 5 h 4 h 1 h 2 h 3 h 1 := a; h 2 := b; h 3 := c; h 4 := h 2 h 3; h 5 := h 4 h 1; Normaler Syntaxbaum h 2 h 1 a b c h 1 := b c; h 2 := h 1 a; Grundlagen der Programmierung 2 (Comp-G) 41/46 Grundlagen der Programmierung 2 (Comp-G) 42/46 Lebenszeitanalyse von Variablen 2. Schritt Lebenszeitanalyse: eine Sequenz von Anweisungen wird rückwärts von der letzten zur ersten Anweisung durchlaufen. Beim Analysieren einer Anweisung h 1 := h 2 op h 3 wird die Variable h 1 als tot und die Variablen h 2 und h 3 als lebendig markiert. ermittelte Lebenszeiten: Zuweisung h 1 h 2 h 3 h 4 h 5 h 1 := a T T T T T h 2 := b L T T T T h 3 := c L L T T T h 4 := h 2 h 3 L L L T T h 5 := h 4 h 1 L T T L T Lebenszeit und Umsortierung Anzahl der Register: maximale L-Anzahl pro Zeile drei Register erforderlich Zuweisung h 1 h 2 h 3 h 4 h 5 h 1 := a T T T T T h 2 := b L T T T T h 3 := c L L T T T h 4 := h 2 h 3 L L L T T h 5 := h 4 h 1 L T T L T Nach semantikerhaltender Umsortierung: Nur noch 2 Register erforderlich. Zuweisung h 1 h 2 h 3 h 4 h 5 h 2 := b T T T T T h 3 := c T L T T T h 4 := h 2 h 3 T L L T T h 1 := a T T T L T h 5 := h 4 h 1 L T T L T Grundlagen der Programmierung 2 (Comp-G) 43/46 Grundlagen der Programmierung 2 (Comp-G) 44/46
12 Register-Programm Register-Programm 3. Schritt Registerzuordnung. Zuweisungen unter RISC Umsortierung und Register-Zuordnung 3. Schritt Registerzuordnung. Zuweisungen unter RISC Umsortierung Registerzuweisungen und Register-Zuordnung h 5 h 4 h 1 h 2 h 3 h 1 := a; h 2 := b; h 3 := c; h 4 := h 2 h 3; h 5 := h 4 h 1; R 1 h 2 := b; R 2 h 3 := c; R 1 h 4 := h 2 h 3; R 2 h 1 := a; R 1 h 5 := h 4 h 1; h 5 h 4 h 1 h 2 h 3 h 1 := a; h 2 := b; h 3 := c; h 4 := h 2 h 3; h 5 := h 4 h 1; R 1 h 2 := b; R 2 h 3 := c; R 1 h 4 := h 2 h 3; R 2 h 1 := a; R 1 h 5 := h 4 h 1; R 1 := b; R 2 := c; R 1 := R 1 R 2; R 2 := a; R 1 := R 1 R 2; Grundlagen der Programmierung 2 (Comp-G) 45/46 Grundlagen der Programmierung 2 (Comp-G) 46/46
Grundlagen der Programmierung 2
Grundlagen der Programmierung 2 Kode-Erzeugung (Compiler 5G) Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2018 Codeerzeugung Quelltext (String) Syntaxbaum Zwischencode Lexikalische Analyse Syntaktische
MehrStackmaschine; Speicheradressierung
Stackmaschine; Speicheradressierung Erweiterung um globalen Speicher (Heap, Halde) pro Speicherplatz eine Zahl. Notation ist als Array SP [0..]. Zugriff mittels Adresse (Index): eine Zahl i.a.: Zahlen
MehrKode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen
Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen Kode-Erzeugung: Syntaxbaum Ausgabeprogramm Starte mit Syntaxbaum: Darstellung des eingegebenen Programms Wähle Zielarchitektur Wähle abstrakte
MehrÜbersetzer (Compiler): Kodegenerierung
Kapitel 5 Übersetzer (Compiler): Kodegenerierung 5.1 Rechnerarchitekturen Maschinenprogramme Software externe Rechnerarchitektur Maschinenbefehlssatz interne Rechnerarchitektur Layout Hardware die externe
MehrKode-Erzeugung für Registersatz-Maschinen
Kode-Erzeugung für Registersatz-Maschinen Die meisten Maschinen sind heutzutage Registersatzmaschinen, die einen Satz von 16-32 Universalregistern besitzen. Üblich sind Dreiadress-Befehle OP DEST, SRC1,
MehrEinführung IMP-Syntax Reduktionssemantik Maschinen-Semantik. Teil IV. Semantik imperativer Sprachen
Teil IV Semantik imperativer Sprachen 201 1. Einführung Alternativen zur Beschreibung der Semantik: natürliche Sprache (bisher, unpräzise) operational Reduktionssemantik (vgl. Haskell-Semantik in Kap.
MehrTECHNISCHE 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
MehrDieÜbersetzung funktionaler Programmiersprachen
DieÜbersetzung funktionaler Programmiersprachen 107 11 Die Sprache PuF Wir betrachten hier nur die Mini-Sprache PuF( Pure Functions ). Insbesondere verzichten wir(vorerst) auf: Seiteneffekte; Datenstrukturen;
MehrProgrammiersprachen und Übersetzer
Programmiersprachen und Übersetzer Sommersemester 2009 5. April 2009 Vorteile bei der Verwendung höherer Programmiersprachen Vorteile bei der Verwendung höherer Programmiersprachen 1. Einfache Notation
Mehr1 Maschinenunabhängige Optimierungen. Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17
1 Maschinenunabhängige Optimierungen Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17 Optimierungen Automatische Optimierungen sind nötig, weil unoptimierter Code meist besser lesbar ist.
MehrOffenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab...
0 1 2 0 2 1 1 2 0 2 1 0 Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 1 2 1 1 3 2 2 3 212 Um solche Tabellen leicht implementieren zu können, stellt Java das switch-statement
MehrIII.1 Prinzipien der funktionalen Programmierung - 1 -
1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung
MehrGliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung
Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung
MehrGrundlagen der Programmierung 2. Operationale Semantik
Grundlagen der Programmierung 2 Operationale Semantik Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 29. April 2009 Semantik von Programmiersprachen Semantik = Bedeutung
MehrKapitel 4. Kontrollstrukturen
Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen
Mehr4. Mikroprogrammierung (Firmware)
4. Mikroprogrammierung (Firmware) 4. Ein Mikroprogramm-gesteuerter Computer 4.2 Mikroprogramm-Beispiel: Multiplikation 4.3 Interpretation von Maschinenbefehlen durch ein Mikroprogramm 4. Mikroprogrammierung
MehrGrundlagen der Programmierung 2 (1.A)
Grundlagen der Programmierung 2 (1.A) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 18. April 2007 Grundlagen der Programmierung 2: Geplanter Inhalt der ersten Hälfte
MehrKonzepte der Programmiersprachen
Konzepte der Programmiersprachen Lehrstuhl Prof. Plödereder Eduard Wiebe Institut für Softwaretechnologie Abteilung Programmiersprachen und Übersetzerbau Sommersemester 2007 Programm-Ausführung Programmiersprachen
MehrKapitel 4. Kontrollstrukturen
Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen
MehrHochschule Düsseldorf University of Applied Sciences HSD RISC &CISC
HSD RISC &CISC CISC - Complex Instruction Set Computer - Annahme: größerer Befehlssatz und komplexere Befehlen höhere Leistungsfähigkeit - Möglichst wenige Zeilen verwendet, um Aufgaben auszuführen - Großer
MehrOrganisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download
Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches
MehrVorlesung: Rechnerstrukturen, Teil 2 (Modul IP7)
Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) J. Zhang zhang@informatik.uni-hamburg.de Universität Hamburg AB Technische Aspekte Multimodaler Systeme
Mehr2. 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
MehrÜbungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002
1. Stellen Sie die schrittweise Verbesserung eines Compilers durch das Bootstrap- Verfahren mit Hilfe von T-Diagrammen dar. Gegeben ist ein auf der Maschine M lauffähiger Compiler C 1, der in S geschrieben
MehrProgrammierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.
1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache
MehrGrundlagen der Programmierung 3 A
Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2016 Haskell, Typen, und Typberechnung Ziele: Haskells Typisierung Typisierungs-Regeln
Mehr1 pulsierender Speicher
1 pulsierender Speicher 1.1 Aufgabentyp Gegeben sei das folgende C-Programm: [...] (a) Geben Sie den Gültigkeitsbereich jedes Objektes des Programms an. (b) Stellen Sie die Rechnung des Programms für die
Mehr3. Sprachkonzepte und ihre Übersetzungen
Übersetzung von dynamischen Feldern: var feld: array[u1..o1,,uk..ok] of integer; //ui, oi nicht alle konstant; z.b. Parameter Speicherbelegung: (Felddeskriptor) 0 fiktive Anfangsadresse 1 Feldgröße 2 Subtr.
MehrGrundbegriffe der Informatik
Grundbegriffe der Informatik Kapitel 22: Mima-X Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik
MehrÜbung Rechnerstrukturen. Aufgabenblatt 10 Ausgabe: , Abgabe: :00. Aufgabe 10.1 (Punkte 25) Gruppe Matrikelnummer(n)
64-041 Übung Rechnerstrukturen Aufgabenblatt 10 Ausgabe: 17.12.14, Abgabe: 7.1.15 24:00 Gruppe Name(n) Matrikelnummer(n) Aufgabe 10.1 (Punkte 25) Entwurf eines Schaltwerks Wir betrachten ein Schaltwerk
MehrProgrammiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 -
Programmiersprachen: Klassifizierung und Methoden Programmier-Paradigmen Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Begriffe Syntax Beschreibung der Programme als Texte let xyz =
MehrKap.2 Befehlsschnittstelle. Prozessoren, externe Sicht
Kap.2 Befehlsschnittstelle Prozessoren, externe Sicht 2 Befehlsschnittstelle 2.1 elementare Datentypen, Operationen 2.2 logische Speicherorganisation 2.3 Maschinenbefehlssatz 2.4 Klassifikation von Befehlssätzen
MehrHaskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners
MehrHaskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Überladung und Konversion in Haskell. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Sommersemester
Mehr2.1 Rechnersichten 2.2 Rechnerorganisation: Aufbau und Funktionsweise
Teil 1 Kapitel 2 Rechner im Überblick 2.1 Rechnersichten 2.2 Rechnerorganisation: Aufbau und Funktionsweise Frank Schmiedle Technische Informatik I 2.1 Rechnersichten Modellierung eines Rechners Zusammenspiel
MehrAuswertung von Python-Programmen
Auswertung von Python-Programmen Themen: von-neumann Rechner operationale Semantik: Zustände und Zustandsübergänge lokale Definitionen zunächst ohne Listen P raktische Informatik 1, W S 2004/05, F olien
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.).
Mehr7 Laufzeit-Speicherverwaltung
7.1 Grundlagen Bevor wir die Code-Generierung betrachten, müssen wir uns Gedanken über zur Laufzeit des zu generierenden Programms notwendige Aktivitäten zur Zuordnung und Freigabe von Speicherplatz machen.
MehrKapitel 4: Anweisungen und Kontrollstrukturen
inführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 4: Anweisungen und Kontrollstrukturen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische
MehrZwischencodeerzeugung Compiler II
Zwishenodeerzeugung Compiler II Prof. Dr. Ursula Goltz 14.09.2012 Einleitung Front-End... Parser Sem. Analys Zwishenodegenerator Bak-End Codegenerator... Zwishendarstellung (Zwishenode) evtl. mashinennunabh.
MehrAbstrakte Maschinen und Kode-Erzeugung für Haskell
Abstrakte Maschinen und Kode-Erzeugung für Haskell Implementierung der Reduktion: Compilierung: Terme als Bäume, Reduktion als Transformation auf Bäumen Terme als gerichtete Graphen, Template-Instantiation,
MehrBetriebssysteme Teil 3: Laufzeitsystem für Programme
Betriebssysteme Teil 3: Laufzeitsystem für Programme 23.10.15 1 Literatur [3-1] Stack: http://fbim.fh-regensburg.de/~hab39652/pg1/skriptum/ ausdruecke/maschinenmodell.html [3-2] https://de.wikipedia.org/wiki/dynamischer_speicher
Mehr6. Funktionen, Parameterübergabe
6. Funktionen, Parameterübergabe GPS-6-1 Themen dieses Kapitels: Begriffe zu Funktionen und Aufrufen Parameterübergabearten call-by-value, call-by-reference, call-by-value-and-result in verschiedenen Sprachen
MehrTechnische Informatik I - HS 18
Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik I - HS 18 Musterlösung zu Übung 3 Datum : 25.-26. Oktober 2018 Aufgabe 1: Wurzelverfahren nach Heron Das
MehrMethoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.
Methoden zur Interpretation LISPähnlicher Programmiersprachen Seminarvortrag 20.01.2017 FACHBEREICH 9 TOBIAS STUMM MATR.-NR. 4012917 1 Inhalt Motivation Lisp > Definition > Scheme Interpreter > Definition
MehrAssembler - Adressierungsarten
Assembler - Adressierungsarten Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Adressierungsarten 1/31 2008-04-01
MehrUnterprogramme. 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
MehrCodegenerierung für Basisblöcke (1)
Codegenerierung für Basisblöcke (1) Basisblock (Grundblock): Teil des Kontrollflussgraphen, der keine Verzweigungen (Sprünge) oder Vereinigungen (Label) enthält keine Zyklen: bessere Optimierung möglich
MehrÜbung Praktische Informatik II
Übung Praktische Informatik II FSS 2009 Benjamin Guthier Lehrstuhl für Praktische Informatik IV Universität Mannheim guthier@pi4.informatik.uni-mannheim.de 20.03.09 4-1 Heutige große Übung Ankündigung
MehrGrundlagen der Programmierung 3 A
Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Haskell, Typen, und Typberechnung Ziele: Haskells Typisierung Typisierungs-Regeln
MehrOrganisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online
Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches
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.
MehrProgrammieren lernen mit Perl
Xpert.press Programmieren lernen mit Perl Bearbeitet von Joachim Ziegler 1. Auflage 2002. Buch. XIV, 400 S. Hardcover ISBN 978 3 540 42685 1 Format (B x L): 15,5 x 23,5 cm Gewicht: 783 g Weitere Fachgebiete
MehrDer von Neumann Computer
Der von Neumann Computer Grundlagen moderner Computer Technologie 1 Der moderne Computer ein weites Spektrum Typ Preis Anwendungsbeispiel embeded Computer 10-20 $ in Autos, Uhren,... Spielcomputer 100-200$
Mehr1 Abstrakte Datentypen
1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;
MehrGrundlagen der Informatik I (Studiengang Medieninformatik)
Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de
MehrGrundlagen der Rechnerarchitektur. MIPS Assembler
Grundlagen der Rechnerarchitektur MIPS Assembler Übersicht Arithmetik, Register und Speicherzugriff Darstellung von Instruktionen Logische Operationen Weitere Arithmetik Branches und Jumps Prozeduren 32
MehrMächtigkeit von WHILE-Programmen
Mächtigkeit von WHILE-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 1 / 23 Turingmaschine (TM) M = (Q, Σ, Γ, B, q 0, q, δ) Unendliches Band... 0 c
Mehr= 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
MehrÜbersicht. Speichertypen. Speicherverwaltung und -nutzung. Programmieren in C
Übersicht Speichertypen Speicherverwaltung und -nutzung Speichertypen Beim Laden eines Programms in den Speicher (Programmausführung) kommen 3 verschiedene Speicherbereiche zum Einsatz: Text Segment (Code
MehrC++ - Objektorientierte Programmierung Konstante und statische Elemente
C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja
MehrLösungsvorschlag Serie 2 Rekursion
(/) Lösungsvorschlag Serie Rekursion. Algorithmen-Paradigmen Es gibt verschiedene Algorithmen-Paradigmen, also grundsätzliche Arten, wie man einen Algorithmus formulieren kann. Im funktionalen Paradigma
MehrInhalt. 4.9 Typen, Variable und Konstante
Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Pointern
MehrVon Assembler zu Java
Von Assembler zu Java Prof. Dr.-Ing. Thomas Schwotzer 1 Einführung Die erste imperativen Programme wurden in den Urzeiten der IT tatsächlich direkt auf der Hardware der Maschinen geschrieben. Die verfügbaren
Mehr(Ausnahmebehandlung)
16. Exceptions (Ausnahmebehandlung) 16-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 16: Exceptions (Ausnahmebehandlung) Motivation Throw und Catch 16. Exceptions (Ausnahmebehandlung) 16-2
MehrDas Kontrollfluss-Diagramm für Ò ¼ µ:
Das Kontrollfluss-Diagramm für Ò ¼ µ: find0(a,x,n1,n2) t = (n1+n2)/2; no a[t]==x yes no n1==n2 yes return t; no x > a[t] yes return 1; no n1 < t yes return find0(a,x,t+1,n2); return 1; return find0(a,x,n1,t
Mehr1 Funktionale vs. Imperative Programmierung
1 Funktionale vs. Imperative Programmierung 1.1 Einführung Programme einer funktionalen Programmiersprache (functional programming language, FPL) bestehen ausschließlich aus Funktionsdefinitionen und Funktionsaufrufen.
MehrMächtigkeit von WHILE-Programmen
Mächtigkeit von WHILE-Programmen und rekursive Funktionen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 16. November 2010 Berthold Vöcking, Informatik 1 () Vorlesung
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrÜbungsblatt 10 (Block C 2) (16 Punkte)
georg.von-der-brueggen [ ] tu-dortmund.de ulrich.gabor [ ] tu-dortmund.de pascal.libuschewski [ ] tu-dortmund.de Übung zur Vorlesung Rechnerstrukturen Wintersemester 2016 Übungsblatt 10 (Block C 2) (16
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
MehrDank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung
Dank Vorlesung Theoretische Informatik II Bernhard Beckert Institut für Informatik Diese Vorlesungsmaterialien basieren zum Teil auf den Folien zu den Vorlesungen von Katrin Erk (gehalten an der Universität
Mehr2. Imperative Programmierung und Berechenbarkeit - Registermaschinen -
2. Imperative Programmierung und Berechenbarkeit - Registermaschinen - 2.1 Definition 2.2 Loop-Programme 2.3 While Programme 2.4 While Programme und rekursive Funktionen Im Wesentlichen: Tafel! Maschinenmodell
MehrKap.3 Mikroarchitektur. Prozessoren, interne Sicht
Kap.3 Mikroarchitektur Prozessoren, interne Sicht Kapitel 3 Mikroarchitektur 3.1 elementare Datentypen, Operationen und ihre Realisierung (siehe 2.1) 3.2 Mikroprogrammierung (zur Realisierung der Befehlsabarbeitung
MehrWiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute
Wiederholung: Zusammenfassung Felder Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Ein Feld A kann repräsentiert
MehrHaskell for Hackers... or why functional programming matters
... or why functional programming matters Franz Pletz CCC München 27-06-2009 @ GPN8 Fahrplan Ablauf Motivation 1 Ablauf Motivation 2 3 4 Ablauf Ablauf Motivation bei Fragen/Unklarheiten:
MehrImpact of Economics on Compiler Optimization
Impact of Economics on Compiler Optimization Arch D. Robinson Kai Software Seminar Zwischensprachen & Codegenerierung IPD Goos Dimitar Dimitrov Betreuer Rubino Geiß 0 Überblick Überblick Problem Übersetzer
Mehr3. RAM als Rechnermodell
3. RAM als Rechnermodell Motivation Wir möchten Berechnungsvorschriften (Algorithmen) formal beschreiben und deren Eigenschaften wie Korrektheit und Laufzeit analysieren Rechnermodell abstrahiert vom verwendeten
MehrRechnerstrukturen. 7. Assembler. Inhalt. Vorlesung Rechnerstrukturen. Assemblerprogrammierung SML-CPU. SML-Assembler. Binden
Rechnerstrukturen 7. Assembler Assemblerprogrammierung SML-CPU Inhalt SML-Assembler Adressierungsarten Instruktionssatz Assembler-Direktiven Binden 7.2 1 Maschinensprache Instruktion = Bitkombination Für
MehrGrundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
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.
Mehr1 Programmiersprachen 1.1 1
1 Programmiersprachen 1.1 1 Meilensteine imperativer Programmiersprachen (teilweise objektorientiert) Fortran 1960 Cobol Algol 60 PL/I Algol W Simula 67 Algol 68 1970 Pascal C Smalltalk Modula 1980 Ada
MehrKapitel 1: Informationsverarbeitung durch Programme
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2009 Kapitel 1: Informationsverarbeitung
MehrArithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9
Arithmetik, Register und Speicherzugriff Grundlagen der Rechnerarchitektur Assembler 9 Arithmetik und Zuweisungen Einfache Arithmetik mit Zuweisung C Programm: a = b + c; d = a e; MIPS Instruktionen: Komplexere
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
Mehr3AA. 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
MehrDatenpfad einer einfachen MIPS CPU
Datenpfad einer einfachen MIPS CPU Die Branch Instruktion beq Grundlagen der Rechnerarchitektur Prozessor 13 Betrachten nun Branch Instruktion beq Erinnerung, Branch Instruktionen beq ist vom I Typ Format:
MehrOperationale Semantik: Haskell
Kapitel 4 Operationale Semantik: Haskell 4.1 Semantik von Programmiersprachen Programme sind zunächst mal nur Text. Programme sollen aber etwas im Rechner bewirken bzw. eine Funktion oder Funktionalität
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Einleitung und Grundlagen Maike Buchin 18.4.2017 Verantwortliche Dozentin Organisation der Übungen Übungsleiter Korrekteure Maike Buchin Maike.Buchin@rub.de Raum NA 1/70 Sprechzeiten:
MehrRechnergrundlagen SS Vorlesung
Rechnergrundlagen SS 2007 10. Vorlesung Inhalt Rechenwerk (ALU) Steuerwerk Instruktionssatz-Architekturen Assembler-Programmierung Synchroner/asynchroner Systembus RISC vs. CISC Kontrollfluss/Datenfluss
Mehr4.4 Imperative Algorithmen Prozeduren
4.4.2 Prozeduren Der Wert eines Ausdrucks u in Zustand z Z lässt sich damit auch leicht definieren (jetzt W Z statt W σ ) Dazu erweitern wir die rekursive Definition von Folie 57 (Wert eines Ausdrucks):
Mehr