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

Transcrição

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 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
Ü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
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
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
Programmsteuerung IV
Resultat= f(x1,x2,S)
≥1
Fa
Fb
&
&
&
&
≥1
&
S
x1
x2
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
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
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
Computer Maxi I
Befehle
ld Value
Acc = Akkumulator = Register =
Schneller Zwischenspeicher in der CPU
Computer-Systeme – WS 12/13 - Teil 5/CPU
IR = Instruction Register
OPC = Operation Code, Opcode
Acc = Akkumulator
Bei dieser Zeichnung sind
viele Leitungen weggelassen worden,
z.B. die Steuerleitungen
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
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
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
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
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
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
von-Neumann-Architektur – anders gezeichnet
Rechenwerk
Steuerung
Leitwerk
(Steuerwerk)
CPU
Arbeitsspeicher
Daten
Instruktionen
RAM
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
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
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
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
in 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
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
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
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
Ein unbekanntes Programm III
Initialisierung
Abfrage einer
Bedingung
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
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
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
Computer-Systeme – WS 12/13 - Teil 5/CPU
Modell der Hardware
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
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
Computer-Systeme – WS 12/13 - Teil 5/CPU
N Z V C
Status-Register mit den
Condition Code Bits
45
Beispiel: Motorola 68000
32 bit
Datenregister
D0
D1
D2
PC
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
A3
Carry
A4
Overflow
A5
A6
User Stack
Kernel Stack
Computer-Systeme – WS 12/13 - Teil 5/CPU
Systembyte
A7
A7
Condition
Codes
Zero
Negativ
Extend
46
Beispiel: Intel x86 - Intel Architektur (Auszug)
16 bit
16 bit
AX
AH
16 bit
AL
EAX
BX
BH
BL
EBX
CL
ECX
CX
CH
DX
DH
DL
EDX
SI
ESI
DI
EDI
BP
EBP
SP
ESP
CS
SS
DS
ES
FS
Code-Segment
Stack-Segment
Datensegmente
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
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
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
Computer-Systeme – WS 12/13 - Teil 5/CPU
Kommentar
[Alle diese Darstellungen sind fiktiv und zeigen nur das Prinzip]
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
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
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
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
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
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
Nach dieser Anstrengung etwas Entspannung....
Computer-Systeme – WS 12/13 - Teil 5/CPU
63