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