Einführung in die Systemprogrammierung

Größe: px
Ab Seite anzeigen:

Download "Einführung in die Systemprogrammierung"

Transkript

1 Einführung in die Systemprogrammierung Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 15. April 2014

2 Veranstaltungsübersicht Kontakt: Prof. Dr. Christoph Reichenbach Homepage: b-sysp/index.de.html Veranstaltung besteht aus: Vorlesung (Di) Übungen (Mi) Klausur am 24.07, 10:00 12:00, Hörsaal V

3 Kompetenzen Jede Vorlesung und Übung behandelt bestimmte Kompetenzen Klausur: 80% reines Kompetenzwissen 20% Synthese (aus zwei oder mehr Kompetenzen) Bonuspunkte sammeln: 4 Testate

4 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)

5 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

6 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

7 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

8 Systemprogrammierung im Kontext Programm Bibliotheken Laufzeitsystem Systemprogramm Systembibliotheken Betriebssystem Rechnerarchitektur Integrierte Schaltkreise

9 Systemprogrammierung im Kontext Programm Bibliotheken Laufzeitsystem Systemprogramm Systembibliotheken Betriebssystem Rechnerarchitektur Java, Python, Haskell, Scala, SML, PHP, C#, awk, Scheme, ADA, OCaml,... Integrierte Schaltkreise

10 Systemprogrammierung im Kontext Programm Bibliotheken Laufzeitsystem Systemprogramm Systembibliotheken Betriebssystem Rechnerarchitektur Integrierte Schaltkreise

11 Systemprogrammierung im Kontext Programm Bibliotheken Laufzeitsystem Systemprogramm Systembibliotheken Betriebssystem Rechnerarchitektur Integrierte Schaltkreise

12 Geplante Struktur Grundlagen der Rechnerarchitektur Assembler-Programmierung Performanz Grundlagen der Programmierung in C Grundlagen der Laufzeitsysteme moderner Programmiersprachen

13 Administrativa Einfu hrung Blinkanlage Taschenrechner Grundkonzepte der Rechnerarchitektur Speicher

14 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 7 TM (Google, Asus) Mainboard. Bild von ifixit.com.

15 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

16 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

17 Grundkonzepte der Rechnerarchitektur Speicher Eingabegeräte Prozessor- System Ausgabegeräte Rest der Welt

18 Beispiel: Programmierbare Blinkanlage Steuerung für Lampe Speicherzustand: 0: aus 1: an Speicher Prozessor

19 Beispiel: Programmierbare Blinkanlage Steuerung für Lampe Speicherzustand: 0: aus 1: an Kodierung eines Programmes: an aus an Speicher Prozessor

20 Beispiel: Programmierbare Blinkanlage Steuerung für Lampe Speicherzustand: 0: aus 1: an Kodierung eines Programmes: an 1 aus 0 an 1 Speicher Prozessor

21 Programmierbare Blinkanlage Speicher Wert: Adresse:

22 Programmierbare Blinkanlage Speicher Wert: Adresse: Prozessor Programmzähler = 0

23 Programmierbare Blinkanlage Speicher Wert: Adresse: Prozessor Programmzähler = 0

24 Programmierbare Blinkanlage Speicher Wert: Adresse: Prozessor Programmzähler = 0

25 Programmierbare Blinkanlage Speicher Wert: Adresse: Prozessor Programmzähler = 1

26 Programmierbare Blinkanlage Speicher Wert: Adresse: Prozessor Programmzähler = 2

27 Frei programmierbare Rechner Programmbefehle im Programmspeicher Programmzähler 1 zeigt auf nächsten Befehl Programmzähler schreitet automatisch vorwärts 1 Auch Instruktionszeiger ; gängige Abkürzungen: PC, IP

28 Frei programmierbare Rechner Programmbefehle im Programmspeicher Programmzähler 1 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

29 Beispiel: Programmierbarer Taschenrechner Taschenrechner speichert Berechnungen als Programme z.b.: (x + 2)x

30 Beispiel: Programmierbarer Taschenrechner Taschenrechner speichert Berechnungen als Programme z.b.: (x + 2)x x einlesen

31 Beispiel: Programmierbarer Taschenrechner Taschenrechner speichert Berechnungen als Programme z.b.: (x + 2)x x einlesen Ausrechnen

32 Beispiel: Programmierbarer Taschenrechner Taschenrechner speichert Berechnungen als Programme z.b.: (x + 2)x x einlesen Ausrechnen Ergebnis ausgeben

33 Beispiel: Programmierbarer Taschenrechner Taschenrechner speichert Berechnungen als Programme z.b.: (x + 2)x x einlesen Ausrechnen Ergebnis ausgeben Problem: Wir müssen Rechenergebnisse zwischenspeichern

34 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

35 Prozessor des programmierbaren Taschenrechners Prozessor Programmzähler = 0 $0 = 0 $1 = 0 $2 = 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

36 Befehle des Taschenrechners Dateneingabe Datenausgabe Addieren Multiplizieren Konstante

37 Befehle des Taschenrechners Dateneingabe eingabe $z $z Datenausgabe Addieren Multiplizieren Konstante $x, $y, $z sind Variablen für Register. Beispiel eines echten Befehls: add $1, $1, $2 ($1 := $1 + $2)

38 Befehle des Taschenrechners Dateneingabe eingabe $z $z Datenausgabe ausgabe $z $z Addieren Multiplizieren Konstante $x, $y, $z sind Variablen für Register. Beispiel eines echten Befehls: add $1, $1, $2 ($1 := $1 + $2)

39 Befehle des Taschenrechners Dateneingabe eingabe $z $z Datenausgabe ausgabe $z $z Addieren add $z, $x, $y $z := $x + $y Multiplizieren Konstante $x, $y, $z sind Variablen für Register. Beispiel eines echten Befehls: add $1, $1, $2 ($1 := $1 + $2)

40 Befehle des Taschenrechners Dateneingabe eingabe $z $z Datenausgabe ausgabe $z $z Addieren add $z, $x, $y $z := $x + $y Multiplizieren mul $z, $x, $y $z := $x $y Konstante $x, $y, $z sind Variablen für Register. Beispiel eines echten Befehls: add $1, $1, $2 ($1 := $1 + $2)

41 Befehle des Taschenrechners Dateneingabe eingabe $z $z Datenausgabe ausgabe $z $z Addieren add $z, $x, $y $z := $x + $y Multiplizieren mul $z, $x, $y $z := $x $y Konstante li $z, v $z := v $x, $y, $z sind Variablen für Register. Beispiel eines echten Befehls: add $1, $1, $2 ($1 := $1 + $2)

42 Befehle des Taschenrechners Dateneingabe eingabe $z $z Datenausgabe ausgabe $z $z Addieren add $z, $x, $y $z := $x + $y Multiplizieren mul $z, $x, $y $z := $x $y Konstante li $z, v $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.

43 Befehle des Taschenrechners: Bitmuster Wir folgen den Bitmustern des MIPS-Befehlssatzes Jeder MIPS-Befehl besteht aus 32 Bits

44 Befehle des Taschenrechners: Bitmuster Wir folgen den Bitmustern des MIPS-Befehlssatzes Jeder MIPS-Befehl besteht aus 32 Bits Beispiel: add $z, $x, $y x 1 x 0 000y 1 y 0 000z 1 z

45 Befehle des Taschenrechners: Bitmuster Wir folgen den Bitmustern des MIPS-Befehlssatzes Jeder MIPS-Befehl besteht aus 32 Bits Beispiel: add $z, $x, $y x 1 x 0 000y 1 y 0 000z 1 z Operationscode (Opcode) $x $y $z Funktionscode

46 Vollständige Kodierung des add-befehls add $z, $x, $y : x 1 x 0 000y 1 y 0 000z 1 z Binärkodierung von Register $x (analog für $y, $z): Register x 1 x 0 $0 0 0 $1 0 1 $2 1 0 $3 1 1

47 Vollständige Kodierung des add-befehls add $z, $x, $y : x 1 x 0 000y 1 y 0 000z 1 z add $1, $2, $3 : Binärkodierung von Register $x (analog für $y, $z): Register x 1 x 0 $0 0 0 $1 0 1 $2 1 0 $3 1 1

48 Vollständige Kodierung des li-befehls li $z, v : z 1 z v 15, v 14,..., v 1, v 0

49 Vollständige Kodierung des li-befehls li $z, v : z 1 z v 15, v 14,..., v 1, v 0 Opcode $z Direktoperand v

50 Vollständige Kodierung des li-befehls li $z, v : z 1 z v 15, v 14,..., v 1, v 0 Opcode $z Direktoperand v li $2, 1000 : ?

51 Vollständige Kodierung des li-befehls li $z, v : z 1 z v 15, v 14,..., v 1, v 0 Opcode $z Direktoperand v li $2, 1000 : ? Kodierung von Zahlen im Binärsystem = Auffüllen mit 0

52 Vollständige Kodierung des li-befehls li $z, v : z 1 z v 15, v 14,..., v 1, v 0 Opcode $z Direktoperand v li $2, 1000 : Kodierung von Zahlen im Binärsystem = Auffüllen mit 0

53 Vollständige Kodierung des li-befehls li $z, v : z 1 z v 15, v 14,..., v 1, v 0 Opcode $z Direktoperand v li $2, 1000 : Kodierung von Zahlen im Binärsystem = Auffüllen mit 0 Bei 16 Bits also maximal = 65535

54 Befehle des Taschenrechners: Zusammenfassung Assemblersprache: Menschenlesbar Maschinensprache: Maschinenlesbar Assemblersprache Maschinensprache-Bitmuster eingabe $z z 1 z ausgabe $z z 1 z add $z, $x, $y x 1 x 0 000y 1 y 0 000z 1 z mul $z, $x, $y x 1 x 0 000y 1 y 0 000z 1 z li $z, v z 1 z v 15 v v 1 v 0

55 Ein Programm in der Taschenrechnersprache Wir schreiben (x + 2)x in Assemblersprache: Maschinensprache eingabe $

56 Ein Programm in der Taschenrechnersprache Wir schreiben (x + 2)x in Assemblersprache: Maschinensprache eingabe $ li $1,

57 Ein Programm in der Taschenrechnersprache Wir schreiben (x + 2)x in Assemblersprache: Maschinensprache eingabe $ li $1, add $1, $1, $

58 Ein Programm in der Taschenrechnersprache Wir schreiben (x + 2)x in Assemblersprache: Maschinensprache eingabe $ li $1, add $1, $1, $ mul $1, $1, $

59 Ein Programm in der Taschenrechnersprache Wir schreiben (x + 2)x in Assemblersprache: Maschinensprache eingabe $ li $1, add $1, $1, $ mul $1, $1, $ ausgabe $

60 Berechnung im Programmierbaren Taschenrechner Addr Maschinencode 0: : : : : (eingabe $0) Eingabe 5 Prozessor Programmzähler = 0 $0 = 0 $1 = 0 $2 = 0 $3 = 012 Ausgabe 5

61 Berechnung im Programmierbaren Taschenrechner Addr Maschinencode 0: : : : : (eingabe $0) Eingabe 5 Prozessor Programmzähler = 0 $0 = 0 $1 = 0 $2 = 0 $3 = 012 Ausgabe 5

62 Berechnung im Programmierbaren Taschenrechner Addr Maschinencode 0: : : : : (eingabe $0) (li $1, 2) Eingabe 5 Prozessor Programmzähler = 4 $0 = 5 $1 = 0 $2 = 0 $3 = 012 Ausgabe 5

63 Berechnung im Programmierbaren Taschenrechner Addr Maschinencode 0: : : : : (li $1, 2) (add $1, $1, $0) Eingabe 5 Prozessor Programmzähler = 8 $0 = 5 $1 = 2 $2 = 0 $3 = 012 Ausgabe 5

64 Berechnung im Programmierbaren Taschenrechner Addr Maschinencode 0: : : : : (add $1, $1, $0) (mul $1, $1, $0) Eingabe 5 Prozessor Programmzähler = 12 $0 = 5 $1 = 7 $2 = 0 $3 = 012 Ausgabe 5

65 Berechnung im Programmierbaren Taschenrechner Addr Maschinencode 0: : : : : (mul $1, $1, $0) (ausgabe $1) Eingabe 5 Prozessor Programmzähler = 16 $0 = 5 $1 = 35 $2 = 0 $3 = 012 Ausgabe 5

66 Berechnung im Programmierbaren Taschenrechner Addr Maschinencode 0: : : : : Eingabe 5 Prozessor Programmzähler = 20 $0 = 5 $1 = 35 $2 = 0 $3 = 012 Ausgabe 35

67 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

68 Der Speicher Bisher nur als Programmspeicher genutzt Kann auch als Datenspeicher genutzt werden

69 Der Speicher Bisher nur als Programmspeicher genutzt Kann auch als Datenspeicher genutzt werden Harvard-Architektur Programmspeicher Von-Neumann-Architektur Programm- und Datenspeicher Prozessorsystem Prozessorsystem Datenspeicher

70 Der Speicher Bisher nur als Programmspeicher genutzt Kann auch als Datenspeicher genutzt werden Harvard-Architektur Programmspeicher Von-Neumann-Architektur Programm- und Datenspeicher Prozessorsystem Prozessorsystem Datenspeicher IBM Archives, obtained via Encyclopaedia Britannica c University of Manchester

71 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

72 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.

73 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): A B C D E F 10

74 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): A B C D E F 10 Eine Hexadezimalziffer entspricht genau 4 Bits ( nibble )

75 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): A B C D E F 10 Eine Hexadezimalziffer entspricht genau 4 Bits ( nibble ) Mögliche verschiedene Werte in Byte: 2 8 = = = 0x100 Wir lassen die Basis weg, wenn aus Kontext ersichtlich

76 Daten-Repräsentation: Natürliche Zahlen Kleine natürliche Zahlen in ein Byte: = 0C = 2A

77 Daten-Repräsentation: Natürliche Zahlen Kleine natürliche Zahlen in ein Byte: = 0C = 2A Natürliche Zahlen jenseits 255: = 3E8

78 Daten-Repräsentation: Natürliche Zahlen Kleine natürliche Zahlen in ein Byte: = 0C = 2A Natürliche Zahlen jenseits 255: = 3E8 Werden in mehreren Bytes in Folge gespeichert

79 Daten-Repräsentation: Natürliche Zahlen Kleine natürliche Zahlen in ein Byte: = 0C = 2A Natürliche Zahlen jenseits 255: = 3E8 Werden in mehreren Bytes in Folge gespeichert Komplikationen in der Praxis: Bytereihenfolge Speicherausrichtung

80 Bytereihenfolge = 3E8 Zwei übliche Bytereihenfolgen: 03 E8 (big endian großendig : SPARC, m68k) E8 03 (little endian kleinendig : x86, Alpha)

81 Bytereihenfolge = 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

82 Speicherzugriffe Adresse: Inhalt:... 2C E Prozessor

83 Speicherzugriffe Adresse: Inhalt:... 2C E Prozessor 300 Zur Beschleunigung: Lesen und Schreiben von mehreren Bytes gleichzeitig

84 Speicherzugriffe Speicherausrichtung Adresse: Inhalt:... 2C E Prozessor Zur Beschleunigung: Lesen und Schreiben von mehreren Bytes gleichzeitig

85 Speicherzugriffe Speicherausrichtung Adresse: Inhalt:... 2C E Prozessor 00 E8 Zur Beschleunigung: Lesen und Schreiben von mehreren Bytes gleichzeitig Zur Vereinfachung der Architektur: Multi-Byte-Operationen nur ausgerichtet möglich

86 Speicherzugriffe Speicherausrichtung Adresse: Inhalt:... 2C E Prozessor 00 E Zur Beschleunigung: Lesen und Schreiben von mehreren Bytes gleichzeitig Zur Vereinfachung der Architektur: Multi-Byte-Operationen nur ausgerichtet möglich

87 Speicherzugriffe Speicherausrichtung Adresse: Inhalt:... 2C E Prozessor 1000 Zur Beschleunigung: Lesen und Schreiben von mehreren Bytes gleichzeitig Zur Vereinfachung der Architektur: Multi-Byte-Operationen nur ausgerichtet möglich

88 Speicherausrichtung Adressenausrichtung (alignment): Adresse a ist k-bit ausrerichtet gdw a mod (k/8) = 0 0xa000 ist 64-Bit (somit 32, 16-Bit) ausgerichtet 0xa001 ist nicht 16-Bit (oder 32, 64-Bit) ausgerichtet 0xa002 ist 16-Bit, aber nicht 32, 64-Bit ausgerichtet Moderne Prozessoren bevorzugen k-bit Zugriff auf k-bit ausgerichtete Daten

89 Speicherausrichtung Adressenausrichtung (alignment): Adresse a ist k-bit ausrerichtet gdw a mod (k/8) = 0 0xa000 ist 64-Bit (somit 32, 16-Bit) ausgerichtet 0xa001 ist nicht 16-Bit (oder 32, 64-Bit) ausgerichtet 0xa002 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)

90 Beispiel: MIPS-Speicherzugriffbefehle Assemblerbefehl Ausrichtung Wirkung lbu $z, v($x) 8 liest 1 Byte lhu $z, v($x) 16 liest 2 Bytes (Halbwort) lw $z, v($x) 32 liest 4 Bytes (Wort) sb $z, v($x) 8 schreibt 1 Byte sh $z, v($x) 16 schreibt 2 Bytes (Halbwort) sw $z, v($x) 32 schreibt 4 Bytes (Wort) Die verwendete Speicheradresse ist v + $x: li $1, 0x2000 lbu $2, 0x1f($1) ;; liest von 0x201f

91 Daten-Repräsentation: Ganze Zahlen Wie repräsentieren wir ganze Zahlen (inklusive negativer Zahlen) im Speicher?

92 Daten-Repräsentation: Ganze Zahlen Wie repräsentieren wir ganze Zahlen (inklusive negativer Zahlen) im Speicher? Wie immer: Bitmuster!

93 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)

94 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) Im Folgenden betrachten wir 8-Bit Zahlen. Die Konzepte funktionieren analog mit größeren n-bit Zahlen.

95 Vorzeichen-Betrag-Darstellung Beispiel Bitfolge repr( 5) = Betrag Vorzeichen

96 Vorzeichen-Betrag-Darstellung Beispiel Bitfolge repr( 5) = Betrag Vorzeichen Negation x: Oberstes Bit negieren

97 Vorzeichen-Betrag-Darstellung Beispiel Bitfolge repr( 5) = Betrag Vorzeichen Negation x: Oberstes Bit negieren Arithmetik: Benötigt Fallunterscheidung

98 Vorzeichen-Betrag-Darstellung Beispiel Bitfolge repr( 5) = Betrag Vorzeichen Negation x: Oberstes Bit negieren Arithmetik: Benötigt Fallunterscheidung Zwei Nullen: , Zahlenraum: 2 n n 1 1 (symmetrisch)

99 Exzess-N-code-Darstellung Beispiel Bitfolge repr( 5) = = 123 = Hier: Exzess-128-Code (N = 128 = )

100 Exzess-N-code-Darstellung Beispiel Bitfolge repr( 5) = = 123 = Hier: Exzess-128-Code (N = 128 = ) Negation x: 2N x

101 Exzess-N-code-Darstellung Beispiel Bitfolge repr( 5) = = 123 = Hier: Exzess-128-Code (N = 128 = ) Negation x: 2N x Arithmetik: Benötigt Fallunterscheidung

102 Exzess-N-code-Darstellung Beispiel Bitfolge repr( 5) = = 123 = Hier: Exzess-128-Code (N = 128 = ) Negation x: 2N x Arithmetik: Benötigt Fallunterscheidung Eine Null: Zahlenraum: 2 n n 1 (asymmetrisch)

103 Einerkomplement-Darstellung Beispiel Bitfolge repr( 5) = neg(5) = neg( ) =

104 Einerkomplement-Darstellung Beispiel Bitfolge repr( 5) = neg(5) = neg( ) = Negation x: Alle Bits negieren

105 Einerkomplement-Darstellung Beispiel Bitfolge repr( 5) = neg(5) = neg( ) = Negation x: Alle Bits negieren Arithmetik: Ähnlich bei negativ/positiv

106 Einerkomplement-Darstellung Beispiel Bitfolge repr( 5) = neg(5) = neg( ) = Negation x: Alle Bits negieren Arithmetik: Ähnlich bei negativ/positiv Zwei Nullen: , Zahlenraum: 2 n n 1 (symmetrisch)

107 Zweierkomplement-Darstellung Beispiel Bitfolge repr( 5) = neg(5 1) = neg( ) =

108 Zweierkomplement-Darstellung Beispiel Bitfolge repr( 5) = neg(5 1) = neg( ) = Negation x: Benötigt Fallunterscheidung

109 Zweierkomplement-Darstellung Beispiel Bitfolge repr( 5) = neg(5 1) = neg( ) = Negation x: Benötigt Fallunterscheidung Arithmetik: Positive/negative Zahlen sehr ähnlich, nur Vorzeichenerweiterung nötig

110 Zweierkomplement-Darstellung Beispiel Bitfolge repr( 5) = neg(5 1) = neg( ) = Negation x: Benötigt Fallunterscheidung Arithmetik: Positive/negative Zahlen sehr ähnlich, nur Vorzeichenerweiterung nötig Eine Null: Zahlenraum: 2 n n 1 (asymmetrisch) Einfache Arithmetik kleiner Prozessor

111 Zusammenfassung: Zahlen mit Vorzeichen Vorzeichen-Betrag: Vorzeichen-Bit repr( 1) = Exzess-N-code: +N (hier N = 128) repr( 1) = Einerkomplement: Negation repr( 1) = Zweierkomplement: Negation, +1 repr( 1) =

112 Daten-Repräsentation: Zeichen ASCII: American Standard Code for Information Interchange Nummern : Zeichen; 0 31, 127: Kontrollzeichen

113 Daten-Repräsentation: Zeichen ASCII: American Standard Code for Information Interchange Nummern : Zeichen; 0 31, 127: Kontrollzeichen! " # $ % & ( ) * +, -. / A 2B 2C 2D 2E 2F : ; < = >? A 3B 3C 3D 3E A B C D E F G H I J K L M N O A 4B 4C 4D 4E 4F P Q R S T U V W X Y Z [ \ ] ˆ A 5B 5C 5D 5E 5F a b c d e f g h i j k l m n o A 6B 6C 6D 6E 6F p q r s t u v w x y z { } A 7B 7C 7D 7E

114 Daten-Repräsentation: Sonderzeichen Umlaute, Sonderzeichen etc. oft in gepackt codepages definieren unterschiedliche Bedeutungen.

115 Daten-Repräsentation: Sonderzeichen Umlaute, Sonderzeichen etc. oft in gepackt codepages definieren unterschiedliche Bedeutungen. Unicode: mehr als 110,000 Zeichen Als 32-Bit-Nummer (Manchmal 16-Bit-Nummer, bestimmte Zeichen werden dabei ausgeschlossen)

116 Daten-Repräsentation: Sonderzeichen Umlaute, Sonderzeichen etc. oft in 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

117 Daten-Repräsentation: Sonderzeichen Umlaute, Sonderzeichen etc. oft in 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 Zeichenketten (strings): Bytefolgen, pro Byte ein Zeichen

118 Daten-Repräsentation: Zeichenketten Zeichenkette = mehrere Zeichen in Folge + Längenangabe

119 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 Längenprefix Terminiert "foo" F 6F 66 6F 6F 00

120 Unicode-Zeichenketten Unicode-Zeichenketten werden primär in drei Formaten abgelegt: UTF-32: Wie normale Zeichenkette, aber 32 Bit statt 8 Bit pro Zeichen

121 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 Bitmuster UTF-16 < xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx >= uuuuuxxxxxxxxxxxxxxxx wwwwxxxxxx xxxxxxxxxx (wwww = uuuuu - 1) D800 DFFF: keine gültigen Unicode-Zeichen 16/32-Bit-Fassungen unterschiedlich je nach Endigkeit

122 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 Bitmuster UTF-16 < xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx >= uuuuuxxxxxxxxxxxxxxxx wwwwxxxxxx xxxxxxxxxx (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

123 Beispiel: Daten im Datenspeicher $ hexdump -C hallo-welt.o b bf be H ba 0d f 05 b8 3c < bf f c 6c 6f 2c c a 00 e8 03 Hallo, Welt!

124 Beispiel: Daten im Datenspeicher $ hexdump -C hallo-welt.o b bf be H ba 0d f 05 b8 3c < bf f c 6c 6f 2c c a 00 e8 03 Hallo, Welt! Zahl (1000)

125 Beispiel: Daten im Datenspeicher $ hexdump -C hallo-welt.o b bf be H ba 0d f 05 b8 3c < bf f c 6c 6f 2c c a 00 e8 03 Hallo, Welt! Zahl (1000) Maschinensprache

126 Beispiel: Daten im Datenspeicher $ hexdump -C hallo-welt.o b bf be H ba 0d f 05 b8 3c < bf f c 6c 6f 2c c a 00 e8 03 Hallo, Welt! Zahl (1000) Maschinensprache Zeichenkette ( Hallo, Welt!\n )

127 Beispiel: Daten im Datenspeicher $ hexdump -C hallo-welt.o b bf be H ba 0d f 05 b8 3c < bf f c 6c 6f 2c c a 00 e8 03 Hallo, Welt! Zahl (1000) Maschinensprache Zeichenkette ( Hallo, Welt!\n ) Die Bedeutung von Speicherinhalten kann ohne Kontext nicht mit Sicherheit bestimmt werden

128 Speicherarchitektur Speicher Firmware / BIOS Allzweckspeicher Gerätespeicher Eingabegeräte Prozessor- System Ausgabegeräte

129 Rechnerarchitektur: Speicher Firmware / BIOS Allzweckspeicher Grafikspeicher Northbridge Eingabegeräte Prozessor- System Ausgabegeräte

130 Beispiel: IA32-Speicher (Real Mode) BIOS 0x xF0000 Gerätespeicher: RAM, ROM, EPROM, je nach Gerät Arbeitsspeicher: RAM BIOS/Firmware: EEPROM Gerätespeicher Arbeitsspeicher 0xA0000 BIOS 0x7C00 0x400

131 Nächste Woche: Assembler-Programmierung in MIPS

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 15. Juli 2014 Veranstaltungsübersicht Kontakt: Prof. Dr. Christoph Reichenbach (reichenbach@cs.uni-frankfurt.de)

Mehr

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 17. April 2013 Veranstaltungsübersicht Kontakt: Prof. Dr. Christoph Reichenbach (reichenbach@cs.uni-frankfurt.de)

Mehr

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9 Arithmetik, Register und Speicherzugriff Grundlagen der Rechnerarchitektur Assembler 9 Arithmetik und Zuweisungen Einfache Arithmetik mit Zuweisung C Programm: a = b + c; d = a e; MIPS Instruktionen: Komplexere

Mehr

Aufbau und Funktionsweise eines Computers

Aufbau und Funktionsweise eines Computers Aufbau und Funktionsweise eines Computers Thomas Röfer Hardware und Software von Neumann Architektur Schichtenmodell der Software Zahlsysteme Repräsentation von Daten im Computer Praktische Informatik

Mehr

Einführung in die Systemprogrammierung 01

Einführung in die Systemprogrammierung 01 Einführung in die Systemprogrammierung 01 Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 24. April 2013 Administrativa Ab nächster Woche bitte Laptops in Übungen mitbringen OLAT-Paßwort

Mehr

Grundlagen der Rechnerarchitektur. MIPS Assembler

Grundlagen der Rechnerarchitektur. MIPS Assembler Grundlagen der Rechnerarchitektur MIPS Assembler Übersicht Arithmetik, Register und Speicherzugriff Darstellung von Instruktionen Logische Operationen Weitere Arithmetik Branches und Jumps Prozeduren 32

Mehr

Grundlagen der Rechnerarchitektur. Einführung

Grundlagen der Rechnerarchitektur. Einführung Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler

Mehr

Assembler am Beispiel der MIPS Architektur

Assembler am Beispiel der MIPS Architektur Assembler am Beispiel der MIPS Architektur Frühere Einsatzgebiete MIPS Silicon Graphics Unix Workstations (z. B. SGI Indigo2) Silicon Graphics Unix Server (z. B. SGI Origin2000) DEC Workstations (z.b.

Mehr

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht Kap.2 Befehlsschnittstelle Prozessoren, externe Sicht 2 Befehlsschnittstelle 2.1 elementare Datentypen, Operationen 2.2 logische Speicherorganisation 2.3 Maschinenbefehlssatz 2.4 Klassifikation von Befehlssätzen

Mehr

Motivation und Überblick

Motivation und Überblick Motivation und Überblick Drei große Bereiche der Vorlesung: Darstellung von Zahlen in Rechnern Verarbeitung von Binärdaten auf der Ebene digitaler Schaltungen Programmierung auf Maschinenebene und relativ

Mehr

ARM-Cortex-M4 / Thumb-2-Befehlssatz Adressierungsarten und arithmetische Operationen

ARM-Cortex-M4 / Thumb-2-Befehlssatz Adressierungsarten und arithmetische Operationen ARM-Cortex-M4 / Thumb-2-Befehlssatz Adressierungsarten und arithmetische Operationen Aufgabenstellung: - das beigefügte Assembler-Programm schrittweise ausführen - sich mit der Handhabung der Entwicklungswerkzeuge

Mehr

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen Mikroprozessoren Grundlagen Aufbau, Blockschaltbild Grundlegende Datentypen AVR-Controller Anatomie Befehlssatz Assembler Speicherzugriff Adressierungsarten Kontrollstrukturen Stack Input / Output (I/O)

Mehr

N Bit Binärzahlen. Stelle: Binär-Digit:

N Bit Binärzahlen. Stelle: Binär-Digit: N Bit Binärzahlen N Bit Binärzahlen, Beispiel 16 Bit: Stelle: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Binär-Digit: 0 0 1 0 1 0 0 1 1 1 0 0 1 0 0 0 Least Significant Bit (LSB) und Most Significant Bit (MSB)

Mehr

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 14. Okt. 2015 Computeraufbau: nur ein Überblick Genauer: Modul Digitale Systeme (2. Semester) Jetzt: Grundverständnis

Mehr

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU Datenpfad einer einfachen MIPS CPU Die Branch Instruktion beq Grundlagen der Rechnerarchitektur Prozessor 13 Betrachten nun Branch Instruktion beq Erinnerung, Branch Instruktionen beq ist vom I Typ Format:

Mehr

Aufbau und Funktionsweise eines Computers

Aufbau und Funktionsweise eines Computers Aufbau und Funktionsweise eines Computers Thomas Röfer Hardware und Software von Neumann Architektur Schichtenmodell der Software Zahlsysteme Repräsentation von Daten im Computer Hardware Prozessor (CPU)

Mehr

Microcomputertechnik

Microcomputertechnik Microcomputertechnik mit Mikrocontrollern der Familie 8051 Bearbeitet von Bernd-Dieter Schaaf 2. Auflage 2002. Buch. 230 S. Hardcover ISBN 978 3 446 22089 8 Format (B x L): 16 x 22,7 cm Gewicht: 407 g

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 1: Von der Maschinensprache zu C Prof. Dr. Maschinensprache: MIPS R2000 Was bewirkt folgendes Programm: 00100111101111011111111111100000 10101111101111110000000000010100

Mehr

Grundlagen der Rechnerarchitektur. Einführung

Grundlagen der Rechnerarchitektur. Einführung Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler

Mehr

ERA-Zentralübung Maschinenprogrammierung

ERA-Zentralübung Maschinenprogrammierung ERA-Zentralübung Maschinenprogrammierung M. Meyer LRR TU München 25.11.2016 Inhalt Aufgabe 4.1 Aufgabe 4.2 Zeichensätze Aufgabe 4.1 Leuchtbandanzeige/Bargraph Bit Nr: 15 14 13 12 11 10 9 8 7 6 5 4 3 2

Mehr

Einführung in die Programmierung mit Go

Einführung in die Programmierung mit Go Einführung in die Programmierung mit Go Teil 1: Grundlegende Konzepte Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 8. März 2015 Übersicht der Veranstaltung Sonderveranstaltung:

Mehr

Mikrocontroller. eine Einführung. Florian Schmitt - 16.11.2010 1 / 34

Mikrocontroller. eine Einführung. Florian Schmitt - 16.11.2010 1 / 34 Mikrocontroller eine Einführung Florian Schmitt - 16.11.2010 1 / 34 Inhalt Was sind Mikrocontroller, wozu sind sie nützlich? Unterschiede und Gemeinsamkeiten mit dem PC Wie funktionieren Mikrocontroller

Mehr

Mikrocomputertechnik

Mikrocomputertechnik Mikrocomputertechnik Bernd-Dieter Schaaf Mit Mikrocontrollern der Familie 8051 ISBN 3-446-40017-6 Leseprobe Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40017-6 sowie im Buchhandel

Mehr

Von Assembler zu Java

Von Assembler zu Java Von Assembler zu Java Prof. Dr.-Ing. Thomas Schwotzer 1 Einführung Die erste imperativen Programme wurden in den Urzeiten der IT tatsächlich direkt auf der Hardware der Maschinen geschrieben. Die verfügbaren

Mehr

Assembler Integer-Arithmetik

Assembler Integer-Arithmetik Assembler Integer-Arithmetik Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler Integer-Arithmetik 1/23 2008-04-01 Arithmetik

Mehr

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU Datenpfad einer einfachen MIPS CPU Die Branch Instruktion beq Grundlagen der Rechnerarchitektur Prozessor 13 Betrachten nun Branch Instruktion beq Erinnerung, Branch Instruktionen beq ist vom I Typ Format:

Mehr

Teil 2: Rechnerorganisation

Teil 2: Rechnerorganisation Teil 2: Rechnerorganisation Inhalt: Zahlendarstellungen Rechnerarithmetik schrittweiser Entwurf eines hypothetischen Prozessors mit Daten-, Adreß- und Kontrollpfad Speicherorganisation Mikroprogrammierung

Mehr

Wie rechnet ein Rechner?

Wie rechnet ein Rechner? 0 Motivation Jörg Roth 2 Wir gehen in dieser Vorlesung der Frage nach Wie rechnet ein Rechner? Als Softwareentwickler könnten wir in einem Programm z.b. folgende Anweisung schreiben: a = a+2*b; Wie wird

Mehr

Assembler Programmierung Motivation. Informatik II SS 2004 Teil 4: Assembler Programmierung. Assembler vs. Maschinensprache

Assembler Programmierung Motivation. Informatik II SS 2004 Teil 4: Assembler Programmierung. Assembler vs. Maschinensprache Assembler Programmierung Motivation Informatik II SS 2004 Teil 4: Assembler Programmierung Was ist ein Programm? Eine Reihe von Befehlen, die der Ausführung einer Aufgabe dient Dazu wird das Programm sequentiell

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung 5. Vorlesung 06.11.2018 1 Zahlendarstellungen 2 Speicherinhalte: Bits Hardware Spannung Ladung Magnetisierung Codierung 0V ungeladen unmagnetisiert 0 5V geladen magnetisiert

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur Prozessor Übersicht Datenpfad Control Pipelining Data Hazards Control Hazards Multiple Issue Grundlagen der Rechnerarchitektur Prozessor 2 Datenpfad einer einfachen MIPS

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN Lehrstuhl für Rechnertechnik und Rechnerorganisation Prof. Dr. Arndt Bode Einführung in die Rechnerarchitektur Wintersemester 2016/2017 Tutorübung

Mehr

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Die Programmiersprache C Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 14. Mai 2015 Hallo, Welt! main() { printf("hallo, Welt!\n"); } main:

Mehr

Rechnerstrukturen, Teil 1. Vorlesung 4 SWS WS 15/16

Rechnerstrukturen, Teil 1. Vorlesung 4 SWS WS 15/16 Rechnerstrukturen, Teil 1 Vorlesung 4 SWS WS 15/16 Prof. Dr Jian-Jia Chen Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-.de http://ls1-www.cs.tu-.de Übersicht

Mehr

Vorlesung 1 Medizininformatik. Sommersemester 2017

Vorlesung 1 Medizininformatik. Sommersemester 2017 Vorlesung 1 Medizininformatik Begrüssung und Einführung Medizininformatik () Vorlesung (2 SWS) Montags 8:30-10:00 Übung (1 SWS) 10:15-11:00 1. 24.4 1.5 2. 8.5 3. 15.5 4. 22.5 Computer Architecture Begrüssung,

Mehr

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik

Mehr

Rechnerorganisation 12. Vorlesung

Rechnerorganisation 12. Vorlesung Rechnerorganisation 12. Vorlesung Mathematische Grundlagen (1) Boolesche Algebren: BMA, BAA (2,3) Kombinatorische Schaltungen (4,5) Automaten (6,7) Sequentielle Schaltungen (8) Programmierbare Strukturen

Mehr

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011 Technische Universität Graz Institut tfür Angewandte Informationsverarbeitung und Kommunikationstechnologie Rechnerorganisation 2 TOY Karl C. Posch Karl.Posch@iaik.tugraz.at co1.ro_2003. 1 Ausblick. Erste

Mehr

"Organisation und Technologie von Rechensystemen 4"

Organisation und Technologie von Rechensystemen 4 Klausur OTRS-4, 29.09.2004 Seite 1 (12) INSTITUT FÜR INFORMATIK Lehrstuhl für Rechnerarchitektur (Informatik 3) Universität Erlangen-Nürnberg Martensstr. 3, 91058 Erlangen 29.09.2004 Klausur zu "Organisation

Mehr

4. Daten. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

4. Daten. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 4. Daten K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 19. Okt. 2015 Was ist Informatik? Begriffsbestimmung (Gegenstand): "Informatik ist die Wissenschaft... der maschinellen Verarbeitung,

Mehr

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Repräsentierung Rationaler Zahlen Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 19. Juni 2015 Rationale Zahlen Wie können wir Rationale

Mehr

Rückblick. Addition in der b-adischen Darstellung wie gewohnt. Informatik 1 / Kapitel 2: Grundlagen

Rückblick. Addition in der b-adischen Darstellung wie gewohnt. Informatik 1 / Kapitel 2: Grundlagen Rückblick Addition in der b-adischen Darstellung wie gewohnt 5 0 C E + D 4 2 D = 44 Rückblick Multiplikation in der b-adischen Darstellung wie gewohnt 1 0 1 0 1 0 1 = 45 Rückblick Darstellung negativer

Mehr

Klausur über den Stoff der Vorlesung Grundlagen der Informatik II (90 Minuten)

Klausur über den Stoff der Vorlesung Grundlagen der Informatik II (90 Minuten) Institut für Angewandte Informatik und Formale Beschreibungsverfahren 15.02.2010 Klausur über den Stoff der Vorlesung Grundlagen der Informatik II (90 Minuten) Name: Vorname: Matr.-Nr.: Semester: (WS 2009/10)

Mehr

Technische Informatik 1

Technische Informatik 1 Technische Informatik 1 2 Instruktionssatz Lothar Thiele Computer Engineering and Networks Laboratory Instruktionsverarbeitung 2 2 Übersetzung Das Kapitel 2 der Vorlesung setzt sich mit der Maschinensprache

Mehr

Grundlagen der Informatik II Teil 2: Architektur von Rechensystemen

Grundlagen der Informatik II Teil 2: Architektur von Rechensystemen Grundlagen der Informatik II Teil 2: Architektur von Rechensystemen Friederike Pfeiffer-Bohnen Micaela Wünsche Marlon Braun Lukas König Professor Dr. Hartmut Schmeck KIT Die Forschungsuniversität in der

Mehr

Übungsblatt 10 (Block C 2) (16 Punkte)

Übungsblatt 10 (Block C 2) (16 Punkte) georg.von-der-brueggen [ ] tu-dortmund.de ulrich.gabor [ ] tu-dortmund.de pascal.libuschewski [ ] tu-dortmund.de Übung zur Vorlesung Rechnerstrukturen Wintersemester 2016 Übungsblatt 10 (Block C 2) (16

Mehr

Selbststudium Informationssysteme - H1102 Christian Bontekoe & Felix Rohrer

Selbststudium Informationssysteme - H1102 Christian Bontekoe & Felix Rohrer Übung RA, Kapitel 1.5 1. Beantworten Sie bitte folgende Repetitionsfragen 1. Beschreiben Sie in eigenen Worten und mit einer Skizze die Schichtung einer Multilevel Maschine. Folie 5, rechte Seite 2. Welche

Mehr

Übung Praktische Informatik II

Übung Praktische Informatik II Übung Praktische Informatik II FSS 2009 Benjamin Guthier Lehrstuhl für Praktische Informatik IV Universität Mannheim guthier@pi4.informatik.uni-mannheim.de 20.03.09 4-1 Heutige große Übung Ankündigung

Mehr

Organisatorisches (1)

Organisatorisches (1) Organisatorisches (1) Abteilung Echtzeitsysteme und Kommunikation Prof. Dr. Nett nett@ivs.cs.uni-magdeburg.de Sekretariat: Frau Duckstein, Tel. 67-18345 pduckste@ivs.cs.uni-magdeburg.de Gebäude 29/ Etage

Mehr

Rechner- organisa-on 2 TOY. Karl C. Posch.

Rechner- organisa-on 2 TOY. Karl C. Posch. Rechner- Technische Universität Graz Ins-tut für Angewandte Informa-onsverarbeitung und Kommunika-onstechnologie organisa-on 2 TOY Karl C. Posch Karl.Posch@iaik.tugraz.at co1.ro_2012. Ausblick. Erste HälEe

Mehr

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU Datenpfad einer einfachen MIPS CPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19 Betrachten nun Load und Store Word Erinnerung, Instruktionen lw und sw sind vom I Typ Format:

Mehr

Zum Nachdenken. Welche Eigenschaften einer Vorzeichendarstellung. erreichen? Wie könnte man Vorzeichenzahlen darstellen?

Zum Nachdenken. Welche Eigenschaften einer Vorzeichendarstellung. erreichen? Wie könnte man Vorzeichenzahlen darstellen? TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Zum Nachdenken Welche Eigenschaften einer Vorzeichendarstellung könnte man versuchen zu erreichen? Wie könnte man Vorzeichenzahlen darstellen? Grundlagen

Mehr

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 9. Juli 2015 Eine Aufgabe aus der Praxis Gegeben ein bestimmtes Programm: Machen Sie dieses

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik (Wintersemester 2008/2009) Jörg Roth Jörg Roth 2 0 Motivation und Überblick Drei große Bereiche der Vorlesung: Darstellung von Zahlen in Rechnern Verarbeitung von Binärdaten auf

Mehr

Prinzipieller Aufbau und Funktionsweise eines Prozessors

Prinzipieller Aufbau und Funktionsweise eines Prozessors Prinzipieller Aufbau und Funktionsweise eines Prozessors [Technische Informatik Eine Einführung] Univ.- Lehrstuhl für Technische Informatik Institut für Informatik Martin-Luther-Universität Halle-Wittenberg

Mehr

1. TÜ-Zusammenfassung zum Modul Computersysteme

1. TÜ-Zusammenfassung zum Modul Computersysteme 1. TÜ-Zusammenfassung zum Modul Computersysteme Kurzzusammenfassung 1. Kapitel Netzteil: Aufbau: Bereitgestellte Spannungen: 12V, -12V, 5V, -5V und 3.3V Leistung: Da bei Transformatoren die übertragbare

Mehr

Strings. Daten aus Dateien einlesen und in Dateien speichern.

Strings. Daten aus Dateien einlesen und in Dateien speichern. Strings. Daten aus Dateien einlesen und in Dateien speichern. Strings Ein String ist eine Zeichenkette, welche von MATLAB nicht als Programmcode interpretiert wird. Der Ausdruck 'a' ist ein String bestehend

Mehr

B: Basis des Zahlensystems 0 a i < B a i є N 0 B є (N > 1) Z = a 0 B 0 + a 1 B 1 + a 2 B a n-1 B n-1

B: Basis des Zahlensystems 0 a i < B a i є N 0 B є (N > 1) Z = a 0 B 0 + a 1 B 1 + a 2 B a n-1 B n-1 Polyadisches Zahlensystem B: Basis des Zahlensystems 0 a i < B a i є N 0 B є (N > 1) Ganze Zahlen: n-1 Z= a i B i i=0 Z = a 0 B 0 + a 1 B 1 + a 2 B 2 +... + a n-1 B n-1 Rationale Zahlen: n-1 Z= a i B i

Mehr

Lösungsvorschlag zu 1. Übung

Lösungsvorschlag zu 1. Übung Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zu 1. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche der Aussagen treffen auf jeden

Mehr

Technische Grundlagen der Informatik 2 SS Einleitung. R. Hoffmann FG Rechnerarchitektur Technische Universität Darmstadt E-1

Technische Grundlagen der Informatik 2 SS Einleitung. R. Hoffmann FG Rechnerarchitektur Technische Universität Darmstadt E-1 E-1 Technische Grundlagen der Informatik 2 SS 2009 Einleitung R. Hoffmann FG Rechnerarchitektur Technische Universität Darmstadt Lernziel E-2 Verstehen lernen, wie ein Rechner auf der Mikroarchitektur-Ebene

Mehr

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU Datenpfad einer einfachen MIPS CPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19 Betrachten nun Load und Store Word Erinnerung, Instruktionen lw und sw sind vom I Typ Format:

Mehr

Übungen zur Vorlesung Technische Informatik I, SS 2002 Hauck / Guenkova-Luy / Prager / Chen Übungsblatt 5 Rechenwerke / Scheduling

Übungen zur Vorlesung Technische Informatik I, SS 2002 Hauck / Guenkova-Luy / Prager / Chen Übungsblatt 5 Rechenwerke / Scheduling Übungen zur Vorlesung Technische Informatik I, SS 2002 Hauck / Guenkova-Luy / Prager / Chen Übungsblatt 5 Rechenwerke / Scheduling Aufgabe 1: Sie haben in der Vorlesung einen hypothetischen Prozessor kennen

Mehr

Rechnernetze I SS 2017 Rechnernetze I (1/13) Rechnernetze I SS 2017 Datendarstellung Rechnernetze I (10/13)

Rechnernetze I SS 2017 Rechnernetze I (1/13) Rechnernetze I SS 2017 Datendarstellung Rechnernetze I (10/13) Rechnernetze I SS 2017 Universität Siegen rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 13. Juli 2017 Betriebssysteme / verteilte Systeme Rechnernetze I (1/13) i Rechnernetze

Mehr

Wie groß ist die Page Table?

Wie groß ist die Page Table? Wie groß ist die Page Table? Im vorigen (typischen) Beispiel verwenden wir 20 Bits zum indizieren der Page Table. Typischerweise spendiert man 32 Bits pro Tabellen Zeile (im Vorigen Beispiel brauchten

Mehr

Einführung. Saalübung Informatik II SS Einführung. Einführung

Einführung. Saalübung Informatik II SS Einführung. Einführung Saalübung Informatik II SS 2006 SPIM-Assembler Teil 1 Einführung Übung zur SPIM-Assemblerprogrammierung Assembler ist die elementare Sprache eines Prozessors Assemblerbefehle repräsentieren die Basisoperationen

Mehr

Rechnerorganisation 12. Vorlesung

Rechnerorganisation 12. Vorlesung Rechnerorganisation 12. Vorlesung Mathematische Grundlagen (1) Boolesche Algebren: BMA, BAA (2,3) Kombinatorische Schaltungen (4,5) Automaten (6,7) Sequentielle Schaltungen (8) Programmierbare Strukturen

Mehr

Compilerbau + Virtuelle Maschinen

Compilerbau + Virtuelle Maschinen Helmut Seidl Compilerbau + Virtuelle Maschinen München Sommersemester 2009 1 Organisatorisches Der erste Abschnitt Die Übersetzung von C ist den Vorlesungen Compilerbau und Virtuelle Maschinen gemeinsam

Mehr

Von-Neumann-Architektur

Von-Neumann-Architektur Von-Neumann-Architektur Bisher wichtig: Konstruktionsprinzip des Rechenwerkes und Leitwerkes. Neu: Größerer Arbeitsspeicher Ein- und Ausgabewerk (Peripherie) Rechenwerk (ALU) Steuerwerk (CU) Speicher...ppppp...dddddd..

Mehr

ERA-Zentralübung Maschinenprogrammierung

ERA-Zentralübung Maschinenprogrammierung ERA-Zentralübung Maschinenprogrammierung M. Meyer LRR TU München 27.10.2017 Arithmetik mit 80386 Inhalt Rechenmodell Register Befehle Beispiele 80386-Rechenmodell Typisches Zwei-Address-Format Ziel :=

Mehr

Der von Neumann Computer

Der von Neumann Computer Der von Neumann Computer Grundlagen moderner Computer Technologie 1 Der moderne Computer ein weites Spektrum Typ Preis Anwendungsbeispiel embeded Computer 10-20 $ in Autos, Uhren,... Spielcomputer 100-200$

Mehr

Rechnerorganisation 12. Vorlesung

Rechnerorganisation 12. Vorlesung Rechnerorganisation 12. Vorlesung Mathematische Grundlagen (1) Boolesche Algebren: BMA, BAA (2,3) Kombinatorische Schaltungen (4,5) Automaten (6,7) Sequentielle Schaltungen (8) Programmierbare Strukturen

Mehr

Rechnerorganisation 12. Vorlesung

Rechnerorganisation 12. Vorlesung Rechnerorganisation 12. Vorlesung Mathematische Grundlagen (1) Boolesche Algebren: BMA, BAA (2,3) Kombinatorische Schaltungen (4,5) Automaten (6,7) Sequentielle Schaltungen (8) Programmierbare Strukturen

Mehr

7. Übung zur Vorlesung Grundlagen der Informatik

7. Übung zur Vorlesung Grundlagen der Informatik 7. Übung zur Vorlesung Grundlagen der Informatik 13.Interne Darstellung von Daten In der Vorlesung wurde bereits darauf hingewiesen, dass ein Rechner intern lediglich die Zustände 0 (kein Signal liegt

Mehr

Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen Darstellung ganzer Zahlen

Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen Darstellung ganzer Zahlen 3 Zahlendarstellung - Zahlensysteme - b-adische Darstellung natürlicher Zahlen - Komplementbildung - Darstellung ganzer und reeller Zahlen Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen......

Mehr

Grundlagen der technischen Informatik

Grundlagen der technischen Informatik Prof. Dr. Dieter Kranzlmüller Dr. Nils gentschen Felde Dr. Karl Fürlinger Stephan Reiter Christian Straube Grundlagen der technischen Informatik Workshop im Rahmen des Informatik-Probestudiums 2012 1 Überblick/Agenda

Mehr

Assembler - Adressierungsarten

Assembler - Adressierungsarten Assembler - Adressierungsarten Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Adressierungsarten 1/31 2008-04-01

Mehr

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

Mehr

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 9. Juli 2015 Der MIPS-Prozessor MIPS R2000, von iamretro.gr Kurze Geschichte der MIPS-Architektur

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Steuerwerk einer CPU. Einführung in die Technische Informatik Falko Dressler, Stefan Podlipnig Universität Innsbruck

Steuerwerk einer CPU. Einführung in die Technische Informatik Falko Dressler, Stefan Podlipnig Universität Innsbruck Steuerwerk einer CPU Einführung in die Technische Informatik Falko Dressler, Stefan Podlipnig Universität Innsbruck Übersicht Implementierung des Datenpfads Direkte Implementierung Mikroprogrammierung

Mehr

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen).

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen). Schreiben von Pages Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen). Write Through Strategie (siehe Abschnitt über Caching) ist hier somit nicht sinnvoll. Eine sinnvolle

Mehr

######################### Zeichenkette auswerten ###################################

######################### Zeichenkette auswerten ################################### Informatik 3 Übung 06 Georg Kuschk 6.3) MIPS #Aufgabe 6.3) #Georg Kuschk #ACHTUNG : Da laut Forum davon ausgegangen werden soll, dass der Eingabewert, # falls er denn kleiner gleich 10 Stellen besitzt,

Mehr

Fundamentale Ideen der Informatik PH Weingarten Sommersemester 2014 Paul Libbrecht CC-BY

Fundamentale Ideen der Informatik PH Weingarten Sommersemester 2014 Paul Libbrecht CC-BY Fundamentale Ideen der Informatik PH Weingarten Sommersemester 2014 Paul Libbrecht CC-BY Vorlesung 6: Repräsentationen Themenkarte Verschlüsselung Netzwerk Versionierung Programmverlauf Java Instruktionen

Mehr

Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke

Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke Informatik I: Einführung in die Programmierung 3. Werte,, n und Albert-Ludwigs-Universität Freiburg Peter Thiemann 30. Oktober 2018 1 30. Oktober 2018 P. Thiemann Info I 3 / 39 Bits Der Computer repräsentiert

Mehr

Mikroprozessortechnik Grundlagen 1

Mikroprozessortechnik Grundlagen 1 Grundlagen - Grundbegriffe, Aufbau, Rechnerarchitekturen, Bus, Speicher - Maschinencode, Zahlendarstellung, Datentypen - ATMELmega28 Progammierung in C - Vergleich C und C++ - Anatomie eines µc-programmes

Mehr

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes Grundlagen der Informatik III Wintersemester 2010/2011 4. Vorlesung Dr.-Ing. Wolfgang Heenes int main() { printf("hello, world!"); return 0; } msg: main:.data.asciiz "Hello, world!".text.globl main la

Mehr

3.1 Architektur des von-neumann-rechners. 3. Grundlagen der Rechnerarchitektur

3.1 Architektur des von-neumann-rechners. 3. Grundlagen der Rechnerarchitektur 3. Grundlagen der Rechnerarchitektur 3.1 Architektur des von-neumann-rechners 3.1 Architektur des von - Neumann - Rechners 3.2 Maschinentypen: Einadressmaschine, Zweiadressmaschine 3.3 Befehlsformate und

Mehr

Hello World! Eine Einführung in das Programmieren Variablen

Hello World! Eine Einführung in das Programmieren Variablen Hello World! Eine Einführung in das Programmieren Variablen Görschwin Fey Institute of Embedded Systems Hamburg University of Technology Slide 2 Wie werden Daten in Programmen gespeichert und manipuliert?

Mehr

Fachbereich Medienproduktion

Fachbereich Medienproduktion Fachbereich Medienproduktion Herzlich willkommen zur Vorlesung im Studienfach: Grundlagen der Informatik Themenübersicht Rechnertechnik und IT Sicherheit Grundlagen der Rechnertechnik Prozessorarchitekturen

Mehr

RO-Tutorien 15 und 16

RO-Tutorien 15 und 16 Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 5 am 25.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Abschnitt 2: Daten und Algorithmen

Abschnitt 2: Daten und Algorithmen Abschnitt 2: Daten und Algorithmen 2. Daten und Algorithmen 2.1 Zeichenreihen 2.2 Datendarstellung durch Zeichenreihen 2.3 Syntaxdefinitionen 2.4 Algorithmen 2 Daten und Algorithmen Einf. Progr. (WS 08/09)

Mehr

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik Einführung in die Programmiertechnik Darstellung von Text Plain Text Abstraktion: Text wird durch eine Folge von Symbolen (Buchstaben, Zahlen, Interpunktion) dargestellt Verzicht auf Informationen über

Mehr