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