Computer-Systeme. Teil 5: Central Processing Unit (CPU)

Computer-Systeme Teil 5: Central Processing Unit (CPU) Computer-Systeme – WS 12/13- Teil 5/CPU 05.11.2012 1 Literatur [5-1] Bauer, F.L.: Wer erfan...
Author: Emil Biermann
4 downloads 2 Views 405KB Size
Computer-Systeme Teil 5: Central Processing Unit (CPU)

Computer-Systeme – WS 12/13- Teil 5/CPU

05.11.2012 1

Literatur [5-1]

Bauer, F.L.: Wer erfand den von Neumann-Rechner? Informatik Spektrum, Heft 2, April, 21:84-89 (1998)

[5-2]

Engelmann, Lutz (Hrsg.): Abitur Informatik – Basiswissen Schule. Duden-Verlag, 2003, S.43-47, 214-224, 239-242

[5-3]

Hübscher, Heinrich et al.: IT-Handbuch, IT-Systemelektroniker/-in, Fachinformatiker/-in. Westermann, 2. Auflage, 2001, S.104-109

Der in dieser Einheit vorgestellte Simulator kann von http://www.viktorianer.de/info/info-mops.html herunter geladen werden. Es fehlt dann noch der Python-Interpreter, der von http://www.activestate.com/activepython herunter geladen werden kann. Computer-Systeme – WS 12/13 - Teil 5/CPU

2

1

Übersicht • • • • • • • •

Die Idee der Programme Princeton-Architektur (von Neumann-Rechner) Aufbau der CPU MOPS Allgemeines Registermodell Assembler Compiler Linker

Computer-Systeme – WS 12/13 - Teil 5/CPU

3

Die einzelnen Ebenen

Computer-Systeme – WS 12/13 - Teil 5/CPU

4

2

Programmsteuerung I • Damit Programme ausgeführt werden können, muss es möglich sein, unterschiedliche Funktionen in Abhängigkeit von Daten, einem Programm, auszuführen. • Was ausgeführt werden soll, wird durch Steuerleitungen bestimmt. • Die Steuerleitungen werden aus RAM-Speicherzellen bestimmt. Damit bestimmt der Inhalt des RAM, was gemacht werden soll. • Dieser Inhalt wird Befehl genannt.

Computer-Systeme – WS 12/13 - Teil 5/CPU

5

Programmsteuerung II Resultat= f(x1,x2,S) ≥1

&

&

"Gatter" (Tore)

S Fa

&

Fb

≥1

S = Steuerleitung 1 -> OR-Verknüpfung 0 -> AND-Verknüpfung

x1 x2 Es sollen zwei Variablen wahlweise mit AND (F a) oder mit OR (F b) verknüpft werden Computer-Systeme – WS 12/13 - Teil 5/CPU

6

3

Bemerkungen • Die beiden UND-Gatter, die mit "Gatter" bezeichnet sind, sind im wörtlichen Sinne Tore, die den Datenfluss - hier bestehend aus 1 bit - in Abhängigkeit von der Steuerleitung S stoppen oder durchlassen. • Dass eine der beiden Funktionen "umsonst" gearbeitet hat, stört nicht weiter, da grundsätzlich alles parallel arbeitet.

Computer-Systeme – WS 12/13 - Teil 5/CPU

7

Programmsteuerung III • Die zweite Realisierungsidee besteht darin, den Datenfluss der Operanden über "Gatter" zu den gewünschten Schaltnetzen zu realisieren, wobei die anderen Schaltnetze mit solchen Werten versehen werden, dass sie "neutrale" Werte liefern, d.h. bei OR ein False.

Computer-Systeme – WS 12/13 - Teil 5/CPU

8

4

Programmsteuerung IV Resultat= f(x1,x2,S) ≥1 Fa

Fb

&

&

&

≥1

&

x1 x2

& S

S = Steuerleitung 1 -> OR-Verknüpfung 0 -> AND-Verknüpfung

Es sollen zwei Variablen wahlweise mit AND (Fa) oder mit OR (Fb) verknüpft werden Computer-Systeme – WS 12/13 - Teil 5/CPU

9

Central Processing Unit (CPU) • Eine CPU ist eine Schaltung, die verschiedene Funktionen durch ein- und ausschaltbare Datenflüsse miteinander verbindet. • Die Datenleitungen sind ähnlich zu Gleisen bei einer Eisenbahn samt Weichen und Zusammenführungen.

• CPU = Central Processing Unit = Teil eines Computers, der Operationen/Befehle, die aus dem RAM kommen, ausführt. • Operation = Befehl = besondere Art der Abfrage und Änderung von Speicherinhalten in RAM und CPU (Register) • Bedeutung einer Operation = Semantik = Art der Änderung von Speicherinhalten in RAM und CPU

Computer-Systeme – WS 12/13 - Teil 5/CPU

10

5

Aufbau von Befehlen I • Jeder Befehl hat eine Codierung der Operation: Opcode • In Abhängigkeit von der Art der Operation hat ein Befehl keinen bis mehrere Operanden. • Da diese Operanden fast immer Adressen beinhalten, werden die Operanden auch „Adressen“ genannt (Umgangssprache), was eigentlich falsch ist. • Der Operand kann eine Adresse, aber auch einen festen Wert beinhalten.

• Opcode = Operation Code = Bitkombination, die angibt, was geschehen soll Z.B. Addition oder Division

Computer-Systeme – WS 12/13 - Teil 5/CPU

11

Aufbau von Befehlen II

Operation

Prinzipieller Aufbau eines Befehls: Operation: Was soll geschehen? Operanden: Mit was soll dies erfolgen?

Operanden

0-Address-Befehl

Operation Operation

OP 1

Operation

OP 1

OP 2

Operation

OP 1

OP 2

1-Address-Befehl 2-Address-Befehl OP 3

3-Address-Befehl

In der Praxis kommen nur 0- bis 3-Adress-Befehle vor, bei Mikroprozessoren eher 0- bis 2-Adress-Befehle. Computer-Systeme – WS 12/13 - Teil 5/CPU

12

6

Der Computer Maxi

Im folgenden wird schrittweise ein kleiner Computer aufgebaut. Da dieser Computer so klein ist, wird er Maxi genannt.

Computer-Systeme – WS 12/13 - Teil 5/CPU

13

Vorbereitung - Datenflüsse

A

&

A ≥

B

& S

C

C B

S

In Abhängigkeit von der Steuerleitung S wird entweder A oder B auf den Ausgang C geleitet – also eine echte Weiche. In der Praxis wird (fast) immer mit mehreren Leitungen parallel gearbeitet, teilweise bis zu 32 Leitungen Computer-Systeme – WS 12/13 - Teil 5/CPU

14

7

Computer Maxi I

Befehle ld Value

Acc = Akkumulator = Register = Schneller Zwischenspeicher in der CPU

IR = Instruction Register OPC = Operation Code, Opcode Acc = Akkumulator Bei dieser Zeichnung sind viele Leitungen weggelassen worden, z.B. die Steuerleitungen

Computer-Systeme – WS 12/13 - Teil 5/CPU

15

Computer Maxi II

Befehle ld Value ld Adr st Adr

Laden und Speichern des Akkumulators gehen nun. Computer-Systeme – WS 12/13 - Teil 5/CPU

16

8

Computer Maxi III Befehle ld Value ld Adr st Adr add Adr sub Adr mul Adr div Adr mod Adr

Über den Eingang Mode wird die Art der Operation bestimmt. Nun kann Maxi sogar rechnen. Computer-Systeme – WS 12/13 - Teil 5/CPU

17

Computer Maxi IV Befehle … add sub mul div mod cmp cmp

Value Value Value Value Value Value Adr

Der Compare-Befehl setzt einen kleinen Speicher CC auf das Ergebnis des Vergleichs (CC = Condition Code). Computer-Systeme – WS 12/13 - Teil 5/CPU

18

9

Computer Maxi V Befehle … jmp jgt jlt jeq

Value Value Value Value

Nun kommt der Aspekt des Ortes der Befehle hinzu… Computer-Systeme – WS 12/13 - Teil 5/CPU

19

Programm Counter PC • PC = Program Counter enthält die Adresse der aktuellen Instruktion • Um auf die nächste Instruktion zu zeigen, muss dieses Register um 2 Byte (bei Befehlen mit der Länge 2 Byte) inkrementiert werden (Operation INC). • Dies darf nicht den Inhalt des Accumulators Acc zerstören. • Manchmal heißt der PC auch IP: IP = Instruction Pointer (ein besserer Name, der sich nicht durchgesetzt hat)

• SR = Status Register enthält Resultate der letzten Operation – hier stehen die CC-Werte drin Computer-Systeme – WS 12/13 - Teil 5/CPU

20

10

Phasen der Arbeit •

Ausführungszyklus eines Interpreters (fetch decode execute cycle): 1. 2. 3. 4. 5. 6. 7.



Holen der aktuellen Instruktion Decodieren der Instruktion Holen aller Operanden Ausführen der Instruktion Speichern der Ergebnisse Bestimmen der Adresse der nächsten Instruktion Weiter mit 1. Schritt

Interpreter = Programm oder Hardware, was die Semantik von Befehlen realisiert. Semantik sind hier alle definierten Effekte (Wirkungen) von Befehlen. Effekte könnten sein: Variable auf -3 setzen, zwei Zahlen addieren und das Ergebnis schreiben, etc.

Computer-Systeme – WS 12/13 - Teil 5/CPU

21

Sprung-Instruktionen • Ein Sprung wird durch Setzen des PC-Registers auf einen Wert in der Instruktion realisiert. Dies ist ein unbedingter Sprung, da er in jedem Fall durchgeführt wird. • Eine Abfrage hat bei dieser CPU immer zwei Teile: – Vergleichsoperation cmp mit Setzen der CC-Bits – Abfrage der CC-Bits mit einer bedingte Sprunginstruktion: jlt = jump (if) less than jgt = jump (if) less than jeq = jump (if) equal

Computer-Systeme – WS 12/13 - Teil 5/CPU

22

11

Computer Maxi VI – Input/Output Befehle … out Value out Adr in Adr

Das waren die Instruktionen… Computer-Systeme – WS 12/13 - Teil 5/CPU

23

Mikroprogramme Befehl: ld adr (Load von Adresse) IR:Adresse Æ RAM:Adresse Modus:= Read RAM Æ ACC Befehl: add adr (add mit Adresse) IR:Adresse Æ RAM:Adresse Modus:= Read RAM Æ Addierer ACC Æ Addierer Addierer Æ ACC Befehl: st adr (store an Adresse) IR:Adresse Æ RAM:Adresse Modus:= Write ACC Æ RAM Computer-Systeme – WS 12/13 - Teil 5/CPU

24

12

Das ganze sieht etwas unübersichtlich aus I

Computer-Systeme – WS 12/13 - Teil 5/CPU

25

Das ganze sieht etwas unübersichtlich aus II

Computer-Systeme – WS 12/13 - Teil 5/CPU

26

13

von-Neumann-Architektur – anders gezeichnet

Rechenwerk Steuerung

Leitwerk (Steuerwerk)

Arbeitsspeicher Daten Instruktionen RAM

CPU

Ein-/Ausgabewerk I/O

Bus

Computer-Systeme – WS 12/13 - Teil 5/CPU

27

Grundsätzliche Rechnertypen Harvard-Architektur Arbeitsspeicher Daten

Adressen Daten

Rechenwerk

Daten

Ein-/Ausgabewerk

Daten

Ein-/Ausgabewerk

Steuerung

Arbeitsspeicher Instruktionen

Adressen Befehle

Leitwerk (Steuerwerk)

Princeton-Architektur (von Neumann) Daten

Arbeitsspeicher Daten Instruktionen

Rechenwerk Steuerung

Adressen Befehle

Computer-Systeme – WS 12/13 - Teil 5/CPU

Leitwerk (Steuerwerk) 28

14

Begriffe • CPU = Central Processing Unit = Rechenwerk mit Registern und Leitwerk • Bus = Universeller meist bidirektionaler Kommunikationsweg für Befehle und Daten • Arbeitsspeicher (RAM) enthält Code und Daten. • Ein-/Ausgabewerk besteht aus verschiedenen Schnittstellen zu (externen) peripheren Geräten. • Register = Schneller Speicher innerhalb der CPU als Speicher für Operanden für Operationen

Computer-Systeme – WS 12/13 - Teil 5/CPU

29

Vorteile und Nachteile der Princeton-Architektur • Vorteile – Universell und flexibel – Minimalität der Hardware, optimale Nutzung

• Nachteile – Bus als zentraler Kommunikationsweg ist Nadelöhr für alle Daten

• Viele Rechner, insbesondere PCs haben nicht die reine vonNeumann-Architektur, sondern eine Mischung

Computer-Systeme – WS 12/13 - Teil 5/CPU

30

15

Simulation mit dem MOPS

Computer-Systeme – WS 12/13 - Teil 5/CPU

31

Bemerkungen • • • •

Der RAM ist sehr klein: 64 Worte. Jede Instruktion umfasst 1 Wort (2 Byte). Die ersten 64 Worte sind für das Programm reserviert. Die Speicherzellen 64 bis 71 (symbolisch a bis h) sind die Speicherzellen für Variablen.

Computer-Systeme – WS 12/13 - Teil 5/CPU

32

16

Die Befehle des MOPS I ld adr

Lade den Wert der Speicherzelle von Adress adr in den Akkumulator

ld val

Lade den Wert val in den Akkumulator

st adr

Speichere den Wert des Akkumulators in den RAM an Adresse adr

Lese einen Wert und speichere ihn an Adresse adr out adr Gib den Wert an Adresse adr aus out val Gib den Wert val aus in adr

add adr Addiere zum Akkumulator den Wert an Adresse adr add val Addiere zum Akkumulator den Wert val sub adr Subtrahiere vom Akkumulator den Wert an Adresse adr sub val Subtrahiere vom Akkumulator den Wert val mul adr Multipliziere den Akkumulator mit dem Wert an Adresse adr mul val Multipliziere den Akkumulator mit dem Wert val Nach diesem Schema add arbeiten die Instruktionen sub, mul, div und mod Computer-Systeme – WS 12/13 - Teil 5/CPU

33

Die Befehle des MOPS II div adr

Dividiere den Akkumulator durch den Wert an Adresse adr

div val

Dividiere den Akkumulator durch den Wert val

mod adr

Rest der Division Akkumulator durch den Wert an Adresse adr

mod val

Rest der Division Akkumulator durch den Wert val

cmp adr

Vergleiche den Akkumulator mit dem Wert an Adresse adr

cmp val

Vergleiche den Akkumulator mit dem Wert val

jmp adr

Springe an Adresse adr

jlt adr

Springe an Adresse adr falls vorher cmp mit less than

jgt adr

Springe an Adresse adr falls vorher cmp mit greater than

jeq adr

Springe an Adresse adr falls vorher cmp mit lequal

Computer-Systeme – WS 12/13 - Teil 5/CPU

34

17

Das erste Programm I

Computer-Systeme – WS 12/13 - Teil 5/CPU

35

Das erste Programm II

Das schauen wir uns mal an….

Computer-Systeme – WS 12/13 - Teil 5/CPU

36

18

Ein unbekanntes Programm I

Definition eines Labels (Markierung)

Benutzung des Labels „fertig“

Benutzung eines Labels

Definition des Labels „fertig“

Computer-Systeme – WS 12/13 - Teil 5/CPU

37

Ein unbekanntes Programm II

Das schauen wir uns mal an….

Computer-Systeme – WS 12/13 - Teil 5/CPU

38

19

Ein unbekanntes Programm III

Abfrage einer Bedingung

Initialisierung

Ausgabe des Ergebnisses

Computer-Systeme – WS 12/13 - Teil 5/CPU

39

Ein unbekanntes Programm IV

$64:= read(); $65:= read(); $66:= 0; WHILE $64>=0 DO $66:= $66+$65; $64:= $64-1; OD output $66;

A:= read(); B:= read(); C:= 0; WHILE $64>=0 DO C:= C+B; A:= A-1; OD output C

Das Ganze noch einmal in Freistil-Notation, damit es etwas klarer wird. Also, was macht das Programm? Computer-Systeme – WS 12/13 - Teil 5/CPU

40

20

Arten von Operationen I • Transfer-Operationen – Kopieren in Register – Speichern in RAM – Kopieren innerhalb des RAM oder zwischen Registern

• Arithmetische Operationen – 1-, 2- oder 3-Address-Operationen – Addition, Subtraktion, Multiplikation, Division – (Vorzeichenbehaftete) Integer, Float

• Logische Operationen – UND-, ODER- und NEGATION-Operation – (Vorzeichenbehaftetes) Schieben von Bits (SHIFT)

Computer-Systeme – WS 12/13 - Teil 5/CPU

41

Arten von Operationen II • Kontrollflussoperationen – Unbedingte Sprünge – Bedingte Sprünge – Sprung zu Subroutinen und zurück

• Sonderoperationen – RESET-Operation – HALT-Operationen

Computer-Systeme – WS 12/13 - Teil 5/CPU

42

21

Modell der CPU und Arbeitsspeicher I 32 bit

PC

32 bit

DatenRegister

SR PC = Program Counter SR = Status Register

32 bit

AddressRegister

32-bit-CPU

Modell der Hardware

Computer-Systeme – WS 12/13 - Teil 5/CPU

43

Register der CPU • Typische Register sind: PC, SR, Daten- und Adressregister • PC = Program Counter enthält die Adresse der nächsten Instruktion • SR = Status Register enthält Resultate der letzten Instruktion sowie globale Zustände, wie z.B. Privilegien • Datenregister: Universell verwendbare Register für Zwischenergebnisse • Adressregister: Register für Adressen des Arbeitsspeichers, teilweise mit reservierter Bedeutung • Adresse = Nummer (Name) der Speicherzelle im RAM

Computer-Systeme – WS 12/13 - Teil 5/CPU

44

22

Status-Register (PS)

Das Status-Register (PS) hat intern 4 Bits (Condition Codes): Name

Bedeutung

C

Carry, Überlauf

Z

Zero, 0

N

Negativ

V

Arithmetischer Überlauf

N Z V C Status-Register mit den Condition Code Bits

Computer-Systeme – WS 12/13 - Teil 5/CPU

45

Beispiel: Motorola 68000 32 bit

Datenregister

PC

D0 D1 D2

Systembyte Userbyte

SR

D3 D4

T

S

I

I

I

D5 D6

Interrupt-Mask

D7

Adressregister

Supervisor State Trace Mode

A0 A1

X N Z V C Userbyte

A2

Carry

A3

Overflow

A4 A5 A6 User Stack Kernel Stack Computer-Systeme – WS 12/13 - Teil 5/CPU

A7 A7

Systembyte

Condition Codes

Zero Negativ Extend 46

23

Beispiel: Intel x86 - Intel Architektur (Auszug) 16 bit

16 bit AX AH

16 bit AL

EAX

CS

BX BH

BL

EBX

CL

ECX

ES

DX DH

DL

ESI

DI

EDI

BP

EBP

SP

ESP

Datensegmente

FS

EDX

SI

Stack-Segment

DS

CX CH

Code-Segment

SS

GS IP (PC) FLAGS

EFLAGS

Hinzu kommen noch Gleitkomma-Register (5), MMX-Register (8) und XMM-Register (8) Computer-Systeme – WS 12/13 - Teil 5/CPU

47

Modell der CPU und Arbeitsspeicher II RAM-Adressen Adresse + 1

Adresse + 0

Byte

Byte

0 2

Adresse eines Wortes

4 6 8

...... max

Byte als kleinste und homogen über den ganzen Speicher gehende Adresmax-1 sierungseinheit

• Byte = Kleinste adressierbare Speicherzelle • Wort = 2 nebeneinander liegende Bytes (2 Bytes) • Long = 2 nebeneinander liegende Worte (4 Bytes) Modell der Hardware Computer-Systeme – WS 12/13 - Teil 5/CPU

48

24

Die einzelnen Ebenen

Computer-Systeme – WS 12/13 - Teil 5/CPU

49

Assembler I • Assembler = Übersetzer für Programme in einer symbolischen Maschinensprache • Die Sprache Assembler ist für jeden CPU-Typ anders und spiegelt die Eigenarten der CPU-Architektur wieder. • Zur Assembler-Sprache gehören – – – –

Befehle (Instruktionen) der CPU Makros als Zusammenfassungen mehrerer Befehle Anweisungen zur Reservierung von Speicherplatz Anweisungen zur Belegung von Speicherplatz

• Der Assembler übersetzt das Assembler-Programm in ein maschinen-codiertes Format, dem Objektformat. Diese Dateien heißen daher Objektdateien.

Computer-Systeme – WS 12/13 - Teil 5/CPU

50

25

Assembler II – Fiktives Beispiel

Objekt-Datei

Assembler Label: LOAD

R3,@56EE

Register R3 = Inhalt von 56EE

LOAD ADD

R2,#1000 R2,R3

Register R2 = 0x1000 Register R2 = R2 + R3

SUB R2,R4 STORE R3,@56EE

Register R2 = R2 - R4 Inhalt von 56EE = Register R3

Übersetzung

34A3 56EE 67A2 1000 7F23 1200 0124 2300 66A3 56EE ......

...... Spalte zur Definition von Sprungmarken

Befehle mit den Parametern

Kommentar [Alle diese Darstellungen sind fiktiv und zeigen nur das Prinzip]

Computer-Systeme – WS 12/13 - Teil 5/CPU

51

Assembler III • Die Assemblersprachen sind in der Regel spalten-orientiert, d.h. die Zeilen haben ein festes Format, das einzuhalten ist • Ein wichtiges Charakteristikum eines Assemblers ist, dass die Assembler-Befehle fast immer 1:1 zu Maschinenbefehlen umgesetzt werden (Ausnahme: Verwendung von Makros). • Sprungmarken = Label = Namen für Speicherstellen (symbolische Adressen, Namen) von bestimmten Instruktionen, z. B. Beginn einer Subroutine • Das Programmieren in Assembler ist sehr mühselig, da: – es viel Zeit kostet, – viele Fehler gemacht werden können.

• Aber: In Assembler sind die effizientesten Programme schreibbar Computer-Systeme – WS 12/13 - Teil 5/CPU

52

26

Die einzelnen Ebenen

Computer-Systeme – WS 12/13 - Teil 5/CPU

53

Compiler • Höhere Programmiersprachen, wie z. B. C oder Java, werden durch Compiler in Assemblersprache übersetzt. • Compiler = Übersetzer für Programme in einer höheren Programmiersprache, die sich dadurch auszeichnet, dass ein Statement ("Befehl") dieser Sprache in mehrere Befehle in der Assemblersprache übersetzt werden muss.

i= j + 1;

LOAD R3,@56EE ADD R3,#0001 STORE R3,@56FF

R3 = Inhalt von j R3 = R3 + 1 i = R3

Hinweis: Es gibt Compiler, die direkt in die Objektsprache übersetzen Computer-Systeme – WS 12/13 - Teil 5/CPU

54

27

Phasen der Übersetzung im Überblick Lexikalische Analyse (Scanner)

Compiler

Syntaktische Analyse (Parser)

Compiler

Optimierung

Compiler

Codegenerierung Module als Object-Files

Compiler Assembler

Linken

Linker

Laden

Betriebssystem-Lader

ObjectFile

ProzessImage

Ausführung Computer-Systeme – WS 12/13 - Teil 5/CPU

55

Erläuterungen • Das Übersetzen erfolgt in mehreren Durchläufen (Pass), in denen das gesamte Programm vollständig gelesen und interpretiert wird. • Nach jedem Durchlauf wird das Programm in überarbeiteter Form neu in einer speziellen Datei angelegt; diese wird bei dem nächsten Durchlauf benutzt, so dass beginnend vom ursprünglichen Programm über mehrere Dateien am Ende das Maschinenprogramm entsteht. • Die Steuerung der Durchläufe übernimmt ein spezielles Hauptprogramm. • Bei Compilern sind 4 bis 5 Durchläufe üblich, es können auch erheblich mehr sein, z. B. PL/1 hatte bis zu 60 Durchläufe.

Computer-Systeme – WS 12/13 - Teil 5/CPU

56

28

Durchläufe I 1. Durchlauf: Makroexpansion Es werden die Makrodefinitionen (C hat die Möglichkeit von Makros, in Programmiersprachen ohne Makros wird dieser Schritt ausgelassen) vermerkt und alle Makro-Aufrufe mit den Makrokörpern samt Parametern ersetzt. 2. Durchlauf: Syntaktische Prüfung Entspricht der entstandene Text den Regeln der Sprache? Z.B. Hat jede öffnende Klammer (rund oder geschweift) eine korrespondierende schließende? Wird jedes Statement durch ein Semikolon abgeschlossen? 3. Durchlauf: Semantische Prüfung Sind alle Variablen und Funktionen deklariert? Werden sie übereinstimmend damit benutzt?

Computer-Systeme – WS 12/13 - Teil 5/CPU

57

Durchläufe II 4. Durchlauf: Optimierung (optional) Können Deklarationen weggelassen werden, da die Variablen nicht benutzt werden? Lassen sich Schleifen verkürzen? 5. Durchlauf: Erzeugung von Assembler-Code Für jedes Statement wird der entsprechende Assemblercode generiert, so dass das generierte Programm das tut, was es laut Sprachdefinition tun sollte. 6. Durchlauf: Assemblieren Der Compiler ist jetzt eigentlich fertig; es wird ein Assembler gestartet, der das generierte AssemblerProgramm in eine Objektdatei übersetzt.

Computer-Systeme – WS 12/13 - Teil 5/CPU

58

29

Die einzelnen Ebenen

Computer-Systeme – WS 12/13 - Teil 5/CPU

59

Durchläufe III • Die generierte Objektdatei ist aus folgenden Gründen nicht ausführbar: – Es fehlen aufgerufene und nicht programmierte Routinen, z. B. System.out.println() oder printf() etc. – Globale Variablen haben noch keine feste Position (Adresse), sie können an verschiedenen Stellen reserviert werden.

• Der Binder (Linker, Linkage Editor) setzt das endgültige Programm unter Verwendung von Bibliotheken zusammen und positioniert die globalen Variablen. Erst dessen Ergebnis kann ausgeführt werden.

Computer-Systeme – WS 12/13 - Teil 5/CPU

60

30

Durchläufe IV 7. Durchlauf: Binden Der Binder durchsucht Objektbibliotheken, um ein unvollständiges Programm mit den nicht selbst programmierten, aber aufgerufenen Subroutinen zu ergänzen. Am Ende ist eine maschinen-ausführbare Datei entstanden.

Jetzt erst kann die Datei mit Maschinencode vom Betriebssystem in den RAM geladen und ausgeführt werden. Java wird meistens etwas anders realisiert: es wird nicht bis zum Maschinencode übersetzt, sondern in eine Zwischensprache: Java-Byte-Code. Computer-Systeme – WS 12/13 - Teil 5/CPU

61

Begriffe • Bibliothek = Archiv = Library = Datei mit mehreren benannten Informationsblöcken einschließlich eines Verzeichnisses; jeder Block kann eine eigenständige Datei aufnehmen, z. B. zip-Archive • Objektbibliothek = Bibliothek für Objektdateien • Binärprogramm = Aus vielen Objektdateien bzw. Bibliotheken zusammengesetztes ausführbares Programm

Computer-Systeme – WS 12/13 - Teil 5/CPU

62

31

Nach dieser Anstrengung etwas Entspannung....

Computer-Systeme – WS 12/13 - Teil 5/CPU

63

32