Vorlesung Programmieren
|
|
|
- Christian Hauer
- vor 9 Jahren
- Abrufe
Transkript
1 Vorlesung Programmieren 17 Vom Programm zur Maschine Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), FAKULTÄT FÜR INFORMATIK sdq.ipd.kit.edu KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
2 Literaturhinweis - Weiterlesen Prof. Dr. Gerhard Goos Vorlesung über Informatik Band 2: Objektorientiertes Programmieren und Algorithmen, Springer Lehrbuch Kapitel 11 Vom Programm zur Maschine 2
3 Lernziele Funktionsweise des Stapelspeichers und der Halde verstanden haben und die Zusammenhänge mit Prozessen in Verbindung setzen können. Einsatz der Datenstrukturen bei der Speichereinteilung erläutern können. Einsatz der Datenstrukturen bei unterschiedliche Sprüngen im Programmcode erklären können. Funktionsweise und Einsatz der Datenstrukturen beim Methodenaufruf und Verlassen einer Methode erläutern können. 3
4 Überblick Datenstrukturen: Halde und Stapelspeicher Einsatz der Datenstrukturen beim Aufruf einer Methode Speichereinteilung Adressierung des Speichers Verschiedene Arten von Sprüngen Schritte beim Methodenaufruf Schritte beim Verlassen einer Methode 4
5 Motivation Von der Java-Datei über den plattformunabhängigen Bytecode hin zum plattformabhängigen Maschinencode Java-Datei plattformunabhängig Compiler.class-Datei Bytecode JVM Maschinencode plattformabhängig 5
6 Halde Halde (engl. Heap) ist ein reservierter Speicher zur Speicherung von Elementen zur Laufzeit bei Bedarf Speichern der Daten in einer beliebigen Anordnung Freigabe des allokierten Speichers durch Aufhebung des Referenzierens Beispiel: Java Heap zur Speicherung von Objekten in Java Dateneinteilung in der Halde minheap Halde maxadr 6
7 Stapelspeicher Stapelspeicher, auch bekannt als Kellerspeicher (engl. Stack) ist eine Datenstruktur. Arbeitsweise: Last-In-First-Out (LIFO) Push-Operation: Das neue Objekt wird auf den Stapel gelegt (gestapelt) Pop-Operation: Das neueste Objekt vom Stapel heruntergenommen Befehlsreihenfolge: Push(A) Push(B) Push(C) Push(D) D=Pop C=Pop B=Pop D C B A 7
8 Einsatz des Stapelspeichers Ein Stapelspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit bei Vom Programm zur Maschinen Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion Dateneinteilung im Keller geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Pegel Keller 8
9 Einsatz des Stapelspeichers Ein Stapelspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit bei Vom Programm zur Maschinen Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion Dateneinteilung im Keller geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Pegel Keller 9
10 Einsatz des Stapelspeichers Ein Stapelspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit bei Vom Programm zur Maschinen Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion Dateneinteilung im Keller geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Pegel Keller 10
11 Einsatz des Stapelspeichers Ein Stapelspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit bei Vom Programm zur Maschinen Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion Dateneinteilung im Keller geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Keller Pegel 11
12 Einsatz des Stapelspeichers Ein Stapelspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit bei Vom Programm zur Maschinen Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion Dateneinteilung im Keller geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Keller Pegel 12
13 Einsatz des Stapelspeichers Ein Stapelspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit bei Vom Programm zur Maschinen Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion Dateneinteilung im Keller geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Keller Pegel 13
14 Einsatz des Stapelspeichers Ein Stapelspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit bei Vom Programm zur Maschinen Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion Dateneinteilung im Keller geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Keller Pegel 14
15 Einsatz des Stapelspeichers Ein Stapelspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit bei Vom Programm zur Maschinen Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion Dateneinteilung im Keller geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Keller Pegel 15
16 Speichereinteilung Ein Speicher mit dem Adressraum = [0, maxadr]. Die Elemente des Speichers Speicher[i] heißen Speicherzellen Der Wert einer Speicherzelle oder einer Variable heißt Inhalt Der Speicher des Programms besteht aus: Programmbereich für Befehle Kontantenbereich für alle Literale des Programms Datenbereich für alle Variablen 0 Speichereinteilung maxprog maxlit mindat Programm Konstanten Daten maxadr 16
17 Einteilung des Datenbereichs Grund der Aufteilung des Speichers: Anzahl der Referenzobjekte a priori nicht bekannt Keller wächst nach unten Speichereinteilung Dateneinteilung 0 minvar maxprog maxlit mindat Programm Konstanten Pegel Programmvariable Keller für dynamische Variablen (mit unbeschränkter Lebensdauer) maxadr Daten minheap maxadr Halde Halde für anonyme Objekte (mit unbekannter Lebensdauer) 17
18 Sprünge Die Variable Befehlszähler (BZ) gehört nicht zum Speicher enthält während der Ausführung die des nächsten auszuführenden Befehls Der Wert der Variable BZ wird bei sequentieller Ausführung der Befehle jedes Mal um 1 erhöht entspricht der des Befehls b markiert mit M, falls das Programm mit Ausführung des Befehls b fortgesetzt wird (Schreibweise goto M). Eine Zuweisung an BZ wird als Sprung bezeichnet und M als Sprungziel 18
19 Sprünge Im Folgenden beispielhaft drei Formen von Sprüngen: Unbedingte Sprünge (goto M) Beispiel goto BZ±i bedeutet BZ:=BZ±i Bedingte Sprünge (if-then goto M) Interprogrammsprung (gosub M) entspricht dem Aufruf parameterloser Methoden notiert zu BZ:=M auch vor dem Sprung in einer Variable Rückkehradresse:=BZ alt +1. Relative : steht an M der Sprungbefehl goto M, so entspricht goto M dem Befehl goto BZ+i, wenn die relative i=m-m 19
20 Bedingte Sprünge - Verzweigung if M(a 1 ) = M(a 2 ) then S end U if: LDV a 1 EQL a 2 NOT then: S end: U JMN end LDV a: Lade a in den Akkumulator EQL a: Vergleiche den Inhalt des Akkumulators mit a NOT: Negiere den Inhalt des Akkumulators JMN a: Bedingter Sprung Grundbegriffe der Informatik, 5.ÜB, Thomas Worsch und Simon Wacker 20
21 Bedingte Sprünge - Verzweigung if M(a 1 ) = M(a 2 ) then S else T end U if: LDV a 1 EQL a 2 JMN then else: T then: S end: U JMP end LDV a: Lade a in den Akkumulator EQL a: Vergleiche den Inhalt des Akkumulators mit a NOT: Negiere den Inhalt des Akkumulators JMN a: Bedingter Sprung JMP a: Unbedingter Sprung Grundbegriffe der Informatik, 5.ÜB, Thomas Worsch und Simon Wacker 21
22 Kopfgesteuerte Schleife While M(a 1 ) = M(a 2 ) do S end T while: LDV a 1 EQL a 2 NOT do: S end: T JMN end JMP while LDV a: Lade a in den Akkumulator EQL a: Vergleiche den Inhalt des Akkumulators mit a NOT: Negiere den Inhalt des Akkumulators JMN a: Bedingter Sprung JMP a: Unbedingter Sprung Grundbegriffe der Informatik, 5.ÜB, Thomas Worsch und Simon Wacker 22
23 Adressierung durch 3 Basisadressen minvar: die Anfangsadresse des Speicherbereichs statischer Programmvariablen Umgebungszeiger (umg): Die Basisadresse für die dynamischen Variablen (lokale Variablen) in der Schachtel des laufenden Unterprogramms Pegel: Kellerpegel des obersten Elementes im Laufzeitkeller Basisadresse für Zwischenergebnisse wird bei jedem Unterprogrammaufruf um 1 erhöht minvar Dateneinteilung Programmvariable einer statischen Variable v mit einer relativen r v minvar + r v dynamischen Variable v mit einer relativen r v umg + r v Pegel minheap maxadr Halde 23
24 Laufzeitkeller Zur Speicherung dynamischer Programmvariablen Grund für Kellerspeicher: Geschachtelte Unterprogrammaufrufe Kellerspeicher besteht daher aus Einheiten, bekannt als Schachteln (engl. Stack Frame, Activation Record) Dateneinteilung Unterste Schachtel reserviert für statische Variablen Schachtel beinhaltet: lokale Variablen Rückkehradresse etc. minvar Pegel minheap Programmvariable maxadr Halde 24
25 Laufzeitkeller - Schachtel Anlegen einer neuen Schachtel beim Aufruf eines Unterprogramms Löschen einer Schachtel beim Verlassen des Unterprogramms Umgebungszeiger umg Kellerpegel Parameter Rückkehradresse Lokale Variable Parameter Rückkehradresse Lokale Variable Schachtel Aufrufer Schachtel Unterprogramm 25
26 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode 26
27 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode Dateneinteilung minvar Pegel Programmvariable minheap 27
28 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode Dateneinteilung minvar Programmvariable Pegel minheap 28
29 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode Dateneinteilung minvar Programmvariable Parameter Pegel minheap 29
30 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode Dateneinteilung minvar Programmvariable Parameter Pegel minheap 30
31 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode Dateneinteilung minvar Programmvariable Parameter Rückkehradresse Pegel minheap 31
32 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode Dateneinteilung minvar Programmvariable Parameter Rückkehradresse Pegel Lokale Variable minheap 32
33 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode Dateneinteilung minvar Programmvariable umg Pegel Parameter Rückkehradresse Lokale Variable minheap 33
34 Schritte beim Verlassen der Methode 1. Zuweisung eines eventuellen Ergebnisses 2. Zuweisung der Rückkehradresse an ein Register R 3. Rücksetzen des Umgebungszeigers 4. Erniedrigung des Kellerpegels zum Aufbau des Kellers 5. Unbedingter Sprung goto <R> auf die Rückkehradresse Kellerpegel Parameter Rückkehradresse Lokale Variable Parameter Rückkehradresse Lokale Variable Schachtel Aufrufer Schachtel Untermethode 34
35 Schritte beim Verlassen der Methode 1. Zuweisung eines eventuellen Ergebnisses 2. Zuweisung der Rückkehradresse an ein Register R 3. Rücksetzen des Umgebungszeigers 4. Erniedrigung des Kellerpegels zum Aufbau des Kellers 5. Unbedingter Sprung goto <R> auf die Rückkehradresse Umgebungszeiger umg Kellerpegel Parameter Rückkehradresse Lokale Variable Parameter Rückkehradresse Lokale Variable Schachtel Aufrufer Schachtel Untermethode 35
36 Schritte beim Verlassen der Methode 1. Zuweisung eines eventuellen Ergebnisses 2. Zuweisung der Rückkehradresse an ein Register R 3. Rücksetzen des Umgebungszeigers 4. Erniedrigung des Kellerpegels zum Aufbau des Kellers 5. Unbedingter Sprung goto <R> auf die Rückkehradresse Kellerpegel Umgebungszeiger umg Parameter Rückkehradresse Lokale Variable Parameter Rückkehradresse Lokale Variable Schachtel Aufrufer Schachtel Untermethode 36
37 Schritte beim Verlassen der Methode 1. Zuweisung eines eventuellen Ergebnisses 2. Zuweisung der Rückkehradresse an ein Register R 3. Rücksetzen des Umgebungszeigers 4. Erniedrigung des Kellerpegels zum Aufbau des Kellers 5. Unbedingter Sprung goto <R> auf die Rückkehradresse Umgebungszeiger umg Kellerpegel Parameter Rückkehradresse Lokale Variable Parameter Rückkehradresse Lokale Variable Schachtel Aufrufer Schachtel Untermethode 37
38 Zusammenfassung Halde (engl. Heap) ist ein reservierter Speicher zur Speicherung von Elementen zur Laufzeit bei Bedarf in beliebiger Reihenfolge Stapelspeicher ist eine Datenstruktur nach Last-In-First-Out-Prinzip Allokation des Speichers zur Laufzeit bei Vom Programm zur Maschinen Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren Der Speicher des Programms besteht aus: Programmbereich für Befehle Kontantenbereich für alle Literale des Programms Datenbereich für alle Variablen Drei Formen von Sprüngen: Unbedingte Sprünge (goto M) Bedingte Sprünge (if-then goto M) Interprogrammsprung (entspricht dem Aufruf parameterloser Methoden) Aufruf einer Methode vs. Verlassen einer Methode 38
Vorlesung Programmieren
Vorlesung Programmieren 16 Vom Programm zur Maschine Dr.-Ing. Erik Burger Version 1.0 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION
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
Grundbegriffe der Informatik
Grundbegriffe der Informatik Kapitel 22: Mima-X Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik
Vorlesung Programmieren
Vorlesung Programmieren 3. Kontrollstrukturen 04.11.2015 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),
Speicher und Adressraum
Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode
Kapitel 4. Kontrollstrukturen
Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen
6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
Betriebssysteme 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
Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
B1 Stapelspeicher (stack)
B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen
Vorlesung Programmieren
Vorlesung Programmieren 3. Kontrollstrukturen 09.11.2016 Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND
DieÜ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;
Programmieren 1 C Überblick
Programmieren 1 C Überblick 1. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen
J.5 Die Java Virtual Machine
Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class
Java Virtual Machine (JVM) Bytecode
Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,
Praktikum Compilerbau Sitzung 9 Java Bytecode
Praktikum Compilerbau Sitzung 9 Java Bytecode Prof. Dr.-Ing. Gregor Snelting Matthias Braun und Sebastian Buchwald IPD Snelting, Lehrstuhl für Programmierparadigmen KIT Universität des Landes Baden-Württemberg
Assembler Unterprogramme
Assembler Unterprogramme Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler Unterprogramme 1/43 2008-06-03 Unterprogramme
3. Basiskonzepte von Java
3. Basiskonzepte von Java Die in Abschnitt 3 vorgestellten Konzepte von Java sind allgemein gültig und finden sich so oder so ähnlich in eigentlich jeder gängigen Programmiersprache. Abschnitt 3.2.3, Klassen
FAKULTÄT FÜR INFORMATIK
FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN Lehrstuhl für Rechnertechnik und Rechnerorganisation Prof. Dr. Arndt Bode Einführung in die Rechnerarchitektur Wintersemester 2016/2017 Zentralübung
Vorlesung Programmieren
Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von
Maschinencode Dateiformat und Stackframes
Maschinencode Dateiformat und Stackframes Proseminar C-Programmierung - Grundlagen und Konzepte Julian M. Kunkel [email protected] Wissenschaftliches Rechnen Fachbereich Informatik
Mä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
Assembler - 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
Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. [email protected]. [email protected].
1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack [email protected] Klaas Boesche [email protected] Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache
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
Syntax von LOOP-Programmen
LOOP-Berechenbarkeit Syntax von LOOP-Programmen Definition LOOP-Programme bestehen aus: Variablen: x 0, x 1, x 2, x 3,... Konstanten: 0, 1, 2, 3,... Trennsymbolen:; und := Operationen: + und Befehlen:
Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit
Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält
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
Elementare Konzepte von
Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)
Vorlesung Programmieren
Vorlesung Programmieren 14 Parsen, Suchen und Sortieren 19./26.01.2015 Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION
Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Rekursion Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27 Motivation Beispiel: Fibonacci-Folge
Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht
Kap.2 Befehlsschnittstelle Prozessoren, externe Sicht 2 Befehlsschnittstelle 2.1 elementare Datentypen, Operationen 2.2 logische Speicherorganisation 2.3 Maschinenbefehlssatz 2.4 Klassifikation von Befehlssätzen
Grundbegriffe der Informatik Tutorium 5
Grundbegriffe der Informatik Tutorium 5 Tutorium Nr. 16 Philipp Oppermann 2. Dezember 2014 KARLSRUHER INSTITUT FÜR TECHNOLOGIE KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum
Repetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz
Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 13.11.2013 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen
Aufrufe von Objektmethoden
Aufrufe von Objektmethoden SWE-35 Objektmethoden werden für ein bestimmtes Objekt aufgerufen; sie benutzen dessen Objektvariablen: double r = big.getradius (); Methodenaufrufe können auch die Werte von
Ü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
Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen
Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser
Compilerbau + Virtuelle Maschinen
Helmut Seidl Compilerbau + Virtuelle Maschinen München Sommersemester 2009 1 Organisatorisches Der erste Abschnitt Die Übersetzung von C ist den Vorlesungen Compilerbau und Virtuelle Maschinen gemeinsam
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
Vorlesung Programmieren
Vorlesung Programmieren Einführung 21.10.2015 Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), FAKULTÄT
Rekursive Funktionen (1)
Rekursive Funktionen (1) Rekursive Algorithmen Wenn Gesamtlösung durch Lösen gleichartiger Teilprobleme erzielbar: Rekursion möglich Beispiel: Fakultät einer ganzen Zahl n: n i n! = i=1 für n > 0 1 für
ERA-Zentralübung Maschinenprogrammierung
Marcel Meyer LRR TU München 04.11.2016 Inhalt Aufgabe 1.1 Aufgabe 1.2 Speicherzugriffe Unbedingte Sprünge Stapelspeicher Unterprogramme Aufgabe 1.1 Quellregister AX, BX, CX Konstante deklarieren Werte
Informatik II Prüfungsvorbereitungskurs
Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo [email protected] 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest
Dynamische Speicherverwaltung
Dynamische Speicherverwaltung 1/ 23 Dynamische Speicherverwaltung Tim Dobert 17.05.2013 Dynamische Speicherverwaltung 2/ 23 Gliederung 1 Allgemeines zur Speichernutzung 2 Ziele und Nutzen 3 Anwendung in
Stack, Stackpointer, Unterprogramm HP: 0 * 1 * 2 * 3 CAL UP1 4 * 5 * 6 CAL UP2 7 *... UP1: 30 * 33 RET UP2: 40 * 41 CAL UP1 42 * 43 RET
Stack, Stackpointer, Unterprogramm HP: 0 * 1 * 2 * 3 CAL UP1 4 * 5 * 6 CAL UP2 7 *... UP1: 30 * 33 RET UP2: 40 * 41 CAL UP1 42 * 43 RET Stack, Stackpointer, UP Stack (Stapel, FIFO) wird benötigt UP-Ruf:
Vorkurs Informatik WiSe 17/18
Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 10.10.2017 Technische Universität Braunschweig, IPS Überblick Einleitung Türme von Hanoi Rekursion Beispiele 10.10.2017 Dr. Werner Struckmann
Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren
Hanspeter Mössenböck Sprechen Sie Java? Eine Einführung in das systematische Programmieren 3., überarbeitete und erweiterte Auflage Tm\ dpunkt.verlag 1 Grundlagen 1 1.1 Daten und Befehle 2 1.2 Algorithmen
Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A
2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,
Kapitel 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
Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge
8 Elementare Datenstrukturen
Algorithmen und Datenstrukturen 186 8 Elementare Datenstrukturen In diesem und dem folgenden Kapitel werden grundlegende Techniken der Darstellung und Manipulation dynamischer Mengen auf Computern vorgestellt.
Geräteentwurf mit Mikroprozessoren 1
Geräteentwurf mit Mikroprozessoren 1 Vorlesung am Institut für Elektronik der TU Graz Dipl.-Ing. Dr. Gerhard Stöckler SS 2003 Vorausgesetzte Kenntnisse: Grundlagen der Digitaltechnik Binäre Informationsdarstellung
RO-Tutorien 15 und 16
Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 2 am 04.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft
Vorlesung Datenstrukturen
Vorlesung Datenstrukturen Einleitung und Grundlagen Maike Buchin 18.4.2017 Verantwortliche Dozentin Organisation der Übungen Übungsleiter Korrekteure Maike Buchin [email protected] Raum NA 1/70 Sprechzeiten:
Speichermanagement Software Entwicklung 1
Speichermanagement Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Speicher ist eine wichtige Ressource für Softwaresysteme. Viele nicht-funktionale Eigenschaften hängen vom angemessenen
= 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
Vorkurs Informatik WiSe 17/18
Java Einführung Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 04.10.2017 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello World 04.10.2017 Dr. Werner Struckmann
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.
Grundlagen: 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
Vorlesung Programmieren
Vorlesung Programmieren Einführung 20.10.2014 Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), FAKULTÄT
Schleifen in Javascript
Schleifen in Javascript Jobst-Hartmut Lüddecke 3. April 2013 Zusammenfassung In dieser Lektion geht es um Schleifen (engl. loop). Diese Schleifen sind in jeder Programmiersprache das beste Werkzeug für
Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern
Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern [email protected] 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische
Einführung in die Informatik Algorithms
Einführung in die Informatik Algorithms Vom Problem zum Algorithmus und zum Programm Wolfram Burgard Cyrill Stachniss 1.1 Motivation und Einleitung In der Informatik sucht man im Normalfall nach Verfahren
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 12. Juli 2016 Agenda heute Grundlagen: Unterprogramme I Call-by-Value (CBV) vs. Call-by-Reference
Einführung in die Informatik I
Einführung in die Informatik I LOOP Programme, rekursive Funktionen und der Turm von Hanoi Prof. Dr. Nikolaus Wulff Berechenbarkeit Mitte des 20. Jahrhunderts beantworteten Pioniere, wie Alan M. Turing
Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15
Vorwort... 15 1 Einstieg in die Welt von C 17 1.1 Die Sprache C... 17 1.2 Die C-Standardbibliothek... 18 1.3 Die nötigen Werkzeuge für C... 21 1.4 Übersetzen mit der Entwicklungsumgebung... 23 1.5 Übersetzen
Programmierung und Angewandte Mathematik
Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ablauf Was sind Funktionen/Methoden
Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung
Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung Version 21.12.2016 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen
Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard
Systeme I: Betriebssysteme Kapitel 4 Prozesse Wolfram Burgard Version 18.11.2015 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen
Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme?
Liebe Leserin, lieber Leser 10 Kapitel i: Schnelleinstieg 13 Kapitel 2: Was sind Programme? 17 Was ist ein Programm? 18 Sprechen Sie Computer? 18 Von der Idee zum Programm 19 Von Windows, Fenstern und
Algorithmen & Programmierung. Rekursive Funktionen (1)
Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden
Vorkurs Informatik WiSe 16/17
Java Einführung Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 04.10.2016 Technische Universität Braunschweig, IPS Überblick Organisatorisches Hello! 04.10.2016 Dr. Werner Struckmann / Stephan Mielke,
Speicherverwaltung (Swapping und Paging)
Speicherverwaltung (Swapping und Paging) Rückblick: Segmentierung Feste Einteilung des Speichers in einzelne Segmente 750k 0 Rückblick: Segmentierung Feste Einteilung des Speichers in einzelne Segmente
11. Elementare Datenstrukturen
11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische
Vorlesung Programmieren
Vorlesung Programmieren 6. Arrays 23.11.2016 Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION
6. 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
Crashkurs C++ - Teil 1
Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik
Stand der Vorlesung. Vergleich verkettete Liste und sequentielle Liste
Stand der Vorlesung Kapitel 5 Elementare Datenstrukturen Felder: Folge gleichartiger Elemente Repräsentiert als statische Liste, sequentiell verwaltete Elemente Feste Länge, statische Struktur Direkter
1 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;
Inhaltsverzeichnis. Vorwort.11
Inhaltsverzeichnis Vorwort.11 Kapitel 1 Einführung in die C-Programmierung 17 1.1 Ein erstes C-Programm 17 1.1.1 Analyse des Zinseszins-Programms 17 1.2 Compilieren und Ausführen eines Programms 24 1.3
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,
Grundlagen der Stackorganisation und -adressierung
GRUNDLAGEN DER STACKORGANISATION UND -ADRESSIERUNG 1 Grundlagen der Stackorganisation und -adressierung Das Stack- (Kellerspeicher-) Prinzip ist in der Informatik von grundsätzlicher Bedeutung, namentlich
Registermaschine (RAM), Church-Turing-These
Registermaschine (RAM), Church-Turing-These Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 21. Oktober 2010 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit
To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1
To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1 Rekursion: Beispiele Bier trinken 8-Damen-Problem ipod Shuffle für alle Mitarbeiter Karten
