animiert

Transkrypt

animiert
Einführung in die Systemprogrammierung
Prof. Dr. Christoph Reichenbach
Fachbereich 12 / Institut für Informatik
15. April 2014
Administrativa
Einführung
Blinkanlage
Taschenrechner
Veranstaltungsübersicht
Kontakt: Prof. Dr. Christoph Reichenbach
([email protected])
Homepage:
http://sepl.cs.uni-frankfurt.de/2014-ss/
b-sysp/index.de.html
Veranstaltung besteht aus:
Vorlesung (Di)
Übungen (Mi)
Klausur am 24.07, 10:00–12:00, Hörsaal V
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Kompetenzen
Jede Vorlesung und Übung behandelt bestimmte
Kompetenzen
Klausur:
80% reines Kompetenzwissen
20% Synthese (aus zwei oder mehr Kompetenzen)
Bonuspunkte sammeln: 4 Testate
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Literatur
Rechnerorganisation und Rechnerentwurf“, von David
”
Patterson und John LeRoy Hennessy
The C Programming Language“, von Brian Kernighan
”
und Dennis Ritchie (auch auf Deutsch in der Bibliothek
erhältlich)
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Warum Systemprogrammierung?
Betriebssysteme bauen/erweitern
Programmiersprachen bauen/erweitern
Hohe Performanz
Eingebettete Systeme programmieren
Beurteilung des Nutzens von Hardware-Neuerungen
Beurteilung der technischen Machbarkeit von
Hochleistungsproblemen
Systemanalyse
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Ziele dieser Veranstaltung
Fähigkeit, direkt mit Prozessor zu sprechen
Grundlagen der Performanzmessung
Verständnis der Systemabläufe bei Ausführung eines
Programmes
Grundlagen der C-Programmierung
Grundlagen moderner Laufzeitsysteme
Grundlagenverständnis der Quellen von Ineffizienzen bei
der Programmausführung
Grundlagenverständnis der Quellen von
Sicherheitsproblemen in Systemprogrammen
Beispiel: Heartbleed
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Nicht-Ziele dieser Veranstaltung
Wir bauen kein Betriebssystem
Wir bauen keine Programmiersprache
Wir behandeln keine elektronischen Details integrierter
Schaltkreise
Wir modellieren Systeme nicht vollständig formal
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Systemprogrammierung im Kontext
Programm
Bibliotheken
Laufzeitsystem
Systemprogramm
Systembibliotheken
Betriebssystem
Rechnerarchitektur
Integrierte Schaltkreise
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Systemprogrammierung im Kontext
Programm
Bibliotheken
Laufzeitsystem
Java, Python, Haskell,
Scala, SML, PHP, C#,
awk, Scheme, ADA,
OCaml, . . .
Systemprogramm
Systembibliotheken
Betriebssystem
Rechnerarchitektur
Integrierte Schaltkreise
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Systemprogrammierung im Kontext
Programm
Bibliotheken
Laufzeitsystem
Systemprogramm
Systembibliotheken
Betriebssystem
Rechnerarchitektur
Integrierte Schaltkreise
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Systemprogrammierung im Kontext
Programm
Bibliotheken
Laufzeitsystem
Systemprogramm
Systembibliotheken
Betriebssystem
Rechnerarchitektur
Integrierte Schaltkreise
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Geplante Struktur
Grundlagen der Rechnerarchitektur
Assembler-Programmierung
Performanz
Grundlagen der Programmierung in C
Grundlagen der Laufzeitsysteme moderner
Programmiersprachen
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Grundkonzepte der Rechnerarchitektur
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Nexus 7-Mainboard
SDRAM-Speicher (Hynix)
Prozessor + GPU (Nvidia)
Spannungsregulator (Max)
WLan-Adapter (AzureWave)
NFC-Chip (NXP)
GPS-Empfänger (BroadCom)
Gyroskop, Beschleunigungssensor (Invensense)
Nexus 7TM (Google, Asus) Mainboard. Bild von ifixit.com.
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Funktionale Komponenten des Nexus 7-Mainboards
SDRAM-Speicher
Prozessor
Grafikprozessor (GPU)
GPU-Recheneinheit
GPU-Grafikausgabe
WLan-Adapter
WLan-Sender
WLan-Empfänger
NFC-Chip
NFC-Sender
NFC-Empfänger
GPS-Empfänger
Gyroskop
Beschleunigungssensor
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Grundkonzepte der Rechnerarchitektur
Speicher
SDRAM-Speicher
Eingabegeräte
WLan-Empfänger
NFC-Empfänger
GPS-Empfänger
Gyroskop
Beschleunigungssensor
Prozessorsystem
Zentralprozessor
Grafikprozessor
Ausgabegeräte
GPU-Grafikausgabe
WLan-Sender
NFC-Sender
Administrativa
Einführung
Blinkanlage
Taschenrechner
Grundkonzepte der Rechnerarchitektur
Speicher
Eingabegeräte
ProzessorSystem
Rest der Welt
Ausgabegeräte
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Programmierbare Blinkanlage
Steuerung für Lampe
Speicherzustand:
Speicher
0: aus
1: an
Prozessor
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Programmierbare Blinkanlage
Steuerung für Lampe
Speicherzustand:
Speicher
0: aus
1: an
Kodierung eines
Programmes:
an
aus
an
Prozessor
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Programmierbare Blinkanlage
Steuerung für Lampe
Speicherzustand:
Speicher
0: aus
1: an
Kodierung eines
Programmes:
an 1
aus 0
an 1
Prozessor
Speicher
Administrativa
Einführung
Blinkanlage
Programmierbare Blinkanlage
Speicher
Wert: 1 0 1 . . .
Adresse: 0 1 2 . . .
Taschenrechner
Speicher
Administrativa
Einführung
Blinkanlage
Programmierbare Blinkanlage
Speicher
Wert: 1 0 1 . . .
Adresse: 0 1 2 . . .
Prozessor
Programmzähler = 0
Taschenrechner
Speicher
Administrativa
Einführung
Blinkanlage
Programmierbare Blinkanlage
Speicher
Wert: 1 0 1 . . .
Adresse: 0 1 2 . . .
Prozessor
Programmzähler = 0
Taschenrechner
Speicher
Administrativa
Einführung
Blinkanlage
Programmierbare Blinkanlage
Speicher
Wert: 1 0 1 . . .
Adresse: 0 1 2 . . .
Prozessor
Programmzähler = 0
Taschenrechner
Speicher
Administrativa
Einführung
Blinkanlage
Programmierbare Blinkanlage
Speicher
Wert: 1 0 1 . . .
Adresse: 0 1 2 . . .
Prozessor
Programmzähler = 1
Taschenrechner
Speicher
Administrativa
Einführung
Blinkanlage
Programmierbare Blinkanlage
Speicher
Wert: 1 0 1 . . .
Adresse: 0 1 2 . . .
Prozessor
Programmzähler = 2
Taschenrechner
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Frei programmierbare Rechner
Programmbefehle im Programmspeicher
Programmzähler1 zeigt auf nächsten Befehl
Programmzähler schreitet automatisch vorwärts
1
Auch Instruktionszeiger“; gängige Abkürzungen: PC, IP
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Frei programmierbare Rechner
Programmbefehle im Programmspeicher
Programmzähler1 zeigt auf nächsten Befehl
Programmzähler schreitet automatisch vorwärts
Programmbefehle können aus mehreren Bits bestehen
1
Auch Instruktionszeiger“; gängige Abkürzungen: PC, IP
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Programmierbarer Taschenrechner
Taschenrechner speichert
Berechnungen als Programme
z.B.: (x + 2)x
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Programmierbarer Taschenrechner
Taschenrechner speichert
Berechnungen als Programme
z.B.: (x + 2)x
x einlesen
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Programmierbarer Taschenrechner
Taschenrechner speichert
Berechnungen als Programme
z.B.: (x + 2)x
x einlesen
Ausrechnen
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Programmierbarer Taschenrechner
Taschenrechner speichert
Berechnungen als Programme
z.B.: (x + 2)x
x einlesen
Ausrechnen
Ergebnis ausgeben
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Programmierbarer Taschenrechner
Taschenrechner speichert
Berechnungen als Programme
z.B.: (x + 2)x
x einlesen
Ausrechnen
Ergebnis ausgeben
Problem: Wir müssen
Rechenergebnisse zwischenspeichern
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Programmierbarer Taschenrechner
Taschenrechner speichert
Berechnungen als Programme
z.B.: (x + 2)x
x einlesen
Ausrechnen
Ergebnis ausgeben
Problem: Wir müssen
Rechenergebnisse zwischenspeichern
Register: Datenspeicher im Prozessor
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Prozessor des programmierbaren Taschenrechners
Prozessor
Programmzähler = 0
$0 = 0
$2 = 0
$1 = 0
$3 = 0
Register $0, $1, $2, $3 speichern Zwischenergebnisse
Maschinenbefehle lesen von und schreiben in Register
Die Maschinenbefehle drücken die einprogrammierte
Berechnung aus
Administrativa
Einführung
Blinkanlage
Befehle des Taschenrechners
Dateneingabe
Datenausgabe
Addieren
Multiplizieren
Konstante
Taschenrechner
Speicher
Administrativa
Einführung
Blinkanlage
Befehle des Taschenrechners
Dateneingabe
Datenausgabe
Addieren
Multiplizieren
Konstante
eingabe $z
⇒ $z
$x, $y, $z sind Variablen für Register.
Beispiel eines echten“ Befehls:
”
add $1, $1, $2
($1 := $1 + $2)
Taschenrechner
Speicher
Administrativa
Einführung
Blinkanlage
Befehle des Taschenrechners
Dateneingabe
Datenausgabe
Addieren
Multiplizieren
Konstante
eingabe $z
ausgabe $z
⇒ $z
$z ⇒
$x, $y, $z sind Variablen für Register.
Beispiel eines echten“ Befehls:
”
add $1, $1, $2
($1 := $1 + $2)
Taschenrechner
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Befehle des Taschenrechners
Dateneingabe
Datenausgabe
Addieren
Multiplizieren
Konstante
eingabe $z
ausgabe $z
add $z, $x, $y
⇒ $z
$z ⇒
$z := $x + $y
$x, $y, $z sind Variablen für Register.
Beispiel eines echten“ Befehls:
”
add $1, $1, $2
($1 := $1 + $2)
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Befehle des Taschenrechners
Dateneingabe
Datenausgabe
Addieren
Multiplizieren
Konstante
eingabe
ausgabe
add $z,
mul $z,
$z
$z
$x, $y
$x, $y
⇒ $z
$z ⇒
$z := $x + $y
$z := $x × $y
$x, $y, $z sind Variablen für Register.
Beispiel eines echten“ Befehls:
”
add $1, $1, $2
($1 := $1 + $2)
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Befehle des Taschenrechners
Dateneingabe
Datenausgabe
Addieren
Multiplizieren
Konstante
eingabe $z
ausgabe $z
add $z, $x, $y
mul $z, $x, $y
li $z, v
⇒ $z
$z ⇒
$z := $x + $y
$z := $x × $y
$z := v
$x, $y, $z sind Variablen für Register.
Beispiel eines echten“ Befehls:
”
add $1, $1, $2
($1 := $1 + $2)
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Befehle des Taschenrechners
Dateneingabe
Datenausgabe
Addieren
Multiplizieren
Konstante
eingabe $z
ausgabe $z
add $z, $x, $y
mul $z, $x, $y
li $z, v
⇒ $z
$z ⇒
$z := $x + $y
$z := $x × $y
$z := v
$x, $y, $z sind Variablen für Register.
Beispiel eines echten“ Befehls:
”
add $1, $1, $2
($1 := $1 + $2)
Diese Befehle müssen in Bitmuster kodiert werden, damit
der Prozessor sie lesen kann.
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Befehle des Taschenrechners: Bitmuster
Wir folgen den Bitmustern des MIPS-Befehlssatzes
Jeder MIPS-Befehl besteht aus 32 Bits
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Befehle des Taschenrechners: Bitmuster
Wir folgen den Bitmustern des MIPS-Befehlssatzes
Jeder MIPS-Befehl besteht aus 32 Bits
Beispiel: add $z, $x, $y
000000 000x1 x0 000y1 y0 000z1 z0 00000 100000
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Befehle des Taschenrechners: Bitmuster
Wir folgen den Bitmustern des MIPS-Befehlssatzes
Jeder MIPS-Befehl besteht aus 32 Bits
Beispiel: add $z, $x, $y
000000 000x1 x0 000y1 y0 000z1 z0 00000 100000
Operationscode
(Opcode)
$x
$y
$z
Funktionscode
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Vollständige Kodierung des add-Befehls
add $z, $x, $y :
000000 000x1 x0 000y1 y0 000z1 z0 00000
Binärkodierung von Register $x (analog für $y, $z):
Register
$0
$1
$2
$3
x1
0
0
1
1
x0
0
1
0
1
100000
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Vollständige Kodierung des add-Befehls
add $z, $x, $y :
000000 000x1 x0 000y1 y0 000z1 z0 00000
100000
add $1, $2, $3 :
000000 00010
00011
00001
00000
Binärkodierung von Register $x (analog für $y, $z):
Register
$0
$1
$2
$3
x1
0
0
1
1
x0
0
1
0
1
100000
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Vollständige Kodierung des li-Befehls
li $z, v :
001101 000z1 z0 00000
v15 , v14 , . . . , v1 , v0
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Vollständige Kodierung des li-Befehls
li $z, v :
001101 000z1 z0 00000
Opcode
$z
v15 , v14 , . . . , v1 , v0
Direktoperand v
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Vollständige Kodierung des li-Befehls
li $z, v :
001101 000z1 z0 00000
Opcode
$z
v15 , v14 , . . . , v1 , v0
Direktoperand v
li $2, 1000 :
001101 00010
00000
01. . .?
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Vollständige Kodierung des li-Befehls
li $z, v :
001101 000z1 z0 00000
Opcode
$z
v15 , v14 , . . . , v1 , v0
Direktoperand v
li $2, 1000 :
001101 00010
00000
01. . .?
Kodierung von Zahlen im Binärsystem
100010 = 11111010002
Auffüllen mit 0
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Vollständige Kodierung des li-Befehls
li $z, v :
001101 000z1 z0 00000
Opcode
$z
v15 , v14 , . . . , v1 , v0
Direktoperand v
li $2, 1000 :
001101 00010
00000
0000001111101000
Kodierung von Zahlen im Binärsystem
100010 = 11111010002
Auffüllen mit 0
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Vollständige Kodierung des li-Befehls
li $z, v :
001101 000z1 z0 00000
Opcode
$z
v15 , v14 , . . . , v1 , v0
Direktoperand v
li $2, 1000 :
001101 00010
00000
0000001111101000
Kodierung von Zahlen im Binärsystem
100010 = 11111010002
Auffüllen mit 0
Bei 16 Bits also maximal 216 − 1 = 65535
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Befehle des Taschenrechners: Zusammenfassung
Assemblersprache: Menschenlesbar
Maschinensprache: Maschinenlesbar
Assemblersprache
eingabe $z
ausgabe $z
add $z, $x, $y
mul $z, $x, $y
li $z, v
Maschinensprache-Bitmuster
111111 000z1 z0 00000 00000 00000 000000
111111 000z1 z0 00000 00000 00000 000001
000000 000x1 x0 000y1 y0 000z1 z0 00000 100000
011100 000x1 x0 000y1 y0 000z1 z0 00000 000000
001101 000z1 z0 00000
v15 v14 . . . v1 v0
Administrativa
Einführung
Blinkanlage
Taschenrechner
Ein Programm in der Taschenrechnersprache
Wir schreiben (x + 2)x in Assemblersprache:
Maschinensprache
eingabe $0
111111 00000 00000 00000 00000 000000
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Ein Programm in der Taschenrechnersprache
Wir schreiben (x + 2)x in Assemblersprache:
Maschinensprache
eingabe $0
111111 00000 00000 00000 00000 000000
li $1, 2
001101 00001 00000 0000000000000010
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Ein Programm in der Taschenrechnersprache
Wir schreiben (x + 2)x in Assemblersprache:
Maschinensprache
eingabe $0
111111 00000 00000 00000 00000 000000
li $1, 2
001101 00001 00000 0000000000000010
add $1, $1, $0 000000 00001 00000 00001 00000 100000
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Ein Programm in der Taschenrechnersprache
Wir schreiben (x + 2)x in Assemblersprache:
Maschinensprache
eingabe $0
111111 00000 00000 00000 00000 000000
li $1, 2
001101 00001 00000 0000000000000010
add $1, $1, $0 000000 00001 00000 00001 00000 100000
mul $1, $1, $0 011100 00001 00000 00001 00000 000000
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Ein Programm in der Taschenrechnersprache
Wir schreiben (x + 2)x in Assemblersprache:
Maschinensprache
eingabe $0
111111 00000 00000 00000 00000 000000
li $1, 2
001101 00001 00000 0000000000000010
add $1, $1, $0 000000 00001 00000 00001 00000 100000
mul $1, $1, $0 011100 00001 00000 00001 00000 000000
ausgabe $1
111111 00001 00000 00000 00000 000001
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Berechnung im Programmierbaren Taschenrechner
Addr
0:
4:
8:
12:
16:
Eingabe
5
Maschinencode
11111100000000000000000000000000 (eingabe $0)
00110100001000000000000000000010
00000000001000000000100000100000
01110000001000000000100000000000
11111100001000000000000000000001
Prozessor
Programmzähler = 0
$0 = 0
$2 = 0
$1 = 0
$3 = 012
Ausgabe
5
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Berechnung im Programmierbaren Taschenrechner
Addr
0:
4:
8:
12:
16:
Eingabe
5
Maschinencode
11111100000000000000000000000000 (eingabe $0)
00110100001000000000000000000010
00000000001000000000100000100000
01110000001000000000100000000000
11111100001000000000000000000001
Prozessor
Programmzähler = 0
$0 = 0
$2 = 0
$1 = 0
$3 = 012
Ausgabe
5
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Berechnung im Programmierbaren Taschenrechner
Addr
0:
4:
8:
12:
16:
Eingabe
5
Maschinencode
11111100000000000000000000000000 (eingabe $0)
00110100001000000000000000000010 (li $1, 2)
00000000001000000000100000100000
01110000001000000000100000000000
11111100001000000000000000000001
Prozessor
Programmzähler = 4
$0 = 5
$2 = 0
$1 = 0
$3 = 012
Ausgabe
5
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Berechnung im Programmierbaren Taschenrechner
Addr
0:
4:
8:
12:
16:
Eingabe
5
Maschinencode
11111100000000000000000000000000
00110100001000000000000000000010 (li $1, 2)
00000000001000000000100000100000 (add $1, $1, $0)
01110000001000000000100000000000
11111100001000000000000000000001
Prozessor
Programmzähler = 8
$0 = 5
$2 = 0
$1 = 2
$3 = 012
Ausgabe
5
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Berechnung im Programmierbaren Taschenrechner
Addr
0:
4:
8:
12:
16:
Eingabe
5
Maschinencode
11111100000000000000000000000000
00110100001000000000000000000010
00000000001000000000100000100000 (add $1, $1, $0)
01110000001000000000100000000000 (mul $1, $1, $0)
11111100001000000000000000000001
Prozessor
Programmzähler = 12
$0 = 5
$2 = 0
$1 = 7
$3 = 012
Ausgabe
5
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Berechnung im Programmierbaren Taschenrechner
Addr
0:
4:
8:
12:
16:
Eingabe
5
Maschinencode
11111100000000000000000000000000
00110100001000000000000000000010
00000000001000000000100000100000
01110000001000000000100000000000 (mul $1, $1, $0)
11111100001000000000000000000001 (ausgabe $1)
Prozessor
Programmzähler = 16
$0 = 5
$2 = 0
$1 = 35
$3 = 012
Ausgabe
5
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Berechnung im Programmierbaren Taschenrechner
Addr
0:
4:
8:
12:
16:
Eingabe
5
Maschinencode
11111100000000000000000000000000
00110100001000000000000000000010
00000000001000000000100000100000
01110000001000000000100000000000
11111100001000000000000000000001
Prozessor
Programmzähler = 20
$0 = 5
$2 = 0
$1 = 35
$3 = 012
Ausgabe
35
Administrativa
Einführung
Blinkanlage
Taschenrechner
Zusammenfassung: Programmierbarer Taschenrechner
Register sind (Zwischen)speicher für Berechnungen
Prozessorbefehle kontrollieren die Schritte im Prozessor
Prozessorbefehle können auf zwei Weisen ausgedrückt
werden:
Maschinenbefehle (Prozessor-lesbar, Bitfolgen)
Assemblerbefehle (Menschen-lesbar)
Prozessorbefehle liegen im Programmspeicher
Der Programmzähler zeigt immer auf die Adresse des
nächsten Befehls
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Der Speicher
Bisher nur als Programmspeicher genutzt
Kann auch als Datenspeicher genutzt werden
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Der Speicher
Bisher nur als Programmspeicher genutzt
Kann auch als Datenspeicher genutzt werden
Harvard-Architektur
Programmspeicher
Prozessorsystem
Datenspeicher
Von-Neumann-Architektur
Programm- und
Datenspeicher
Prozessorsystem
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Der Speicher
Bisher nur als Programmspeicher genutzt
Kann auch als Datenspeicher genutzt werden
Harvard-Architektur
Von-Neumann-Architektur
Programmspeicher
Prozessorsystem
Datenspeicher
Programm- und
Datenspeicher
Prozessorsystem
IBM Archives, obtained via
Encyclopaedia Britannica
c
University
of Manchester
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Vorteile der Speicherarchitekturen
Harvard-Architektur
Sicherheit vor versehentlichen
Programm-Modifikationen
und Viren
Kann sequentielle Zugriffe auf
Programmspeicher
beschleunigen
Von-Neumann-Architektur
Erlaubt selbstmodifizierende
Programme
Programme können andere
Programme laden
Speicher nicht
Zweckgebunden
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten im Datenspeicher
Typische Elemente des Datenspeichers:
Ganze Zahlen (Integer)
Kommazahlen“
”
Objekte (von objektorientierten Sprachen)
Algebraische Werte (von funktionalen Sprachen)
Zeichenketten
Adressen anderer Stellen im Datenspeicher
Maschinensprache-Programme (insbesondere bei
Von-Neumann-Architektur)
Bytecode-Programme
...
All diese Daten werden in Bits kodiert.
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Daten-Repräsentation
Daten können fast beliebig komplex kodiert werden
Einfache Kodierungen meist effizienter
Meist als Bytes:
1 B = 1 Byte = 8 Bits
Effiziente Darstellung mit Hexadezimalziffern (Basis 16):
10
2
16
9
1001
9
10
1010
A
11
1011
B
12
1100
C
13
1101
D
14
1110
E
15
1111
F
16
10000
10
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Daten-Repräsentation
Daten können fast beliebig komplex kodiert werden
Einfache Kodierungen meist effizienter
Meist als Bytes:
1 B = 1 Byte = 8 Bits
Effiziente Darstellung mit Hexadezimalziffern (Basis 16):
10
2
16
9
1001
9
10
1010
A
11
1011
B
12
1100
C
13
1101
D
14
1110
E
15
1111
F
16
10000
10
Eine Hexadezimalziffer entspricht genau 4 Bits ( nibble“)
”
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Daten-Repräsentation
Daten können fast beliebig komplex kodiert werden
Einfache Kodierungen meist effizienter
Meist als Bytes:
1 B = 1 Byte = 8 Bits
Effiziente Darstellung mit Hexadezimalziffern (Basis 16):
10
2
16
9
1001
9
10
1010
A
11
1011
B
12
1100
C
13
1101
D
14
1110
E
15
1111
F
16
10000
10
Eine Hexadezimalziffer entspricht genau 4 Bits ( nibble“)
”
Mögliche verschiedene Werte in Byte:
28 = 25610 = 10016 = 0x100
Wir lassen die Basis weg, wenn aus Kontext ersichtlich
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Natürliche Zahlen
Kleine natürliche Zahlen in ein Byte:
1210 = 0C
4210 = 2A
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Natürliche Zahlen
Kleine natürliche Zahlen in ein Byte:
1210 = 0C
4210 = 2A
Natürliche Zahlen jenseits 255:
100010 = 3E8
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Natürliche Zahlen
Kleine natürliche Zahlen in ein Byte:
1210 = 0C
4210 = 2A
Natürliche Zahlen jenseits 255:
100010 = 3E8
Werden in mehreren Bytes in Folge gespeichert
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Natürliche Zahlen
Kleine natürliche Zahlen in ein Byte:
1210 = 0C
4210 = 2A
Natürliche Zahlen jenseits 255:
100010 = 3E8
Werden in mehreren Bytes in Folge gespeichert
Komplikationen in der Praxis:
Bytereihenfolge
Speicherausrichtung
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Bytereihenfolge
100010 = 3E8
Zwei übliche Bytereihenfolgen:
03 E8 (big endian– großendig“: SPARC, m68k)
”
E8 03 (little endian– kleinendig“: x86, Alpha)
”
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Bytereihenfolge
100010 = 3E8
Zwei übliche Bytereihenfolgen:
03 E8 (big endian– großendig“: SPARC, m68k)
”
E8 03 (little endian– kleinendig“: x86, Alpha)
”
Die vom Prozessor bevorzugte Bytereihenfolge kann in
einem Befehl gelesen bzw. geschrieben werden
Die andere Bytereihenfolge braucht mehrere Befehle
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Speicherzugriffe
Adresse:. . .
400
401
402
403
404
405
...
Inhalt: . . .
2C
01
00
E8
03
00
...
Prozessor
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Speicherzugriffe
Adresse:. . .
400
401
402
403
404
405
...
Inhalt: . . .
2C
01
00
E8
03
00
...
Prozessor
300
Zur Beschleunigung:
Lesen und Schreiben von mehreren Bytes gleichzeitig
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Speicherzugriffe
Speicherausrichtung
Adresse:. . .
400
401
402
403
404
405
...
Inhalt: . . .
2C
01
00
E8
03
00
...
Prozessor
Zur Beschleunigung:
Lesen und Schreiben von mehreren Bytes gleichzeitig
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Speicherzugriffe
Speicherausrichtung
Adresse:. . .
400
401
402
403
404
405
...
Inhalt: . . .
2C
01
00
E8
03
00
...
Prozessor
00 E8
Zur Beschleunigung:
Lesen und Schreiben von mehreren Bytes gleichzeitig
Zur Vereinfachung der Architektur:
Multi-Byte-Operationen nur ausgerichtet möglich
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Speicherzugriffe
Speicherausrichtung
Adresse:. . .
400
401
402
403
404
405
...
Inhalt: . . .
2C
01
00
E8
03
00
...
Prozessor
00 E8 03 00
Zur Beschleunigung:
Lesen und Schreiben von mehreren Bytes gleichzeitig
Zur Vereinfachung der Architektur:
Multi-Byte-Operationen nur ausgerichtet möglich
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Speicherzugriffe
Speicherausrichtung
Adresse:. . .
400
401
402
403
404
405
...
Inhalt: . . .
2C
01
00
E8
03
00
...
Prozessor
1000
Zur Beschleunigung:
Lesen und Schreiben von mehreren Bytes gleichzeitig
Zur Vereinfachung der Architektur:
Multi-Byte-Operationen nur ausgerichtet möglich
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicherausrichtung
Adressenausrichtung (alignment):
Adresse
0xa000
0xa001
0xa002
a ist k-Bit ausrerichtet gdw a mod (k/8) = 0
ist 64-Bit (somit 32, 16-Bit) ausgerichtet
ist nicht 16-Bit (oder 32, 64-Bit) ausgerichtet
ist 16-Bit, aber nicht 32, 64-Bit ausgerichtet
Moderne Prozessoren bevorzugen k-Bit Zugriff auf k-Bit
ausgerichtete Daten
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicherausrichtung
Adressenausrichtung (alignment):
Adresse
0xa000
0xa001
0xa002
a ist k-Bit ausrerichtet gdw a mod (k/8) = 0
ist 64-Bit (somit 32, 16-Bit) ausgerichtet
ist nicht 16-Bit (oder 32, 64-Bit) ausgerichtet
ist 16-Bit, aber nicht 32, 64-Bit ausgerichtet
Moderne Prozessoren bevorzugen k-Bit Zugriff auf k-Bit
ausgerichtete Daten
Nicht-ausgerichteter Zugriff:
Langsamer (x86), oder
Programmfehler (Alpha, MIPS, SPARC, PowerPC;
SIGBUS-Ausnahme in UNIX)
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: MIPS-Speicherzugriffbefehle
Assemblerbefehl
lbu $z, v($x)
lhu $z, v($x)
lw $z, v($x)
sb $z, v($x)
sh $z, v($x)
sw $z, v($x)
Ausrichtung
8
16
32
8
16
32
Wirkung
liest 1 Byte
liest 2 Bytes (Halbwort)
liest 4 Bytes (Wort)
schreibt 1 Byte
schreibt 2 Bytes (Halbwort)
schreibt 4 Bytes (Wort)
Die verwendete Speicheradresse ist v + $x:
li $1, 0x2000
lbu $2, 0x1f($1)
;; liest von 0x201f
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Ganze Zahlen
Wie repräsentieren wir ganze Zahlen (inklusive negativer
Zahlen) im Speicher?
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Ganze Zahlen
Wie repräsentieren wir ganze Zahlen (inklusive negativer
Zahlen) im Speicher?
Wie immer: Bitmuster!
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Ganze Zahlen
Positive Zahlen: wie bisher
Negative Zahlen: verschiedene Verfahren:
Vorzeichen-Betrag
Exzesscode
Einerkomplement
Zweierkomplement
Negative Repräsentierungen verwenden logische Negation
(neg bzw. ¬):
b neg(b)
0
1
1
0
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Ganze Zahlen
Positive Zahlen: wie bisher
Negative Zahlen: verschiedene Verfahren:
Vorzeichen-Betrag
Exzesscode
Einerkomplement
Zweierkomplement
Negative Repräsentierungen verwenden logische Negation
(neg bzw. ¬):
b neg(b)
0
1
1
0
Im Folgenden betrachten wir 8-Bit Zahlen. Die Konzepte
funktionieren analog mit größeren n-Bit Zahlen.
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Vorzeichen-Betrag-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
000001012
100001012
000000002
100000002
repr(−5) = 10000101
Betrag
Vorzeichen
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Vorzeichen-Betrag-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
000001012
100001012
000000002
100000002
repr(−5) = 10000101
Betrag
Vorzeichen
Negation −x: Oberstes Bit negieren
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Vorzeichen-Betrag-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
000001012
100001012
000000002
100000002
repr(−5) = 10000101
Betrag
Vorzeichen
Negation −x: Oberstes Bit negieren
Arithmetik: Benötigt Fallunterscheidung
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Vorzeichen-Betrag-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
000001012
100001012
000000002
100000002
repr(−5) = 10000101
Betrag
Vorzeichen
Negation −x: Oberstes Bit negieren
Arithmetik: Benötigt Fallunterscheidung
Zwei Nullen: 000000002 , 100000002
Zahlenraum: −2n−1 − 1 . . . 2n−1 − 1 (symmetrisch)
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Exzess-N-code-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
100001012
011110112
100000002
100000002
repr(−5) = 128 + −5
= 123
= 011110112
Hier: Exzess-128-Code (N = 128 = 100000002 )
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Exzess-N-code-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
100001012
011110112
100000002
100000002
repr(−5) = 128 + −5
= 123
= 011110112
Hier: Exzess-128-Code (N = 128 = 100000002 )
Negation −x: 2N − x
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Exzess-N-code-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
100001012
011110112
100000002
100000002
repr(−5) = 128 + −5
= 123
= 011110112
Hier: Exzess-128-Code (N = 128 = 100000002 )
Negation −x: 2N − x
Arithmetik: Benötigt Fallunterscheidung
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Exzess-N-code-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
100001012
011110112
100000002
100000002
repr(−5) = 128 + −5
= 123
= 011110112
Hier: Exzess-128-Code (N = 128 = 100000002 )
Negation −x: 2N − x
Arithmetik: Benötigt Fallunterscheidung
Eine Null: 100000002
Zahlenraum: −2n−1 − 1 . . . 2n−1 (asymmetrisch)
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Einerkomplement-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
000001012
111110102
000000002
111111112
repr(−5) = neg(5)
= neg(000001012 )
= 111110102
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Einerkomplement-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
000001012
111110102
000000002
111111112
repr(−5) = neg(5)
= neg(000001012 )
= 111110102
Negation −x: Alle Bits negieren
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Einerkomplement-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
000001012
111110102
000000002
111111112
repr(−5) = neg(5)
= neg(000001012 )
= 111110102
Negation −x: Alle Bits negieren
Arithmetik: Ähnlich bei negativ/positiv
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Einerkomplement-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
000001012
111110102
000000002
111111112
repr(−5) = neg(5)
= neg(000001012 )
= 111110102
Negation −x: Alle Bits negieren
Arithmetik: Ähnlich bei negativ/positiv
Zwei Nullen: 000000002 , 111111112
Zahlenraum: −2n−1 . . . 2n−1 (symmetrisch)
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Zweierkomplement-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
000001012
111110112
000000002
000000002
repr(−5) = neg(5 − 1)
= neg(000001002 )
= 111110112
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Zweierkomplement-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
000001012
111110112
000000002
000000002
repr(−5) = neg(5 − 1)
= neg(000001002 )
= 111110112
Negation −x: Benötigt Fallunterscheidung
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Zweierkomplement-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
000001012
111110112
000000002
000000002
repr(−5) = neg(5 − 1)
= neg(000001002 )
= 111110112
Negation −x: Benötigt Fallunterscheidung
Arithmetik: Positive/negative Zahlen sehr ähnlich, nur
Vorzeichenerweiterung nötig
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Zweierkomplement-Darstellung
Beispiel
5
-5
0
-0
Bitfolge
000001012
111110112
000000002
000000002
repr(−5) = neg(5 − 1)
= neg(000001002 )
= 111110112
Negation −x: Benötigt Fallunterscheidung
Arithmetik: Positive/negative Zahlen sehr ähnlich, nur
Vorzeichenerweiterung nötig
Eine Null: 000000002
Zahlenraum: −2n−1 − 1 . . . 2n−1 (asymmetrisch)
Einfache Arithmetik ⇒ kleiner Prozessor
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Zusammenfassung: Zahlen mit Vorzeichen
Vorzeichen-Betrag: Vorzeichen-Bit
repr(−1) = 100000012
Exzess-N-code: +N (hier N = 128)
repr(−1) = 011111112
Einerkomplement: Negation
repr(−1) = 111111102
Zweierkomplement: Negation, +1
repr(−1) = 111111112
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Zeichen
ASCII: American Standard Code for Information Interchange
Nummern 32–126: Zeichen; 0–31, 127: Kontrollzeichen
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Daten-Repräsentation: Zeichen
ASCII: American Standard Code for Information Interchange
Nummern 32–126: Zeichen; 0–31, 127: Kontrollzeichen
20
! " # $ % & ’ ( ) * +
,
-
.
/
21
2C
2D
2E
2F
22
23
24
25
26
27
28
29
2A
2B
0 1 2 3 4 5 6 7 8 9 : ; < = > ?
30
3B
3C
3D
3E
@ A B C D E F G H I J K
31
L
M
N
O
40
4B
4C
4D
4E
4F
P Q R S T U V W X Y Z [
\
]
ˆ
50
41
51
32
42
43
44
45
46
47
48
49
4A
5F
o
60
6F
6B
6C
6D
6E
p q r s t u v w x y z {
|
}
˜
70
7C
7D
7E
71
72
73
74
75
76
77
78
69
5A
3F
n
68
59
3A
5E
67
58
39
m
66
57
38
5D
65
56
37
l
64
55
36
5C
63
54
35
5B
62
53
34
‘ a b c d e f g h i j k
61
52
33
79
6A
7A
7B
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Sonderzeichen
Umlaute, Sonderzeichen etc. oft in 128–255 gepackt
codepages“ definieren unterschiedliche Bedeutungen.
”
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Sonderzeichen
Umlaute, Sonderzeichen etc. oft in 128–255 gepackt
codepages“ definieren unterschiedliche Bedeutungen.
”
Unicode: mehr als 110,000 Zeichen
Als 32-Bit-Nummer
(Manchmal 16-Bit-Nummer, bestimmte Zeichen werden
dabei ausgeschlossen)
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Sonderzeichen
Umlaute, Sonderzeichen etc. oft in 128–255 gepackt
codepages“ definieren unterschiedliche Bedeutungen.
”
Unicode: mehr als 110,000 Zeichen
Als 32-Bit-Nummer
(Manchmal 16-Bit-Nummer, bestimmte Zeichen werden
dabei ausgeschlossen)
Zeichen:
ä
電
I
Kodierung: E4 96FB 13001
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Sonderzeichen
Umlaute, Sonderzeichen etc. oft in 128–255 gepackt
codepages“ definieren unterschiedliche Bedeutungen.
”
Unicode: mehr als 110,000 Zeichen
Als 32-Bit-Nummer
(Manchmal 16-Bit-Nummer, bestimmte Zeichen werden
dabei ausgeschlossen)
Zeichen:
ä
電
I
Kodierung: E4 96FB 13001
Zeichenketten (strings): Bytefolgen, pro Byte ein Zeichen
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Zeichenketten
Zeichenkette =
mehrere Zeichen in Folge + Längenangabe
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Daten-Repräsentation: Zeichenketten
Zeichenkette =
mehrere Zeichen in Folge + Längenangabe
Länge der Zeichenkette z.B.:
Längenprefix: Länge als Zahl vor dem ersten Zeichen
Terminiert mit Terminator (meist 00)
Zeichenkette
"foo"
Längenprefix
03 00 66 6F 6F
Terminiert
66 6F 6F 00
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Unicode-Zeichenketten
Unicode-Zeichenketten werden primär in drei Formaten abgelegt:
UTF-32: Wie ‘normale’ Zeichenkette,
aber 32 Bit statt 8 Bit pro Zeichen
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Unicode-Zeichenketten
Unicode-Zeichenketten werden primär in drei Formaten abgelegt:
UTF-32: Wie ‘normale’ Zeichenkette,
aber 32 Bit statt 8 Bit pro Zeichen
UTF-16: Ein Unicode-Zeichen belegt 2 oder 4 Bytes:
Nummer
< 10000
>= 10000
Bitmuster
xxxxxxxxxxxxxxxx
000uuuuuxxxxxxxxxxxxxxxx
UTF-16
xxxxxxxxxxxxxxxx
110110wwwwxxxxxx
110111xxxxxxxxxx
(wwww = uuuuu - 1)
D800–DFFF: keine gültigen Unicode-Zeichen
16/32-Bit-Fassungen unterschiedlich je nach Endigkeit
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Unicode-Zeichenketten
Unicode-Zeichenketten werden primär in drei Formaten abgelegt:
UTF-32: Wie ‘normale’ Zeichenkette,
aber 32 Bit statt 8 Bit pro Zeichen
UTF-16: Ein Unicode-Zeichen belegt 2 oder 4 Bytes:
Nummer
< 10000
>= 10000
Bitmuster
xxxxxxxxxxxxxxxx
000uuuuuxxxxxxxxxxxxxxxx
UTF-16
xxxxxxxxxxxxxxxx
110110wwwwxxxxxx
110111xxxxxxxxxx
(wwww = uuuuu - 1)
D800–DFFF: keine gültigen Unicode-Zeichen
16/32-Bit-Fassungen unterschiedlich je nach Endigkeit
UTF-8: Ähnlich UTF-16: 1–4 Bytes pro Zeichen
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Daten im Datenspeicher
user@host:˜$ hexdump -C hallo-welt.o
...
0200 b8 01 00 00 00 bf 01 00 00 00 48
0210 00 00 00 00 ba 0d 00 00 00 0f 05
0220 bf 00 00 00 00 0f 05 00 00 00 00
0230 48 61 6c 6c 6f 2c 20 57 65 6c 74
0240 00 00 00 00 00 00 00 00
...
be 00 00 00 00
b8 3c 00 00 00
00 00 00 00 00
|..........H.....|
21 0a 00 e8 03
00 00 00 00 00 00 00 00
|Hallo, Welt!....|
|............<...|
|................|
|................|
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Daten im Datenspeicher
user@host:˜$ hexdump -C hallo-welt.o
...
0200 b8 01 00 00 00 bf 01 00 00 00 48
0210 00 00 00 00 ba 0d 00 00 00 0f 05
0220 bf 00 00 00 00 0f 05 00 00 00 00
0230 48 61 6c 6c 6f 2c 20 57 65 6c 74
0240 00 00 00 00 00 00 00 00
...
Zahl (1000)
be 00 00 00 00
b8 3c 00 00 00
00 00 00 00 00
|..........H.....|
21 0a 00 e8 03
00 00 00 00 00 00 00 00
|Hallo, Welt!....|
|............<...|
|................|
|................|
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Daten im Datenspeicher
user@host:˜$ hexdump -C hallo-welt.o
...
0200 b8 01 00 00 00 bf 01 00 00 00 48
0210 00 00 00 00 ba 0d 00 00 00 0f 05
0220 bf 00 00 00 00 0f 05 00 00 00 00
0230 48 61 6c 6c 6f 2c 20 57 65 6c 74
0240 00 00 00 00 00 00 00 00
...
be 00 00 00 00
b8 3c 00 00 00
00 00 00 00 00
|..........H.....|
21 0a 00 e8 03
00 00 00 00 00 00 00 00
|Hallo, Welt!....|
Zahl (1000)
Maschinensprache
|............<...|
|................|
|................|
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Daten im Datenspeicher
user@host:˜$ hexdump -C hallo-welt.o
...
0200 b8 01 00 00 00 bf 01 00 00 00 48
0210 00 00 00 00 ba 0d 00 00 00 0f 05
0220 bf 00 00 00 00 0f 05 00 00 00 00
0230 48 61 6c 6c 6f 2c 20 57 65 6c 74
0240 00 00 00 00 00 00 00 00
...
be 00 00 00 00
b8 3c 00 00 00
00 00 00 00 00
|..........H.....|
21 0a 00 e8 03
00 00 00 00 00 00 00 00
|Hallo, Welt!....|
Zahl (1000)
Maschinensprache
Zeichenkette (”Hallo, Welt!\n”)
|............<...|
|................|
|................|
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Beispiel: Daten im Datenspeicher
user@host:˜$ hexdump -C hallo-welt.o
...
0200 b8 01 00 00 00 bf 01 00 00 00 48
0210 00 00 00 00 ba 0d 00 00 00 0f 05
0220 bf 00 00 00 00 0f 05 00 00 00 00
0230 48 61 6c 6c 6f 2c 20 57 65 6c 74
0240 00 00 00 00 00 00 00 00
...
be 00 00 00 00
b8 3c 00 00 00
00 00 00 00 00
|..........H.....|
21 0a 00 e8 03
00 00 00 00 00 00 00 00
|Hallo, Welt!....|
|............<...|
|................|
|................|
Zahl (1000)
Maschinensprache
Zeichenkette (”Hallo, Welt!\n”)
Die Bedeutung von Speicherinhalten kann ohne Kontext
nicht mit Sicherheit bestimmt werden
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicherarchitektur
Allzweckspeicher
Gerätespeicher
Speicher
Firmware /
BIOS
Eingabegeräte
ProzessorSystem
Ausgabegeräte
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Rechnerarchitektur: Speicher
Allzweckspeicher
Grafikspeicher
Northbridge
Firmware /
BIOS
Eingabegeräte
ProzessorSystem
Ausgabegeräte
Speicher
Administrativa
Einführung
Blinkanlage
Taschenrechner
Speicher
Beispiel: IA32-Speicher (Real Mode)
BIOS
0x100000
0xF0000
Gerätespeicher
Gerätespeicher: RAM, ROM,
EPROM, je nach Gerät
Arbeitsspeicher: RAM
BIOS/Firmware: EEPROM
0xA0000
Arbeitsspeicher
BIOS
0x7C00
0x400
Administrativa
Einführung
Blinkanlage
Taschenrechner
Nächste Woche:
Assembler-Programmierung in MIPS
Speicher