Betriebssystembau (BSB)

Größe: px
Ab Seite anzeigen:

Download "Betriebssystembau (BSB)"

Transkript

1 Betriebssystembau (BSB) 4. Übung Olaf Spinczyk AG Eingebettete System Informatik 12, TU Dortmund

2 Agenda Aufgabe 3 Tipps und Tricks Aufgabe 4 Überblick IA-32 Assemblerprogrammierung Schnittstelle C zu Assembler 2

3 Agenda Aufgabe 3 Tipps und Tricks Aufgabe 4 Überblick IA-32 Assemblerprogrammierung Schnittstelle C zu Assembler 3

4 Prolog/Epilog-Modell Ablaufbeispiel t1 t5 enter E0 E½ t2 t3 t4 consume t6 leave E11-Unterbrechungen werden nie gesperrt. produce buf[...] epilogue relay E1 prologue Aktivierungslatenz der Unterbrechungsbehandlung ist minimal. handler 1 Anwendungskontrollfluss betritt Epilogebene E½ (enter). 2 Unterbrechung auf Ebene E1 wird signalisiert, Prolog wird ausgeführt. 3 Prolog fordert Epilog für die nachgeordnete Bearbeitung an (relay). 4 Prolog terminiert, unterbrochener E½-Kontrollfluss (Anwendung) läuft weiter. 5 Anwendungskontrollfluss verlässt die Epilogebene E½ (leave), zwischenzeitlich aufgelaufene Epiloge werden abgearbeitet. 6 Epilog terminiert, Anwendungskontrollfluss fährt auf E0 fort. 4

5 Aufgabe 3: Tipps und Tricks Epilog-Queue Guard::leave() Wann darf die Funktion verlassen werden? Gate::queued() Zugriffe müssen synchronisiert werden! Wie? Was soll diese Funktion? Interaktion zwischen Prolog und Epilog Muss hier auch synchronisiert werden? 5

6 Agenda Aufgabe 3 Tipps und Tricks Aufgabe 4 Überblick IA-32 Assemblerprogrammierung Schnittstelle C zu Assembler 6

7 Aufgabe 4: Überblick Eine erste Kontrollflussabstraktion. Ein kooperativer Scheduler (FCFS) 7

8 Scheduler Beschreibung Der Scheduler verwaltet die Ready-Liste (ein privates Queue Objekt der Klasse), also die Liste der lauffähigen Prozesse (Entrant Objekte). Die Liste wird von vorne nach hinten abgearbeitet. Dabei werden Prozesse, die neu im System sind oder den Prozessor abgeben, stets an das Ende der Liste angefügt. Öffentliche Methoden void ready (Entrant& that) Mit dieser Methode wird der Prozess that beim Scheduler angemeldet. Er wird an das Ende der Ready-Liste angefügt. void schedule () Diese Methode setzt das Scheduling in Gang, indem der erste Prozess von der Ready-Liste entfernt und aktiviert wird. void exit () Hiermit kann sich ein Prozess selbst beenden. Er wird nun nicht wieder an das Ende der Ready-Liste angefügt. Statt dessen wird nur der erste Prozess von der Ready-Liste heruntergenommen und aktiviert. void kill (Entrant& that) Mit dieser Methode kann ein Prozess einen anderen (that) beenden. Der Prozess that wird einfach von der Ready-Liste entfernt und erhält somit nie wieder den Prozessor. void resume () Hiermit kann ein Prozesswechsel ausgelöst werden, ohne dass der aufrufende Entrant wissen muss, welche anderen Entrant Objekte im System existieren und welcher davon sinnvollerweise aktiviert werden sollte. 8

9 Aufgabe 4: Überblick Hier spielt die Musik! 9

10 Agenda Aufgabe 3 Tipps und Tricks Aufgabe 4 Überblick IA-32 Assemblerprogrammierung Schnittstelle C zu Assembler 10

11 Was ist ein Assembler? Ein (einfacher) Compiler, der den Code eines Assemblerprogramms in Maschinensprache umsetzt Komfortabler zu programmieren: Assemblerprogramm = menschenlesbare Instruktionen Maschinenprogramm = binäre Darstellung der Instruktionen Statt der Bitfolge kann der Programmierer schreiben: add ax, 1000 Es existiert also eine (nahezu) eindeutige Abbildung von Assemblerbefehlen zu binären Maschineninstruktionen: Symbolische Bezeichnung Maschinencode add ax (dez.) jede CPU-Architektur hat also ihren speziellen Assembler 11

12 Was ist ein Assembler? Achtung zusätzlich vertauscht der Assembler noch die Reihenfolge der Bytes des Parameters: add ax low byte (1. Byte) (2. Byte) high byte (3. Byte) little endian byte order (niederwertiges Byte an kleinerer Adresse) bei x86! Unter Assembler versteht man also sowohl... die symbolische Darstellung der Maschinensprachebefehle wie auch... das Übersetzerprogramm, das die symbolische Darstellung in die vom Prozessor verstandene Binärdarstellung umsetzt 12

13 Was kann ein Assembler? Im Gegensatz zu echten (Hochsprachen-)Compilern kann ein Assembler nur sehr wenige komplexe Ausdrücke umsetzen. Die Sprache, die der Assembler versteht, entspricht den im Instruktionssatz der jeweiligen CPU verfügbaren Instruktionen Manche Assembler können allerdings zur Assemblier-Zeit auch einfache Berechnungen durchführen und besitzen einen simplen Präprozessor Konstrukte höherer Programmiersprachen werden vom Compiler in einfachere Instruktionen umgesetzt: keine komplexen Anweisungen keine komfortablen Schleifen meist nur goto -Äquivalente keine strukturierten Datentypen keine Unterprogramme mit Parameterübergabe 13

14 Übersetzungsvorgang Der Assembler steht also als Komponente zwischen Compiler und Linker Er liest vom Compiler erzeugten AssemblerQuelltext und erzeugt daraus Objektcode-Dateien, die die zugehörigen binären Maschineninstruktionen und Daten enthalten Diese Objektdateien werden (meist) vom Linker zu einem fertigen ausführbaren Programm verbunden 14

15 Beispiel Die C-Anweisung summe = a + b + c + d; ist für einen Assembler zu kompliziert und muss daher in mehrere Anweisungen aufgeteilt werde Der 80x86 Assembler kann immer nur zwei Zahlen addieren und das Ergebnis in einer der beiden verwendeten "Variablen" (Akkumulatorregister) speichern. Dieses C-Programm entspricht von der Struktur her also eher einem Assemblerprogramm: summe summe summe summe = = = = a; summe + b; summe + c; summe + d; 15

16 Beispiel Dieses Programm summe summe summe summe = = = = a; summe + b; summe + c; summe + d; mov add add add eax, eax, eax, eax, würde in 80x86-Assembler z.b. so aussehen: [a] [b] [c] [d] Assembler unterstützten also nur primitive Operationen Die meisten Assembler arbeiten zeilenorientiert eine Zeile entspricht einer Maschinenanweisung kein Semikolon o.ä. am Ende der Zeile notwendig 16

17 Kontrollanweisungen: if Einfache if-then-else-konstrukte sind für Assembler auch schon zu komplex: if ( a == 4711 ) {... } else {... } In 80x86-Assembler sieht das wie folgt aus: cmp eax, 4711 jne ungleich gleich:... jmp weiter ungleich:... weiter: vergleiche eax mit 4711 ungleich -> springe sonst hier weiter else-zweig auslassen else-zweig danach geht's weiter 17

18 Schleifen: einfache for -Schleife Simple Zählschleifen werden vom 80x86 schon besser unterstützt: for (i=0; i <100; i++) { summe = summe + a; }...in Assembler: mov schleife: add loop ecx, 100 eax, [a] schleife Der Loop-Befehl dekrementiert implizit das ecx-register und führt den Sprung nur dann aus, wenn der Inhalt von ecx anschließend nicht 0 ist 18

19 Was ist ein Register? In Assembler existieren keine beliebigen Variablen. Werte als Parameter/Ergebnisse aktueller Berechnungen müssen in CPU-Registern gehalten werden Ein Register ist ein extrem schneller, sehr kleiner Zwischenspeicher innerhalb der CPU, der (beim 80x86) bis zu 32 Bits speichern kann Die eigentlichen Variablen der Hochsprache werden vom Compiler zu Speicherplätzen im Datensegment der Objektcode-Datei zugeordnet Um eine Berechnung mit Variablen durchführen zu können, muss erst der Wert aus der jeweiligen Speicherzelle in ein Register geladen werden Nicht alle Variablen passen gleichzeitig in die wenigen Register! Es existiert also eine zeitlich sich verändernde Zuordnung Register <=> Variable 19

20 8086: Registersatz Befehls- und Stapelzeiger Flag Register IP 0 FLAG SP Vielzweckregister 15 Segmentregister AH AL CS BH BL SS Code Stack CH CL DS Data DH DL ES Extra SI DI BP 20

21 Jedes Vielzweckregister erfüllt seinen speziellen Zweck 8086: Registersatz Befehls- und Stapelzeiger 15 0 IP Vielzweckregister 15 AL BH BL CH CL DH DL BP 0 AH DI AX: Accumulator Register arithmetisch-logische Operationen I/OFlag Register kürzester Maschinencode 0 15 FLAG BX: Base Address Register SP SI CX: Count Register für LOOP Befehl Segmentregister für String Operationen mit REP 15 0 für Bit Shift und Rotate CS Code Stack SS Register DX: Data DX:AX DS sind 32 Bit für MUL/DIVData Portnummer für IN und OUT Extra ES SI, DI: Index Register für Array-Zugriffe (Displacement) BP: Base Pointer 21

22 80386: Registersatz (Erweiterungen) erweiterte Register heißen aus Kompatibilitätsgründen E... Befehls- und Stapelzeiger EIP ESP Flag Register 0 IP 31 0 FLAG EFLAG SP Vielzweckregister EAX EBX ECX EDX ESI EDI EBP AH AL BH BL CH CL DH DL SI DI Segmentregister 15 Code Stack Data Extra Extra Extra 0 CS SS DS ES FS GS BP Erweiterung zum

23 Speicher Meistens reichen Register alleine zur Lösung eines Problems nicht aus Zugriff auf den Hauptspeicher ist erforderlich Der Hauptspeicher ist wie ein riesiges Array aus Registern, die wahlweise 8, 16 oder 32 Bit breit sind Ein Byte ist die kleinste adressierbare Einheit Speicherzellen werden durchnummeriert => Index Die Zugriffsgeschwindigkeit auf den Hauptspeicher ist zwei Zehnerpotenzen langsamer als die Zugriffsgeschwindigkeit auf Register Um auf einen Wert im Hauptspeicher zugreifen zu können, muss der Programmierer den Index des Wertes im Speicher kennen. Dieser ist die Adresse des Wertes Der Hauptspeicher wird in Bytes von 0 an aufsteigend indiziert 23

24 Speicher Beispiel: [SECTION.data] gruss: db 'hello, world' unglueck: dw 13 million: dd [SECTION.text] mov ax, [million] Achtung Fehler: Es muss mov eax,[million] lauten. 24

25 Der Stack Variablen, die festen Speicherzellen zugeordnet sind, sind von allen Teilen des Assemblerprogramms aus zugreifbar (über die Adresse oder einen zugeordneten symbolischen Namen, ein sog. Label) => globale Variablen! Für bestimmte Zwecke werden aber nicht-globale Variable benötigt Speicherschutz zwischen Funktionen / Objekten Rekursiv aufrufbare Funktionen Für diesen Fall wird ein Notizzettel benötigt, der die aktuellen Werte so lange behält, wie sie benötigt werden dies ist ein dynamisch allozierter Speicherbereich auf dem sogenannten Stack (Stapel) Der Stack ist ein Stück Hauptspeicher, auf dem nicht mit festen, sondern nur mit relativen Adressen gearbeitet wird 25

26 Der Stack Werte werden mit der push-operation oben auf den Stack gelegt, die pop-operation entfernt den obersten Wert wieder vom Stack dabei ist die aktuelle Adresse, an der push/pop operieren, in einem speziellen Register, dem sog. Stack Pointer (Register: esp) gespeichert der Programmierer muss sich aber nicht um den konkreten Wert des Stack Pointers kümmern man muss sich also nur die Reihenfolge merken, in der man Werte auf den Stack gelegt hat 26

27 Adressierungsarten Die meisten Befehle des 80x86 können Operanden wahlweise aus Registern, aus dem Speicher oder direkt einer Konstante entnehmen Beim mov-befehl sind (u.a.) folgende Formen möglich, wobei der erste Operand stets das Ziel und der zweite stets die Quelle der Operation angeben: Registeradressierung der Wert eines Registers wird in ein anderes übertragen: mov ebx, edi Unmittelbare Adressierung eine Konstante wird in ein Register übertragen: mov ebx, 1000 Direkte Adressierung der Wert, der an der angegebenen Speicherstelle steht, wird ins Register übertragen: mov ebx, [1000] Register-indirekte Adressierung der Wert, der an der Speicherstelle steht, die durch das zweite Register bezeichnet wird, wird in das erste Register übertragen: mov ebx, [eax] Basis-Register Adressierung Der Wert, der an der Speicherstelle steht, die sich durch die Summe des Inhalts des zweiten Registers und der Konstanten ergibt, wird in das erste Register übertragen: mov eax,[10+esi] 27

28 IA-32: Adressierungsarten Effektive Adressen (EA) werden nach einem einfachen Schema gebildet alle Vielzweckregister können dabei gleichwertig verwendet werden EA EA = = Basis-Reg. Basis-Reg. + + (Index-Reg. (Index-Reg. ** Scale) Scale) + + Displacement Displacement EAX EBX ECX EDX ESP EBP ESI EDI EAX EBX ECX EDX --EBP ESI EDI Bit Wert 32 Bit Wert EA Beispiel: MOV EAX, Feld[ESI * 4] Lesen aus Feld mit 4 Byte großen Elementen und ESI als Index 28

29 Funktionen Aus den höheren Programmiersprachen ist das Konzept der Funktion oder Prozedur bekannt Der Vorteil dieses Konzeptes gegenüber einem goto besteht darin, daß die Prozedur von jeder beliebigen Stelle im Programm aufgerufen werden kann und das Programm anschließend an genau der Stelle fortgesetzt wird, die nach dem Prozeduraufruf folgt Die Prozedur selbst muss nicht wissen, von wo sie aufgerufen wurde und wo es hinterher weiter geht. Das geschieht irgendwie automatisch Nicht nur die Daten des Programms, sondern auch das Programm selbst liegt im Hauptspeicher und somit gehört zu jeder Maschinencodeanweisung eine eigene Adresse Damit der Prozessor ein Programm ausführt, muss sein Befehlszeiger auf den Anfang des Programms zeigen, also die Adresse der ersten Maschinencodeanweisung in das spezielle Register Befehlszeiger (instruction pointer, eip) geladen werden. 29

30 Funktionen Der Prozessor wird dann den auf diese Weise bezeichneten Befehl ausführen und im Normalfall anschließend den Inhalt des Befehlszeigers um die Länge des Befehls im Speicher erhöhen, so dass er auf die nächste Maschinenanweisung zeigt Bei einem Sprungbefehl wird der Befehlszeiger nicht um die Länge des Befehls, sondern entweder auf die angegebene Zieladresse umgesetzt (absoluter Sprung) oder um die angegebene relative Zieladresse erhöht oder erniedrigt Um nun eine Funktion aufzurufen, wird zunächst einmal wie beim Sprungbefehl verfahren, nur dass der alte Wert des Befehlszeigers (+ Länge des Befehls) zuvor auf den Stack geschrieben wird. Am Ende der Funktion genügt dann ein Sprung an die auf dem Stack gespeicherte Adresse, um zu dem aufrufenden Programm zurückzukehren. 30

31 Funktionen Beim 80x86 erfolgt das Speichern der Rücksprungadresse auf dem Stack implizit mit Hilfe des call Befehls. Genauso führt der ret Befehl auch implizit einen Sprung an die auf dem Stack liegende Adresse durch: ; Hauptprogramm ---; main:... call f1 xy:... ; Funktion f1 f1:... ret 31

32 Funktionen 32

33 Funktionen Wenn die Funktion Parameter erhalten soll, werden diese üblicherweise ebenfalls auf den Stack geschrieben, natürlich vor dem call Befehl. Hinterher müssen sie natürlich wieder entfernt werden, entweder mit pop, oder durch direktes Umsetzen des Stack Pointers: push push call add eax ebx f1 esp, 8 ; zweiter Parameter für f1 ; erster Parameter für f1 ; Parameter vom Stack entfernen 33

34 Funktionen Um innerhalb der Funktion auf die Parameter zugreifen zu können, wird üblicherweise der Basepointer ebp zu Hilfe genommen. Wenn er gleich zu Anfang der Funktion gesichert und dann mit dem Wert des Stackpointers belegt wird, kann der erste Parameter immer über [ebp+8] und der zweite Parameter über [ebp+12] erreicht werden, unabhängig davon, wieviele push und pop Operationen seit Beginn der Funktion verwendet wurden. f1: push ebp mov ebp,esp... mov ebx,[ebp+8] mov eax,[ebp+12]... pop ebp ret ; 1. Parameter in ebx laden ; 2. Parameter in eax laden 34

35 Funktionen 35

36 Geschachtelte Prozeduraufrufe 36

37 Agenda Aufgabe 3 Tipps und Tricks Aufgabe 4 Überblick IA-32 Assemblerprogrammierung Schnittstelle C zu Assembler 37

38 Aufruf von Assemblerfunktionen Ein Label im Assembler-Code kann dem Linker bekannt gemacht werden auch die Adresse einer Funktion: ; EXPORTIERTE FUNKTIONEN [GLOBAL toc_switch] [GLOBAL toc_go] toc_go:... Nun kann ein C++-Programm die Funktion aufrufen Allerdings braucht der Compiler eine passende Deklaration extern C void toc_go (struct toc* regs); Der Parameter kann vom Assembler-Code über den Stack entgegengenommen werden. Nicht-flüchtige Register müssen ggf. gesichert werden! 38

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) 4. Übung http://ess.cs.tu-dortmund.de/de/teaching/ws2012/bsb/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik

Mehr

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) 4. Übung http://ess.cs.tu-dortmund.de/de/teaching/ws2015/bsb/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik

Mehr

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) 4. Übung https://ess.cs.tu-dortmund.de/de/teaching/ws2017/bsb/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de https://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik

Mehr

Übung zu Betriebssysteme

Übung zu Betriebssysteme Übung zu Betriebssysteme Threadumschaltung 6. & 8. Dezember 2017 Andreas Ziegler Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Verteilte Systeme

Mehr

Der Intel 8086 Reto Gurtner 2005

Der Intel 8086 Reto Gurtner 2005 Der Intel 8086 Reto Gurtner 2005 1 1. DIE INTERNEN REGISTER... 3 1.1 ALLGEMEINE REGISTER AX, BX, CX UND DX... 3 DAS AX-REGISTER... 4 DAS BX-REGISTER... 4 DAS CX-REGISTER... 5 DAS DX-REGISTER... 5 1.2 DIE

Mehr

Was kann ein Assembler?

Was kann ein Assembler? Assemblerprogrammierung Assembler und Maschinensprache Befehle und Pseudo-Befehle C-Konstrukte in Assembler übersetzt Aufrufkonventionen (ABI) Der netwide assembler nasm Binärformate Was ist ein Assembler?

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

Übung zu Betriebssysteme

Übung zu Betriebssysteme Übung zu Betriebssysteme Threadumschaltung 7. & 10. Dezember 2017 Andreas Ziegler Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Verteilte

Mehr

Betriebssystembau. 7. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund

Betriebssystembau. 7. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund Betriebssystembau 7. Übung Michael Engel Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund michael.engel@tu-dortmund.de http://ess.cs.uni-dortmund.de/~me/ 1 Agenda Coroutinen

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

Assembler. Dr.-Ing. Volkmar Sieh. Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg

Assembler. Dr.-Ing. Volkmar Sieh. Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg Assembler Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2017/2018 V. Sieh Assembler (WS16/17) 1 15 Einleitung

Mehr

Assembler Unterprogramme

Assembler Unterprogramme Assembler Unterprogramme Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler Unterprogramme 1/43 2008-06-03 Unterprogramme

Mehr

Assembler - Variablen

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

Mehr

ERA-Zentralübung Maschinenprogrammierung

ERA-Zentralübung Maschinenprogrammierung ERA-Zentralübung Maschinenprogrammierung M. Meyer LRR TU München 17.11.2017 Inhalt Aufgabe 3.1 Aufgabe 3.2 Aufgabe 3.3 Logische Operationen Schiebebefehle Weitere Befehle Registerübersicht Aufgabe 3.1

Mehr

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 1 / 53 Inhaltsverzeichnis 1 Einführung 2 Assembler Syntax, Register und Flags 3 Hauptspeicher 4 Stack 5 Assemblerbefehle

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 7. Vorlesung Dr.-Ing. Wolfgang Heenes int main() { printf("hello, world!"); return 0; } msg: main:.data.asciiz "Hello, world!".text.globl main la

Mehr

Kodieren von Anweisungen im Binärformat für Maschinen quasi natürlich, zumindest effizient. Für Menschen hingegen ist Binärformat schwierig

Kodieren von Anweisungen im Binärformat für Maschinen quasi natürlich, zumindest effizient. Für Menschen hingegen ist Binärformat schwierig 2.1 Einleitung Kodieren von Anweisungen im Binärformat für Maschinen quasi natürlich, zumindest effizient Hinsichtlich Zuverlässigkeit (digital vorteilhafter als analog) Für Menschen hingegen ist Binärformat

Mehr

Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7)

Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) J. Zhang zhang@informatik.uni-hamburg.de Universität Hamburg AB Technische Aspekte Multimodaler Systeme

Mehr

Rechnernetze und -Organisation. Teil B 2012 Tomislav Nad Karl C. Posch

Rechnernetze und -Organisation. Teil B 2012 Tomislav Nad Karl C. Posch Rechnernetze und -Organisation Teil B 2012 Tomislav Nad Karl C. Posch www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnernetze_und_organisation/ 1 Two different assemblers GNU Assembler as : Uses

Mehr

Assembler - Einleitung

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

Mehr

Rechnernetze und -Organisation. Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch

Rechnernetze und -Organisation. Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch Rechnernetz R Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnernetze_und_organisation/ 1 Zeitplan für Teil B Mittwoch 23. März 2011 Mittwoch

Mehr

Rechnerstrukturen Wintersemester 2002/03. Maschinensprache Opcode, Operanden, Adressierung Für Menschen schwer verdauliche Folgen von 0 und 1

Rechnerstrukturen Wintersemester 2002/03. Maschinensprache Opcode, Operanden, Adressierung Für Menschen schwer verdauliche Folgen von 0 und 1 (c) Peter Sturm, Universität Trier 1 Rechnerstrukturen 8. Assembler Für Hartgesottene Maschinensprache Opcode, Operanden, Adressierung Für Menschen schwer verdauliche Folgen von 0 und 1 Assembler Symbolische

Mehr

Rechnerne etze und -O Organisatio on

Rechnerne etze und -O Organisatio on Rechnernetze und -Organisation Rechnerne etze und -O Organisatio on Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnernetze_und_organisation/

Mehr

Maschinensprache. 2.5 x86 Speicherzugriff. Universität Mannheim

Maschinensprache. 2.5 x86 Speicherzugriff. Universität Mannheim Maschinensprache 2.5 x86 Speicherzugriff Hauptspeicher Speicheraufbau Linearer, zusammenhängender Adressraum Kleinste adressierbare Einheit: 1 Byte Unterteilung in physikalischen, linearen und virtuellen

Mehr

Rechnernetze und Organisation

Rechnernetze und Organisation Framework für Assignment A2 1 Übersicht Framework für Assignment A2 WH: Aufgabenstellung Klassen und Methoden Getting started Erste Instruktion aus Testdaten dekodieren 2 Aufgabenstellung Instruction-Set

Mehr

U23 Assembler Workshop

U23 Assembler Workshop Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface

Mehr

U23 - Shellcode. Twix Chaos Computer Club Cologne. Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides

U23 - Shellcode. Twix Chaos Computer Club Cologne.  Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides Twix e.v. http://koeln.ccc.de 2016-11-28 Überblick 1 Motivation Was ist Shellcode? Beispiel 2 Einstieg Erzeugen, Testen von Shellcode 3 Der erste Shellcode Strings in Shellcode 4 Nullbytes, NOP Slides

Mehr

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) 5. Übung http://ess.cs.tu-dortmund.de/de/teaching/ws2015/bsb/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik

Mehr

U23 Assembler Workshop

U23 Assembler Workshop Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface

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

Rechnerstrukturen. 7. Assembler. Inhalt. Vorlesung Rechnerstrukturen. Assemblerprogrammierung SML-CPU. SML-Assembler. Binden

Rechnerstrukturen. 7. Assembler. Inhalt. Vorlesung Rechnerstrukturen. Assemblerprogrammierung SML-CPU. SML-Assembler. Binden Rechnerstrukturen 7. Assembler Assemblerprogrammierung SML-CPU Inhalt SML-Assembler Adressierungsarten Instruktionssatz Assembler-Direktiven Binden 7.2 1 Maschinensprache Instruktion = Bitkombination Für

Mehr

x86-assemblerprogrammierung

x86-assemblerprogrammierung x86-assemblerprogrammierung Inhalt Literatur Register Speicherverwaltung Adressierung Stackverwaltung Datentypen und Befehlssatz Befehlskodierung Dandamudi : Intruduction to Assembly Language Programming

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

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) Das Programmiermodell der Intel IA-32 Architektur http://ess.cs.tu-.de/de/teaching/ws213/bsb/ Olaf Spinczyk olaf.spinczyk@tu-.de http://ess.cs.tu-.de/~os AG Eingebettete System

Mehr

Computersysteme. Stacks Anwendung in der Assembler-Programmierung

Computersysteme. Stacks Anwendung in der Assembler-Programmierung Computersysteme Stacks Anwendung in der Assembler-Programmierung 1 Unterprogramme Betrachten wir zunächst folgendes Programm m_mod_n : /Berechne m modulo n für positive Integerwerte m und n. /Beim Programmstart

Mehr

Daniel Betz Wintersemester 2011/12

Daniel Betz Wintersemester 2011/12 Daniel Betz Wintersemester 2011/12 Digitally signed by daniel.betz@daniel-betz.com Date: 2011.12.04 17:24:40 +01'00' Insgesamt 16 Register von je 16 Bit (=WORD) Breite Untere 8 Register auch als 2 Register

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

"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

H. Intel x86 CPU. Höhere Informatik. Systemprogrammierung: - Betriebssystemkonzepte, Ein- & Ausgabe

H. Intel x86 CPU. Höhere Informatik. Systemprogrammierung: - Betriebssystemkonzepte, Ein- & Ausgabe H. Intel x86 CPU Historische Entwicklung des x86 Registersatzes. Complex Instruction Set Computer (CISC), Deskriptoren & Adressierung, Cacheausstattung. Höhere Informatik Systemprogrammierung: - Betriebssystemkonzepte,

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 22: Mima-X Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik

Mehr

Betriebssysteme Teil 3: Laufzeitsystem für Programme

Betriebssysteme Teil 3: Laufzeitsystem für Programme Betriebssysteme Teil 3: Laufzeitsystem für Programme 23.10.15 1 Literatur [3-1] Stack: http://fbim.fh-regensburg.de/~hab39652/pg1/skriptum/ ausdruecke/maschinenmodell.html [3-2] https://de.wikipedia.org/wiki/dynamischer_speicher

Mehr

Technische Informatik I - HS 18

Technische Informatik I - HS 18 Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik I - HS 18 Musterlösung zu Übung 3 Datum : 25.-26. Oktober 2018 Aufgabe 1: Wurzelverfahren nach Heron Das

Mehr

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester 2016 Lorenz Schauer Mobile & Verteilte Systeme 12. Juli 2016 Agenda heute Grundlagen: Unterprogramme I Call-by-Value (CBV) vs. Call-by-Reference

Mehr

Stackmaschine; Speicheradressierung

Stackmaschine; Speicheradressierung Stackmaschine; Speicheradressierung Erweiterung um globalen Speicher (Heap, Halde) pro Speicherplatz eine Zahl. Notation ist als Array SP [0..]. Zugriff mittels Adresse (Index): eine Zahl i.a.: Zahlen

Mehr

... Adressierung und Befehlsfolgen (1) Speicherbelegung. Hauptspeicheradressen. Inhalt von Speicherbelegungen: Operanden - Zahlen - Zeichen Befehle

... Adressierung und Befehlsfolgen (1) Speicherbelegung. Hauptspeicheradressen. Inhalt von Speicherbelegungen: Operanden - Zahlen - Zeichen Befehle Adressierung und Befehlsfolgen (1) Speicherbelegung Hauptspeicheradressen Inhalt von Speicherbelegungen: Operanden - Zahlen - Zeichen Befehle Address 0 1 i k 2-1 n bits...... word 0 word 1 b n-1 b 1 b

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 Zentralübung

Mehr

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009 Einführung Übungen zur Vorlesung Virtuelle Maschinen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SoSe 2009 Übungsaufgaben 1 Entwickeln

Mehr

2. Aufgabenblatt Musterlösung

2. Aufgabenblatt Musterlösung 2. Aufgabenblatt Musterlösung Technische Informatik II Sommersemester 2011 Problem 2: Assembler Syntax Register eines 32-bit Intel-Prozessors: 16 bits 8 bits 8 bits general purpose registers EAX Accumulator

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

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) Das Programmiermodell der Intel IA-32 Architektur http://ess.cs.tu-dortmund.de/de/teaching/ws212/bsb/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os

Mehr

ERA-Zentralübung Maschinenprogrammierung

ERA-Zentralübung Maschinenprogrammierung Marcel Meyer LRR TU München 04.11.2016 Inhalt Aufgabe 1.1 Aufgabe 1.2 Speicherzugriffe Unbedingte Sprünge Stapelspeicher Unterprogramme Aufgabe 1.1 Quellregister AX, BX, CX Konstante deklarieren Werte

Mehr

Assembler DOS (Beta 1) Copyright 2000 Thomas Peschko. Assembler II - DOS. ASSEMBLER Arbeiten mit Dateien und Daten.

Assembler DOS (Beta 1) Copyright 2000 Thomas Peschko. Assembler II - DOS. ASSEMBLER Arbeiten mit Dateien und Daten. Assembler II - DOS ASSEMBLER Arbeiten mit Dateien und Daten peschko@aol.com 1 Wer nun den Eindruck hat, dass unsere Programme hauptsächlich nur Unterprogramme vor ihren Karren spannen und sich darauf beschränken

Mehr

Adressierungsarten des 6809 (Forts.)

Adressierungsarten des 6809 (Forts.) Adressierungsarten des 6809 (Forts.) Zusammenfassung zur indizierten Adressierung: 19 Beispiel-Programm 1 für 6809 6809-Assemblerprogramm zur Suche nach Leerzeichen (space, tab, return) in einem String:

Mehr

Vorlesung Rechnerarchitektur

Vorlesung Rechnerarchitektur Vorlesung Rechnerarchitektur Sommersemester 2017 Carsten Hahn 8. Juni 2017 Agenda Grundlagen: Wiederholung Kontroll-Strukturen Stack-Speicher Unterprogramme I Unterprogramme II Call-by-Value (CBV) vs.

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013. Vorlesung 9, Dienstag 18.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013. Vorlesung 9, Dienstag 18. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 9, Dienstag 18. Dezember 2012 (Performance Tuning, Profiling, Maschinencode) Prof. Dr.

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 Zentralübung

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

Rechnern netze und Organisatio on

Rechnern netze und Organisatio on Rechnernetze und Organisation Subroutines 1 Übersicht Motivation Bibliotheken Call und Return Stack Parameterübergabe Lokale Variablen Shared Libraries Interrupts und Exceptions 2 Reusability von Code

Mehr

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) Das Programmiermodell der Intel IA-32 Architektur Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os

Mehr

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems Mitglied der Zürcher Fachhochschule TIn 1: Lecture 4 Data transfer Feedback Laboratories Question: What is the IP? Why do we NEED an IP? Lecture 3: Lernziele Moving data, the why s and wherefores Moving

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

Unterprogramme. Unterprogramme

Unterprogramme. Unterprogramme Unterprogramme Unterprogramme wichtiges Hilfsmittel für mehrfach benötigte Programmabschnitte spielen in höheren Programmiersprachen eine wesentliche Rolle in Assembler sind bestimmte Konventionen nötig

Mehr

7 Laufzeit-Speicherverwaltung

7 Laufzeit-Speicherverwaltung 7.1 Grundlagen Bevor wir die Code-Generierung betrachten, müssen wir uns Gedanken über zur Laufzeit des zu generierenden Programms notwendige Aktivitäten zur Zuordnung und Freigabe von Speicherplatz machen.

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von

Mehr

Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab...

Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 2 1 1 2 0 2 1 0 Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 1 2 1 1 3 2 2 3 212 Um solche Tabellen leicht implementieren zu können, stellt Java das switch-statement

Mehr

Betriebssysteme (BS) IA-32. Überblick. das Programmiermodell der Intel Architektur. Historie der Intel x86 Prozessoren. 8086: Programmiermodell

Betriebssysteme (BS) IA-32. Überblick. das Programmiermodell der Intel Architektur. Historie der Intel x86 Prozessoren. 8086: Programmiermodell Betriebssysteme (BS) alias Betriebssystembau (BSB) IA-32 das Programmiermodell der Intel Architektur Überblick Historie Basisprogrammiermodell Speicherverwaltung und Adressierung Schutz "Tasks" Zusammenfassung

Mehr

9. Die Adressierungsarten des MSP 430

9. Die Adressierungsarten des MSP 430 9. Die Adressierungsarten 9.1 Übersicht über die Adressierungsarten 9.2 -Operanden 9.3 Indexregister mit Distanz 9.4 Symbolische (relativ zum ) 9.5 Absolute 9.6 Indirekte 9.7 Indirekte Adressierung mit

Mehr

Sprungbefehle und Kontroll-Strukturen

Sprungbefehle und Kontroll-Strukturen Sprungbefehle und Kontroll-Strukturen Statusregister und Flags Sprungbefehle Kontrollstrukturen Das Status-Register 1 Register-Satz des ATmega128 Universal-Register (8Bit) R0..R15 16 Bit Program counter

Mehr

1 Maschinenunabhängige Optimierungen. Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17

1 Maschinenunabhängige Optimierungen. Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17 1 Maschinenunabhängige Optimierungen Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17 Optimierungen Automatische Optimierungen sind nötig, weil unoptimierter Code meist besser lesbar ist.

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

TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Mikrocomputertechnik. Unterprogramm

Mikrocomputertechnik. Unterprogramm Unterprogramm Ein Teilproblem wird entweder zur mehrmaligen Verwendung oder zur Programmstrukturierung als Unterprogramm codiert. Ein Unterprogramm wird von einem übergeordneten Programm (Hauptprogramm)

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

Übung 1 - Betriebssysteme I

Übung 1 - Betriebssysteme I Prof. Dr. Th. Letschert FB MNI 13. März 2002 Aufgabe 0: Basiswissen Rechnerarchitektur: Übung 1 - Betriebssysteme I Aus welchen Komponenten besteht ein Rechner mit Von-Neumann Architektur? Was sind Bits

Mehr

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04. Kontrollstrukturen Informatik II SS 2004 Teil 4: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Institut für Informatik Prof.

Mehr

Assembler Tutorial Grundlagen und Theorie

Assembler Tutorial Grundlagen und Theorie Assembler Tutorial http://wwwamoknotrixde http://wwwamoknotrixde Vorwort In diesem Tutorial werden wir Grundlagenarbeit betreiben Diese besteht daraus, daß wir Begriffe wie Register, oder Stack erläutern

Mehr

Technische Informatik II Rechnerarchitektur

Technische Informatik II Rechnerarchitektur Technische Informatik II Rechnerarchitektur MMIX-Crashkurs Matthias Dräger, Markus Rudolph E-Mail: mdraeger@mi.fu-berlin.de rudolph@mi.fu-berlin.de www: tinyurl.com/mmix2010 www.matthias-draeger.info/lehre/sose2010ti2/mmix.php

Mehr

Informatik I (D-ITET)

Informatik I (D-ITET) //009 Informatik I (D-ITET) Übungsstunde 8, 6..009 simonmayer@student.ethz.ch ETH Zürich Besprechung/Vertiefung der Vorlesung [..009] ArrayStack Ausgezeichnet Einige haben s etwas kompliziert gemacht clear()

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:

Mehr

Rechnerorganisation. (10,11) Informationskodierung (12,13,14) TECHNISCHE UNIVERSITÄT ILMENAU. IHS, H.- D. Wuttke `09

Rechnerorganisation. (10,11) Informationskodierung (12,13,14) TECHNISCHE UNIVERSITÄT ILMENAU. IHS, H.- D. Wuttke `09 Rechnerorganisation Mathematische Grundlagen (1) Boolesche Algebren: : BMA, BAA (2,3) Kombinatorische Schaltungen (4,5) Automaten (6,7) Sequentielle Schaltungen (8) Programmierbare Strukturen (9) Rechneraufbau

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:

Mehr

PC/XT/AT ASSEMBLER-BUCH

PC/XT/AT ASSEMBLER-BUCH PC/XT/AT ASSEMBLER-BUCH Alle Befehle + Makro-Assembler KLAUS-DIETER THIES t

Mehr

MMX Varianten der Arithmetik

MMX Varianten der Arithmetik MMX Varianten der Arithmetik Arithmetik wahlweise im Wraparound-Modus: Unter- bzw. Überläufe werden abgeschnitten und nur die niederwertigen (dargestellten) Bits abgebildet F000h a2 a1 a0 + + + + 3000h

Mehr

Rechnergrundlagen SS Vorlesung

Rechnergrundlagen SS Vorlesung Rechnergrundlagen SS 2007 10. Vorlesung Inhalt Rechenwerk (ALU) Steuerwerk Instruktionssatz-Architekturen Assembler-Programmierung Synchroner/asynchroner Systembus RISC vs. CISC Kontrollfluss/Datenfluss

Mehr

7 Ein einfacher CISC-Prozessor

7 Ein einfacher CISC-Prozessor 7 Ein einfacher CISC-Prozessor In diesem Kapitel wird ein einfacher Prozessor vorgestellt. Die Architektur, die wir implementieren, wurde von R. Bryant und D. O Hallaron entworfen und verwendet eine Untermenge

Mehr

Das Kontrollfluss-Diagramm für Ò ¼ µ:

Das Kontrollfluss-Diagramm für Ò ¼ µ: Das Kontrollfluss-Diagramm für Ò ¼ µ: find0(a,x,n1,n2) t = (n1+n2)/2; no a[t]==x yes no n1==n2 yes return t; no x > a[t] yes return 1; no n1 < t yes return find0(a,x,t+1,n2); return 1; return find0(a,x,n1,t

Mehr

Karlsruher Institut für Technologie

Karlsruher Institut für Technologie Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt

Mehr

20 Task-Management Was bleibt noch zu tun? Wird ein Poolelement in die Queue aufgenommen, dann muß der Poolelemente-Zähler inkrementiert werden. Dies erledigt die Anweisung pool_kopf_adr -> anzahl_der.pool_elemente

Mehr