Maschinenorientierte Programmierung

Werbung
Maschinenorientierte Programmierung
Prof. Dr. Sven-Hendrik Voß | Sommersemester 2017
Technische Informatik (Bachelor), Semester 2
Termin 2, 24.04.2017
Seite 2
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Inhaltsverzeichnis
Themen und Termine
Lernziele
Typische externe Architekturen
Befehlsausführung
Adressierungsarten
Rechnerarchitektur und Programmierung
Assemblerdirektiven
Zusammenfassung
Sommersemester 2017
Seite 3
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Themen und Termine - Seminaristischer Unterricht
Seminaristischer Unterricht (SU): Zug 1 im Raum B-401, montags 10:00 11:30 Uhr, Zug 2 im Raum B-321, montags 12:15 - 13:45 Uhr
Termin
1
2
3
4
5
6
7
8
9
10
11
12
13
Datum
10.04.
17.04.
24.04.
01.05.
08.05.
15.05.
22.05.
29.05.
05.06.
12.06.
19.06.
26.06.
03.07.
10.07.
17.07.
24.07.
Themen
Organisatorisches, Einführung Rechnerarchitekturen
Ostermontag
Organisationsprinzipien und Adressierung
Tag der Arbeit
Programmiermodell des 8051 Mikrocontrollers
Assemblersyntax des 8051
Assemblersyntax und Betriebsmodi des 8051
I/O Port-Programmierung, Umgang mit Instruktionen und Programme
Pfingstmontag
Interrupt-Programmierung
Timer- und Counter-Programmierung
Aufbau und Programmierung von seriellen Kommunikationsschnittstellen
Benutzung der seriellen Schnittstelle, Timer, Interrupts
Praxisbeispiele
Klausur
Klausurrückgabe und Besprechung
Seite 4
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Themen und Termine - Laborübung
Laborübung(UE): Zug 1 dienstags 10:00 - 13:00 Uhr (180 Minuten) im Raum
B-341 in Gruppen A und B (wöchentlicher Wechsel)
Nr.
1
2
3
4
5
Datum
25.04. / 09.05.
16.05. / 23.05.
30.05. / 13.06.
20.06. / 27.06.
04.07. / 11.07.
Themen
Einführung; Programmierung in Pseudocode
Umgang mit Assembler-Befehlen; Programmanalyse
Adressierungsarten, Verzögerungsschleifen, Funktionsaufrufe
I/O Operationen, Zählerimplementierung, 7-Segment-Anzeige
Stack, Lookup-Tables, Timer, Interrupts
Seite 5
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Themen und Termine - Laborübung
Zug 2 montags 14:15 - 15:45 Uhr (90 Minuten) im Raum B-341 in einer
Gruppe (wöchentlich)
Nr.
1
2
3
4
5
Datum
24.04. / 08.05.
15.05. / 22.05.
29.05. / 12.06.
19.06. / 26.06.
03.07. / 10.07.
Themen
Einführung; Programmierung in Pseudocode
Umgang mit Assembler-Befehlen; Programmanalyse
Adressierungsarten, Verzögerungsschleifen, Funktionsaufrufe
I/O Operationen, Zählerimplementierung, 7-Segment-Anzeige
Stack, Lookup-Tables, Timer, Interrupts
Seite 6
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Lernziele
Nach diesem Termin sollten Sie...
I
die unterschiedlichen Befehlssatz-Architekturen klassifizieren können
I
die einzelnen Phasen der Befehlsausführung verstanden haben
I
zwischen verschiedenen Adressierungsarten unterscheiden können
I
die Hierarchie von Programmiersprachen kennen
I
die Vorteile und Eigenarten von maschinennaher Programmierung
verstanden haben
Organisationsprinzipien und Adressierung |
Seite 7
Maschinenorientierte Programmierung |
Sommersemester 2017
Typische externe Architekturen
Externe Architektur
I
Maschinenbefehlssatz
Software
I
Maschinenbefehle:
Elementaroperationen
Befehlssatz
externe
Architektur
Hardware
interne
Architektur
Interne Architektur
I
innerer Hardwareaufbau eines
Rechners
Universalprozessoren
I
für alle Anwendungen
I
von einfachem Assembler- /
C-Programm bis zum Compiler,
Betriebssystem, Datenbank,
Textverarbeitung
Universalprozessor
Seite 8
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Typische externe Architekturen
Zusammenspiel externer und interner Architektur
I
externe Architektur legt durch Maschinenbefehlssatz fest, wie ein
Rechner von der Seite der Software her angesprochen werden kann
⇒ für Codegenerierung maßgebliche Schnittstelle
I
Implementierung des Maschinenbefehlssatzes durch die interne
Architektur
⇒ interne Architektur bezieht sich auf internen Aufbau und
Organisationsprinzip eines Rechners
I
Einfluß des Maschinenbefehlssatzes auf Effizienz und Kosten
→ möglichst kostengünstige Implementierung des
Maschinenbefehlssatzes (wenig Hardware)
→ möglichst effiziente Implementierung des Maschinenbefehlssatzes
(geringe Rechenzeit)
Seite 9
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Typische externe Architekturen
Klassifizierung externer Architekturen (Maschinenbefehlssätze)
I
Anzahl der Operanden pro Befehl (Zweiadress-, Dreiadress-Befehle)
I
Residenz von Operanden (Register, Speicher, Stack)
I
Typ und Länge der Operanden
I
Operationsvorrat
Beispielklassen (Unterscheidung je nachdem wie viele Register und wozu)
I
Akkumulator-Maschinen
I
Stack-Maschinen
I
Registersatz-Maschinen
→ Nachzulesen im Skript S. 32-38!
Seite 10
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Befehlsausführung
Verarbeitungsphasen eines Befehls am Beispiel
I
Annahme: einfache Akkumulatormaschine
I
Befehlsformat (→ Bedeutung von Feldern im Maschinenbefehl)
Maschinenbefehl
7
Befehlscode
AddiereBefehl à 7
24
Adresse 24
Addiere-Befehl holt den Wert unter der im Befehl angegebenen Adresse (im
Beispiel 24) und addiert ihn zum Inhalt
Seite 11
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Befehlsausführung
Vorher:
Maschinenbefehl
7
24
Adressen
ac
25
Daten, Befehle
Prozessor
24
200
Speicher
Nachher:
Adressen
ac
225
Daten, Befehle
Prozessor
24
200
Speicher
Befehlscode
AddiereBefehl à 7
Adresse 24
Seite 12
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Befehlsausführung
Struktur:
I
pc (program counter, auch ip: instruction pointer): Befehlszähler
I
ir (instruction register): Befehlsregister
I
or (operand register): Speicheradressregister
I
ac (accumulator): Arbeitsregister
pc
ir
or
ac
Prozessor
Adressen
Daten, Befehle
Speicher
Seite 13
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Befehlsausführung
1. Befehlsholphase (instruction fetch, IF)
pc
73
ir 7 24
or
25
ac
Prozessor
Adressen
7 24
Daten, Befehle
Speicher
Befehlszähler (program counter) zeigt Speicheradresse des nächsten
auszuführenden Befehls an.
Befehl wird aus dem Speicher geholt und in Befehlsregister (instruction
register) geladen.
Seite 14
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Befehlsausführung
2. Befehl dekodieren (instruction decode, ID)
pc
73
ir 7 24
or
ac
Adressen
7 24
Daten, Befehle
25
Prozessor
Speicher
Interpretation des aktuellen Befehls aus Befehlsregister (instruction register)
In Abhängigkeit vom Befehlsregister verzweigt die Ablaufsteuerung zur
weiteren Befehlsverarbeitung
Seite 15
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Befehlsausführung
3. Operand holen (operand fetch, OF)
pc
73
ir 7 24
or
ac
200
25
Prozessor
Adressen
Daten, Befehle
7 24
24
200
Speicher
Holen des Operanden aus Registern oder Berechnen einer effektiven
Adresse gemäß im Befehl enthaltener Adresse
Speicheradressregister (operand register) wird zum Holen und Ablegen des
Operanden genutzt.
Seite 16
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Befehlsausführung
4. Befehl ausführen (instruction execute, EX)
pc
73
ir 7 24
or
ac
200
225
Prozessor
Adressen
Daten, Befehle
7 24
24
200
Speicher
Ausführen des Befehls
Verändern des Operanden im Arbeitsregister (accumulator): Operand wird
mit ac-Inhalt addiert und nach ac gespeichert
ggf. Zurückschreiben des Ergebnisses in Register oder Lesen/Schreiben des
Hauptspeichers
Seite 17
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Befehlsausführung
Befehlszähler inkrementieren (als separater Schritt oder parallel)
pc
74
1
ir 7 24
or
200
ac
225
Prozessor
Adressen
Daten, Befehle
7 24
24
200
Speicher
Seite 18
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Befehlsausführung
Resultat
pc
74
ir 7 24
or
ac
200
225
Prozessor
Adressen
Daten, Befehle
7 24
24
200
Speicher
Seite 19
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Befehlsausführung
Befehlsablauf (auch: Befehlszyklus) folgt sequentieller Befehlsfolge
Befehlsablauf ist streng seriell und folgt von-Neumann-Schema
Jeder Befehlszyklus besteht aus einer Anzahl von Teilschritten
I
Anzahl der Teilschritte für unterschiedliche Befehle verschieden
I
Zeitdauer der einzelnen Befehle unterschiedlich
I
Befehlszyklus 6= Maschinenzyklen
Seite 20
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Adressierungsarten
CPU kann Daten auf Daten auf verschiedene Arten zugreifen
Adressierungsarten legen die Art des Datenzugriffs fest
Beim 8051 Mikrocontroller (Akkumulatormaschine) gibt es folgende
Adressierungsmöglichkeiten:
I
I
I
I
I
Unmittelbare (Immediate) Adressierung (Direkt-Wert)
Register-Adressierung
Direkte Adressierung
Register-indirekte Adressierung
Indizierte Adressierung
Sie unterscheiden sich in
I
I
I
Anzahl benötigter Befehls-Bytes
Befehlsausführungszeit
möglichen Zugriffszielen
Hinweis: in vielen Assemblern übliche Notation
# bedeutet Konstante
@ bedeutet indirekte Adressierung
Seite 21
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Adressierungsarten
Adress.-Art
Unmittelbare
Adressierung
Beispiel
MOV R1, #15
RegisterAdressierung
MOV A, R0
Direkte Adress.
MOV R0, 35h
MOV R0, symb Adr
Registerindirekte
Adressierung
MOV A, @R0
Indizierte
Adressierung
MOVC A,@A+DPTR
A
...
R1
R0
Prozessor
Speicher
Seite 22
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Adressierungsarten
Zusammenfassung zu den Adressierungsarten
Programmspeicher (Code)
Unmittelbare
Adressierung
Operand
RegisterAdressierung
Registerbezeichner
Direkte
Adressierung
ganze
Adresse
Register-indirekte
Adressierung
Registerbezeichner
Register des
Prozessors
Datenspeicher
Operand
Operand
Adresse
Operand
Seite 23
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Rechnerarchitektur und Programmierung
Lehrgebiete der Rechnerarchitektur und maschinennahen Programmierung
eng miteinander verbunden
I
zum Programmieren auf blanker Hardware müssen deren Wirkprinzipien
klar sein
I
grundsätzlicher Aufbau des Universalrechners bereits behandelt
I
einzelne Funktionseinheiten bereits diskutiert
Im Folgenden...
I
Einführung in Grundlagen der Assemblerprogrammierung
I
Einarbeitung in eine bestimmte Hardware (8051 Mikrocontroller)
I
Kennenlernen der spezifischen Assemblersyntax
Seite 24
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Rechnerarchitektur und Programmierung
Hochsprachen
Objektorientierte
Sprache
(C++, C#, Java, ...)
Deklarative Sprache
(SQL, Prolog, ... )
SELECT * FROM Tabelle
Prozedurale/Imperative
Sprache (Pascal, C, ...)
IF a > 0 THEN ...
Maschinennahe Sprache
(Assembler)
ADDL R0,R1
Maschinensprache
01000111100011...
Sprachen der
5. Generation
Objekte - Attribute, Methoden,
Klassen, Klassenhierarchien,
Vererbung
Sprachen der
4. Generation
inhaltsorientiert, nicht ablauforientiert, anwendernah,
Berichtsgeneratoren, ...
Sprachen der
3. Generation
ablauforientiert, Kontrollstrukturen, Unterprogramme,
komplexe Datentypen, ...
Sprachen der
2. Generation
prozessorspezifisch,
Einzelbefehle
Sprachen der
1. Generation
prozessorspezifisch,
Kombination aus Bits
Seite 25
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Rechnerarchitektur und Programmierung
Weshalb maschinennahe Programmierung?
I
Nutzung maschinenspezifischer Besonderheiten
I
maximale Ausnutzung der Hardware (höchstes Leistungsvermögen oder
geringster Aufwand)
I
Umgehung von Unzulänglichkeiten (Workarounds)
I
vermittelt grundlegendes Erfahrungswissen zum Verstehen, Beurteilen
und Auswählen von Prozessorarchitekturen
→ in der Praxis nach wie vor erforderlich!
Seite 26
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Maschinenprogramm
Hexadezimalcode
I
hexadezimaler Maschinencode kann direkt von der CPU als Programm
ausgeführt werden
I
vom Hersteller festgelegt und Datenbüchern zu entnehmen
I
Maschinencode ist im Speicher abgelegt
I
Prozessor liest jede Anweisung (Befehl) und führt ihn aus
I
Daten ebenfalls im Speicher aufbewahrt
I
Prozessor kann die Daten lesen, speichern und über die
Ein-/Ausgabesteuerung einlesen und ausgeben
Beispiel für 8051-Maschinencode:
Code
74h
E5h
Bedeutung
kopiere den nachfolgenden Wert (Konstante, hexadezimal) direkt
in das A-Register des Rechenwerks
kopiere den Inhalt der Speicherzelle in das A-Register, deren
Adresse in der nachfolgenden RAM-Speicherzelle genannt wird
Seite 27
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Assemblerprogramm
Assemblermnemonik
I
Verwendung von auf das Ziel hinweisende Befehlsworte statt Zahlen
I
Assembler übersetzt die Befehlsworte eins zu eins in die
entsprechenden Zahlen des Maschinencodes
I
Warum ist das möglich? Assembler so aufgebaut, dass Programme fast
unverändert in Maschinensprache transformiert werden können!
I
Befehle nennt man Assemblermnemonik der CPU
Beispiel für gleiches Programm in Assemblermnemonik:
Code
74 22
Assemblermnemonik
mov A, #22h
E5 22
mov A, 22h
Bedeutung
kopiere die Konstante 22h direkt in das
A-Register des Rechenwerks
kopiere den Inhalt der Speicherzelle 22h
direkt in das A-Register des Rechenwerks
Maschinenbefehle 74h und E5h beinhalten bereits das Ziel (A-Register) des
Kopiervorgangs und Anweisung zum Umgang mit dem Parameter
Seite 28
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Assemblerdirektiven
Befehle an das Übersetzerprogramm
I
Befehle zur Steuerung des Verhaltens des Übersetzerprogramms
(Assembler und Linker)
I
nicht Bestandteil des Befehlssatzes
I
Befehle richten sich nicht an die CPU
I
ermöglichen die Definition von Symbolen, Reservierung von
Speicherplatz, Platzierung von Programmcode...
I
nur während der Übersetzung der Assemblermnemonik in
Maschinensprache von Bedeutung
I
Befehle tauchen im fertigen Maschinenprogramm nicht mehr auf
I
abhängig vom verwendeten Assemblerprogramm
Seite 29
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Assemblerdirektiven
Beispiel für Assemblerdirektiven: Befehle org und end
#22 (dezimal) = 0x16h
!
Seite 30
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Assemblerdirektiven
Assemblerbefehle blau dargestellt!
I
richten sich an die CPU
I
CPU soll ihren Akkumulator A mit der Zahl 22 laden (Zeilen 3A und 3C)
I
Zahl soll anschließend in die Speicherzelle DPH übertragen werden
I
Zeilennummern gehören nicht zum Quelltext
Assemblerdirektiven violett dargestellt!
I
steuern die Übersetzung der Assemblerbefehle durch den Assembler
I
org 03Ah Befehl stellt Assembler so ein, dass dieser das Programm ab
Speicherzelle 03Ah ablegt
I
end Befehl sagt Assembler, dass er nicht weiter übersetzen soll
I
weitere Zeilen dahinter werden nicht mehr übersetzt
I
Direktiven des a51-Assembler
Seite 31
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Zusammenfassung
Heute haben Sie gelernt...
I
wie man externe Architekturen (Maschinenbefehlssätze) klassifiziert
I
welche unterschiedlichen Befehlssatz-Architekturen es gibt und was
jeweils charakteristisch für diese ist
I
in welchen Phasen die Befehlsausführung abläuft
I
welche Arten der Adressierung es gibt und wie man sie erkennt
I
wie man von einem Assemblerprogramm zum Maschinenprogramm
kommt
Seite 32
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Ausblick auf nächste Stunde
In der nächsten Stunde widmen wir uns...
I
dem Aufbau des Mikrocontrollers 8051
I
dem Programmiermodell des 8051 Mikrocontrollers
I
dem Speichermodell und den unterschiedlichen Zugriffsarten
Seite 33
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Hinweise zum Selbststudium
Zur Vertiefung wird empfohlen...
I
MOP-Skript
I
Klaus Wüst: Mikroprozessortechnik: Grundlagen, Architekturen,
Schaltungstechnik und Betrieb von Mikroprozessoren und
Mikrocontrollern, Vieweg und Teubner, ISBN 3834809063
Seite 34
Organisationsprinzipien und Adressierung |
Maschinenorientierte Programmierung |
Sommersemester 2017
Kritik
Nun sind Sie dran:
I
Kritik: Was funktioniert gut / was schlecht?
I
Anregungen
I
Wünsche
I
Verbesserungsvorschläge in Bezug auf Inhalt und Organisation der
Vorlesung
Herunterladen