Vorlesung Programmieren

Ähnliche Dokumente
Vorlesung Programmieren

Grundbegriffe der Informatik

Grundbegriffe der Informatik

Vorlesung Programmieren

Speicher und Adressraum

Kapitel 4. Kontrollstrukturen

6 Speicherorganisation

Betriebssysteme Teil 3: Laufzeitsystem für Programme

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

B1 Stapelspeicher (stack)

Vorlesung Programmieren

DieÜbersetzung funktionaler Programmiersprachen

Programmieren 1 C Überblick

J.5 Die Java Virtual Machine

Java Virtual Machine (JVM) Bytecode

Praktikum Compilerbau Sitzung 9 Java Bytecode

Assembler Unterprogramme

3. Basiskonzepte von Java

FAKULTÄT FÜR INFORMATIK

Vorlesung Programmieren

Maschinencode Dateiformat und Stackframes

Mächtigkeit von WHILE-Programmen

Assembler - Adressierungsarten

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Syntax von LOOP-Programmen

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

RO-Tutorien 3 / 6 / 12

Elementare Konzepte von

Vorlesung Programmieren

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Grundbegriffe der Informatik Tutorium 5

Repetitorium Informatik (Java)

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Aufrufe von Objektmethoden

Übungsblatt 10 (Block C 2) (16 Punkte)

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Compilerbau + Virtuelle Maschinen

Algorithmen und Datenstrukturen

Vorlesung Programmieren

Rekursive Funktionen (1)

ERA-Zentralübung Maschinenprogrammierung

Informatik II Prüfungsvorbereitungskurs

Dynamische Speicherverwaltung

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

Vorkurs Informatik WiSe 17/18

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Kapitel 1: Informationsverarbeitung durch Programme

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Algorithmen und Datenstrukturen

8 Elementare Datenstrukturen

Geräteentwurf mit Mikroprozessoren 1

RO-Tutorien 15 und 16

Vorlesung Datenstrukturen

Speichermanagement Software Entwicklung 1

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)

Vorkurs Informatik WiSe 17/18

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / Vorlesung 9, Dienstag 18.

Grundlagen: Algorithmen und Datenstrukturen

Vorlesung Programmieren

Schleifen in Javascript

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Einführung in die Informatik Algorithms

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme

Einführung in die Informatik I

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

Programmierung und Angewandte Mathematik

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme?

Algorithmen & Programmierung. Rekursive Funktionen (1)

Vorkurs Informatik WiSe 16/17

Speicherverwaltung (Swapping und Paging)

11. Elementare Datenstrukturen

Vorlesung Programmieren

6. Funktionen, Parameterübergabe

Crashkurs C++ - Teil 1

Stand der Vorlesung. Vergleich verkettete Liste und sequentielle Liste

1 Abstrakte Datentypen

Inhaltsverzeichnis. Vorwort.11

Programmieren I. Kapitel 5. Kontrollfluss

Grundlagen der Stackorganisation und -adressierung

Registermaschine (RAM), Church-Turing-These

To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1

Transkript:

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 www.kit.edu

Literaturhinweis - Weiterlesen Prof. Dr. Gerhard Goos Vorlesung über Informatik Band 2: Objektorientiertes Programmieren und Algorithmen, Springer Lehrbuch Kapitel 11 Vom Programm zur Maschine 2

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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