Rechnerarchitektur und Betriebssysteme (CS201): Memory Map, Stack, Prozeduraufruf, Calling Convent.
|
|
|
- Hennie Waltz
- vor 9 Jahren
- Abrufe
Transkript
1 Rechnerarchitektur und Betriebssysteme (CS201): Memory Map, Stack, Prozeduraufruf, Calling Convent. 19. Oktober 2012 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel Wiederholung / Diskussion 1. Wie hängen Wort- und Adressgrösse zusammen? Bsp: Ein x86-prozessor hat 32-Bits Worte und 32-Bits-Adressen. Der AVR-µPRozessor hat 8-Bits-Worte: wieviele Adress-Bits? 2. Warum gibt es beim AVR-Prozessor keinen Befehl inc <memoryaddr>? 3. Was sind Adressierungsmodi einer CPU? 4. Welchen Inhalt hat beim AVR-Prozessor die Speicherzelle, auf die der Stackpointer (SP) zeigt? c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 2/37
2 Uebersicht Memory Map Stack Verwendung des Stacks für Prozeduraufruf: calling conventions I/O (input/output): Peripheriegeräte und Bus Assemblerinstruktionen für I/O c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 3/37 Speicheradressen des Datensegments (Memory Map) 0x0100 0x10ff Stack 4096 Hauptspeicher Zellen (SRAM) 0x0060 0x00ff 0x0020 0x005f 0x0000 0x001f 8 Bits 160 "extended IO" Registers 64 "Input/Output" Register 32 "general purpose" Register c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 4/37
3 Stack-Maschinen Operationen meist nur im Register wegen Geschwindigkeit (Speicherzugriff) Stack wird aber als Zwischenablage verwendet Beispiel: 3 * ( fct(4) + fct(5) ) sei zu berechnen Umsetzung: push 3 call fct(4) (Resultat auf dem Stack) call fct(5) (Resultat auf dem Stack) pop r1 / pop r2 / add r1,r2 / pop r2 / mult r1,r2 Heutige CPUs sind keine reinen Stackmaschinen, aber beinahe c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 5/37 Infix, Postfix und Prefix-Notation Arithmetische Ausdrücke in verschiedenen Darstellungen: Normale (Infix-) Notation: 3 mult (4 plus 5) Postfix Notation: plus mult reine Stackmaschine keine Register nötig keine Klammern auch bekannt als RPN reverse polnish notation Grundlage von PostScript, Forth Prefix Notation: (mult 3 (plus 4 5)) z.b. in LISP, Tcl c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 6/37
4 Exkurs: Postfix-Notation funktioniert auch für Code C: if ( test(a) ) { stmt1; } else { stmt2; } Umsetzung in Postfixnotation (PostScript) a % push a test % call: Funktion wird Resultat auf dem Stack lassen { stmt1 } % dies setzt einen Codeblock auf den Stack { stmt2 } % dies setzt einen Codeblock auf den Stack ifelse % erwartet 3 Argumente auf dem Stack, führt einen % der Codeblocks aus gemäss 3. Wert auf Stack Vorteil: keine Labels nötig c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 7/37 Postfix-Order abarbeiten (mit Register) infix: a + b * c + (d * e + f) * g postfix: a b c * + d e * f + g * + Initialisiere Stack DO Lese Postfix-Ausdruck Symbol für Symbol IF nächstes Symbol ein Operand THEN push Operand IF nächstes Symbol ein Operator THEN pop von zwei Operanden vom Stack (z.b. in Register) wende Operator an push des Resultats FI OD Schlussresultat auf dem Stack c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 8/37
5 Postfix-Order erzeugen Compiler-Arbeit infix: a + b * c + (d * e + f) * g postfix: a b c * + d e * f + g * + + Syntaxbaum des (Infix-) Ausdrucks erzeugen + + * Baum depth first traversieren (siehe Algo&Daten) * * a b c d e f g dabei Operator (eines Knotens) am Schluss ausgeben. c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 9/37 Subroutinen s1: call s1 nop ret Code an Adresse s1 soll mehrfach verwendet werden können. c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 10/37
6 (r)call und ret: Stack für Rücksprung-Adresse nutzen call: legt das Wort PC + 1 auf den Stack, SP (Stack-Ptr) wird um 2 verkleinert (post-decrement) setzt PC (Prog-Counter) auf die Adresse der Subroutine ret: erhöhe SP um 2 (pre-increment) ersetzt PC mit Stackwort, auf den SP zeigt rcall S1... S1:... Code von S1... ret c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 11/37 Prozedur-Aufruf Beispiel mit max() C: void max() { if (r1 > r2) r3 = r1; else r3 = r2; } max: cp r2, r1 ; Prozedur max() brge L1 mov r3, r1 rjmp L2 L1: mov r3, r2 L2: ret... main: rcall max ; Prozeduraufruf c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 12/37
7 Prozedur-Aufruf ohne Stackpointer! Rücksprung-Adresse muss nicht auf dem Stack abgelegt werden. Statt rcall max (mit impliziter Benutzung des Stacks): Rücksprungadresse in Reg (oder Hauptspeicher) ablegen. Beispiel mit Register Z (r30:r31) max: cp r2, r1... L2: ijmp ; indirect Jump: benutzt Inhalt von Reg Z main: ldi r30, LOW(next) ldi r31, HIGH(next) rjmp max next:... ; statt rcall c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 13/37 Prozedur-Aufruf ohne Stackpointer! (Forts) Problem: Nur 1 Register Z vorhanden: was, falls max() eine zweite Prozedur aufrufen muss? Für jeden Aufruf (!) einen separaten Speicherplatz, um Rücksprung abzulegen Damit ist aber keine Rekursion möglich. ( frühes Fortran) Man könnte die separaten Speicherplätze wie einen Stapel verwalten (Rekursion auch ohne CPU- Stackpointer ist möglich) c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 14/37
8 Parameter-Uebergabe für Prozeduren/Funktion C: int max(int a, int b) { return a > b? a : b } Aehnliche Diskussion wie bei Rücksprungadresse: Ein-/ausgehende Werte: Stapel, Register oder Hauptspeicher? Praxis: a) einfache Param/Funktionswerte (z.b. int) via Register b) Liste von Eingabeparameter auf dem Stack übergeben Beispiel: ldi r24, 5 clr r25 rcall max mov r18, r24 ; Konvention: r24:r25 für 16-Bit Resultate c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 15/37 Parameter-Uebergabe Weitere Anforderungen Prozedur hat lokale Variablen Arbeitsregister müssen temporär gesichert werden Calling Convention : wer ist für die Register-Sicherung zuständig? Stack Frame : Speicherauslegeordnung einer Prozedur Rücksprungadresse gesicherte Arbeitsregister lokale Variablen c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 16/37
9 Stack Frame (C-Stil) Framepointer Stackpointer Param N Param N 1... Param 1 Rücksprungadresse alter Framepointer lokale Variablen alte Reg Werte Zwischenwerte "callee frame" "caller frame" Stackpointer für: Zwischenwerte, Rücksprungadresse Framepointer (FP) FP erlaubt Zugriff auf Parameter, sowie lokale Variablen mit (bekanntem) relativem Offset c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 17/37 Historische Bemerkung: Pascal vs C-Parameterübergabe Pascal: PROCEDURE proc(a, b: INTEGER);... Aufruf:... proc(3, 4); C: proc(int a, int b,...);... Aufruf:... proc(3, 4, 5, 6); Das heisst: C erlaubt variable Parameterzahl, siehe printf( hello %s, world ); Dies bedingt, dass C die Parameter in umgekehrter Reihenfolge auf den Stack legt. Deshalb ist auch die Ausführordnung in C unbestimmt. c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 18/37
10 Funktionsaufruf und Parameter-Uebergabe Ablauf beim Caller : Arbeitsregister sichern soviel Parameter wie möglich in Register, sonst Stack Rücksprungadresse sichern, Aufruf Ergebniss aus dem r24:r25 Register lesen Ablauf beim Callee : Prolog: FP sicher, Param kopieren, neuer FP+SP, Reg sichern Code abarbeiten Resultat in richtige Register schieben Epilog: Reg restaurieren, FP zurücksetzen, Stack räumen c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 19/37 Beispiel für Framepointer-Verwendung C: fct() { char a;... } AVR-Konvention: Y-Register (r28:r29) als Frame Pointer AVR-Konvention: Framepointer zeigt auf unterste lokale Variable push r29 ; sichere alten Framepointer push r29 in r28, SP_L ; low Byte des Stackpointers in r29, SP_H ; high Byte sbiw r28, 1 ; erniedrige SP-Wert um 1 (für a ): FP-Wert!... ; Register-Param kopieren und SP neu setzen Bemerkung: SP wird durch eine IO-Operation gelesen, siehe IO c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 20/37
11 C-Compiler für AVR-CPU Crosscompiler Wird auf einem Host-Rechner ausgeführt (z.b. Intel x86, Linux) Erzeugt aber Code für eine andere Architektur, wie AVR gcc unterstützt auch AVR: spezielle Version des Kompilers, muss speziell installiert werden Aufruf (um Assembler-Code zu generieren, liegt in test.s vor): /opt/cdk4avr/bin/avr-gcc -S test.c c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 21/37 Beispiel main() { unsigned char a; a = 5; return 10 * a; } main: /* prologue: frame size=1 */ ldi r28,lo8( stack - 1) ldi r29,hi8( stack - 1) out SP_H,r29 out SP_L,r28 /* prologue end (size=4) */ ldi r24,lo8(5) std Y+1,r24 ldd r24,y+1 mov r18,r24 clr r19 mov r25,r19 mov r24,r18 ; --> Forsetzung rechte Spalte lsl r24 rol r25 lsl r24 rol r25 lsl r24 rol r25 add r24,r18 adc r25,r19 add r18,r24 adc r19,r25 mov r25,r19 mov r24,r18 /* epilogue: frame size=1 */ rjmp exit /* epilogue end (size=1) */ c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 22/37
12 Beispiel main() { unsigned char a; a=5; return 10*a; } (Forts.) Der Compiler, das unbekannte Wesen... Zuerst % avr-gcc -S test.c Dann % avr-gcc -O9 -S test.c ausführen und jeweils test.s anschauen c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 23/37 Peripherie-Bausteine Bisher gesehen: CPU Cache Daten- und Adress-Bus (externer) Speicher Wie wird eine CPU mit der externen Welt verbunden? Maus, Tastatur, Bidlschirm Hard Disk Netzwerk Ein-/Ausgabegeräte (I/O devices, IO=input/output) c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 24/37
13 Ein-Ausgabegeräte Ein-Ausgabegeräte brauchen Daten-, Adress- und Kontrollleitungen Adresse: selektiert das Gerät, welche Datenbereiche Daten: Ein-/Ausgabe von Daten zum Prozessor/zum Speicher Kontrolle: um den Datenaustausch zu steuern (Zeitpunkt, Handshake) c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 25/37 Peripherie-Elektronik Peripherie umfasst: Bus adapter: verbindet ein Gerät mit dem/einem Computer-Bus erkennt CPU-Befehle puffert Daten Gerätespezifische Elektronik Sensoren, Aktuatoren elektrische Signalübersetzung/anpassung ev auch komplexe Kontrolleinheit (eigene µc für HD) c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 26/37
14 Kommunikation zwischen CPU und Peripherie Direct (programmed) I/O (programmierte Ein-/Ausgabe) CPU legt spezielle Befehle auf den Bus read/write für Ports ein Port selektiert das I/O-Geräte Port-Befehle werden von der Geräte-Elektronik erkannt, diese wird dann antworten (statt zb der Speicher-Chip) Beispiele: Lese ein Byte von I/O-Port 0x2f8 Schreibe ein 32-Bit-Wort an Port 0x400 c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 27/37 Kommunikation zwischen CPU und Peripherie (II) Memory mapped I/O: Bus-Adapter des Geräts sieht wie Speicher aus CPU setzt gewöhnliche Lese/Schreib-Operationen ein (Speicher-) Adresse selektiert das Gerät I/O read/write-befehle sind auf Speicheroperationen abgebildet Beispiel: schreibe 2 KB in den Videospeicher neuer Bildschirminhalt c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 28/37
15 Kommunikation zwischen CPU und Peripherie (III) Direct memory access (DMA) : CPU initialisiert den Transfer nur: Daten gehen direkt vom Speicher zur Peripherie, DMA generiert Adressen DMA wickelt Transfer ab, CPU arbeitet parallel weiter. DMA ist eine Art Co-Prozessor für Speicherkopieren. addr bus CPU init DMA IO device memory data bus c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 29/37 Versch. Bus-Architekturen c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 30/37
16 Verschiedene Bus-Architekturen (II) Memory Processor Bus: schnell kurz ev CPU-spezifisch Backplane Bus: erweiterbar für ein oder mehrere Peripheriegeräte standardisiertes elektrisches Interface standardisiertes Datenaustausch-Protokoll c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 31/37 Beispiel eines I/O-Gerätes: Serieller Port UART = universal asynchronous receiver/transmitter CPU schreibt ein Byte (liegt parallel an), serieller Port muss es Bit für Bit aussenden Zu bestimmende Parameter: Bit-Geschwindigkeit Kodierung Kontrolleitungen (Modem ready, clear-to-send etc) UART empfängt auch die Bits: muss ein Bit nach dem anderen speichern und als ein komplettes Byte der CPU anbieten c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 32/37
17 Serieller Port (Forts.) c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 33/37 2tes Beispiel eines IO-Gerätes: Hard Drive Mögliche Harddrive-Befehle: Lese+Schreibarm auf spezifischem Zylinder positionieren Abfrage der aktuellen Arm-Position Lesen und Schreiben von Datensektoren Abfragen der physikalischen Charakteristiken # Tracks, Modellname, Hersteller, etc. Low-level-Test starten c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 34/37
18 I/O beim AVR Chip I/O-Bausteine auf dem µc-chip integriert! Total 53 I/O-Leitungen, mit zum Teil mehrfachen Funktionen (entweder Digital-Port, Analog-Port, Daten- oder Adressleitung etc) PORTA bis PORTF: sechs 8-Bit Ports jeweils 3 Register pro Port A F: DDRA..DDRF (Data Direction Register): Ein- oder Ausgang? PORTA..PORTF (Port Data): Output PINA..PINF (Port Input) c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 35/37 I/O beim AVR Chip: Memory Mapped Ports + Register Die meisten Ports sind auch via Register/Memory zugreifbar, und umgekehrt sind spezielle Register via Ports veränderbar. port mem name... $3E ($5E) SPH (stack pointer high) $3D ($5D) SPL (stack pointer low)... $03 ($23) PORTE $02 ($22) DDRE $01 ($21) PINE Deshalb: Stack-Pointer lesen mit in r28, 0x3d in r29, 0x3e c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 36/37
19 Speicheradressen des Datensegments (Memory Map) 0x0100 0x10ff Stack 4096 Hauptspeicher Zellen (SRAM) 0x0060 0x00ff 0x0020 0x005f 0x0000 0x001f 8 Bits 160 "extended IO" Registers 64 "Input/Output" Register 32 "general purpose" Register c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 37/37
Rechnerarchitektur und Betriebssysteme (CS201): Asm-Programmierung, Stack, Compiler
Rechnerarchitektur und Betriebssysteme (CS201): Asm-Programmierung, Stack, Compiler 11. November 2005 Prof. Dr. Christian Tschudin Departement Informatik, Universität Basel Wiederholung / Diskussion 1.
Rechnerarchitektur und Betriebssysteme (CS201): AVR-CPU und -Assembler
Rechnerarchitektur und Betriebssysteme (CS201): AVR-CPU und -Assembler 1. Oktober 2013 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel Wiederholung / Diskussion 1.
Teil Rechnerarchitekturen M05. AVR-CPU und Assembler, Memory Map, Stack, Prozeduraufruf, Calling Convention
Teil Rechnerarchitekturen M05 AVR-CPU und Assembler, Memory Map, Stack, Prozeduraufruf, Calling Convention Corinna Schmitt [email protected] AVR-CPU und -Assembler 2015 Corinna Schmitt Teil Rechnerarchitekturen
Rechnerarchitektur und Betriebssysteme (CS201): Peripheriebausteine, IO, Interrupts und Timer
Rechnerarchitektur und Betriebssysteme (CS201): Peripheriebausteine, IO, Interrupts und Timer 8. Oktober 2013 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel Wiederholung
B1 Stapelspeicher (stack)
B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen
Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures
Vorbesprechung U8 Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Basistypen Alignment der Basistypen auf deren Grösse Grössen (abhängig
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
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
Theorie der Informatik (CS206) Kellerautomat, Postfix-Notation, Turing-Maschine, Busy Beaver
Theorie der Informatik (CS206) Kellerautomat, Postfix-Notation, Turing-Maschine, Busy Beaver 20. März 2013 Proff Malte Helmert und Christian Tschudin Departement Mathematik und Informatik, Universität
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
Einführung in AVR Assembler
Einführung in AVR Assembler Dennis Fassbender Institut für Technik Autonomer Systeme (LRT8) Universität der Bundeswehr München 09042014 Was ist Assembler? Low-level-Programmiersprache Erlaubt direkten
05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur
0. Assembler-Programmierung Datenstrukturen des ATMega32 Literatur mikrocontroller.net avr-asm-tutorial.net asm Alles über AVR AVR-Assembler-Einführung Assembler AVR-Aufbau, Register, Befehle 2008: ouravr.com/attachment/microschematic/index.swf
Atmel AVR für Dummies
Atmel AVR für Dummies [email protected] 29.12.2005 Übersicht 1 Hardware Kurzvorstellung Atmega8 Programmierkabel (Eigenbau vs. Kommerzlösung) Alternative: Bootloader (Programmieren via rs232) Software Speicher
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)
Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou ([email protected]) 22./23. Oktober 2015
Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou ([email protected]) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse
Technische Informatik 2: Addressierung und Befehle
Technische Informatik 2: Addressierung und Befehle Memory Map Programm Speicher: Adresse $000-$FFF max. 4096 Byte für kompiliertes Programm Data Memory: Adresse $0000-$FFFF 32 8Bit Register 64 I/O Register
Ü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
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.
Rechnerarchitektur Atmega 32. 1 Vortrag Atmega 32. Von Urs Müller und Marion Knoth. Urs Müller Seite 1 von 7
1 Vortrag Atmega 32 Von Urs Müller und Marion Knoth Urs Müller Seite 1 von 7 Inhaltsverzeichnis 1 Vortrag Atmega 32 1 1.1 Einleitung 3 1.1.1 Hersteller ATMEL 3 1.1.2 AVR - Mikrocontroller Familie 3 2 Übersicht
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
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
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
Use of the LPM (Load Program Memory)
Use of the LPM (Load Program Memory) Use of the LPM (Load Program Memory) Instruction with the AVR Assembler Load Constants from Program Memory Use of Lookup Tables The LPM instruction is included in the
Die Mikroprogrammebene eines Rechners
Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.
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
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
Programmieren in C Teil 3: Mikrocontrollerprogrammierung
Programmieren in C Teil 3: Mikrocontrollerprogrammierung 08/30/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 1 Tag 1 Hello World 08/30/10 Fachbereich Physik Institut für Kernphysik
Teil III: Wat macht ene Mikrokontroller?
Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Eine Einführung in Aufbau, Funktionsweise, Programmierung und Nutzen von Mikroprozessoren Teil III: Wat macht ene Mikrokontroller?
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
Mikroprozessortechnik Grundlagen 1
Grundlagen - Grundbegriffe, Aufbau, Rechnerarchitekturen, Bus, Speicher - Maschinencode, Zahlendarstellung, Datentypen - ATMELmega28 Progammierung in C - Vergleich C und C++ - Anatomie eines µc-programmes
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
Instruktionssatz-Architektur
Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2005/2006 Übersicht 1 Einleitung 2 Bestandteile der ISA 3 CISC / RISC Übersicht 1 Einleitung 2 Bestandteile
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
Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. [email protected]. [email protected].
1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack [email protected] Klaas Boesche [email protected] Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache
Programmierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
Welche Register werden zur Parameterübergabe verwendet? In welcher Reihenfolge werden die Parameter auf dem Stack bzw. in den Registern abgelegt?
6.5 MMIX Befehle 291 Aufrufkonventionen Eine Aufrufkonvention (engl. calling convention) legt fest, wie einer Funktion Parameter übergeben werden und wie der Rückgabewert zurückgegeben wird. Damit spezifiziert
6. Funktionen, Parameterübergabe
6. Funktionen, Parameterübergabe GPS-6-1 Themen dieses Kapitels: Begriffe zu Funktionen und Aufrufen Parameterübergabearten call-by-value, call-by-reference, call-by-value-and-result in verschiedenen Sprachen
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
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
Multitasking / virtuelle Maschinen mittels Atmel AVR- Mikrocontrollern (Simple & Stupid)
VM/AVR SIMPLE & STUPID 1 Multitasking / virtuelle Maschinen mittels Atmel AVR- Mikrocontrollern (Simple & Stupid) Stand: 26. 1. 2010 Zweck: Elementare Demonstration der Mehrprogrammausführung auf Grundlage
Struktur der CPU (1) Die Adress- und Datenpfad der CPU: Befehl holen. Vorlesung Rechnerarchitektur und Rechnertechnik SS Memory Adress Register
Struktur der CPU (1) Die Adress- und Datenpfad der CPU: Prog. Counter Memory Adress Register Befehl holen Incrementer Main store Instruction register Op-code Address Memory Buffer Register CU Clock Control
Assembler (NASM) Crashkurs von Sönke Schmidt
Sönke Schmidt (NASM) Crashkurs von Sönke Schmidt Berlin, 4.11.2015 Meine Webseite: http://www.soenke-berlin.de NASM Was ist das? nach Wikipedia: Ein ist ein Programmierwerkzeug, das ein in maschinennaher
Mikrocontroller-Programmierung
Mikrocontroller-Programmierung Anhand des HC12 Fabian Wiesel Überblick Überblick Mikrocontroller Überblick HC12 CPU Peripherie des DG128 Assemblerprogrammierung Mikrocontroller Leistungsfähigkeit: zwischen
PC/XT/AT ASSEMBLER-BUCH
PC/XT/AT ASSEMBLER-BUCH Alle Befehle + Makro-Assembler KLAUS-DIETER THIES t
Einführung in AVR-Assembler
Einführung in AVR-Assembler Easterhack 2008 Chaos Computer Club Cologne Stefan Schürmans, BlinkenArea [email protected] Version 1.0.4 Easterhack 2008 Einführung in AVR-Assembler 1 Inhalt Vorstellung
E Mikrocontroller-Programmierung
E Mikrocontroller-Programmierung E Mikrocontroller-Programmierung E.1 Überblick Mikrocontroller-Umgebung Prozessor am Beispiel AVR-Mikrocontroller Speicher Peripherie Programmausführung Programm laden
Wer in der Grundschule ein wenig aufgepasst hat, sollte in der Lage sein schriftlich eine Zahl durch eine zweite zu teilen.
Teilen binär Teil 1 - Vorzeichenlose Ganzzahlen ============ Irgendwann steht jeder Programmieren vor diesem Problem. Wie teile ich eine Binärzahl durch eine zweite? Wer in der Grundschule ein wenig aufgepasst
INE1 Bit-Operationen. Bit-Operationen Übungen Bits setzen, löschen, abfragen Beispiel: Bitmap
INE1 Bit-Operationen Bit-Operationen Übungen Bits setzen, löschen, abfragen Beispiel: Bitmap 1 Displays and I/O Binary Display & Input Output 2 von 39 Operationen für Bitmanipulation Bit - Operatoren Die
8. Beschreibung des Prozessors MSP 430
8. Beschreibung des Prozessors MSP 430 8.1 Die Eigenschaften des MSP 430 8.2 Die Register des MSP 430 8.3 Der Aufbau des Speichers 8.4 Interrupts 8.5 Der Watchdog Programmierkurs II Wolfgang Effelsberg
Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff
Programmieren in C Funktionen mit Zeigern und Adressen Prof. Dr. Nikolaus Wulff ByValue versus byreferenz C übergibt immer Kopien der Variablen an Funktionen. Es ist nur dann möglich die Werte von Variablen
10. Die Adressierungsarten des MSP 430
10. Die Adressierungsarten 10.1 Übersicht über die Adressierungsarten 10.2 -Operanden 10.3 Indexregister mit Distanz 10.4 Symbolische (relativ zum ) 10.5 Absolute 10.6 Indirekte 10.7 Indirekte Adressierung
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)
Betriebssysteme Vorstellung
Am Anfang war die Betriebssysteme Vorstellung CPU Ringvorlesung SE/W WS 08/09 1 2 Monitor CPU Komponenten eines einfachen PCs Bus Holt Instruktion aus Speicher und führt ihn aus Befehlssatz Einfache Operationen
Vorlesung Rechnerarchitektur. Einführung
Vorlesung Rechnerarchitektur Einführung Themen der Vorlesung Die Vorlesung entwickelt an Hand von zwei Beispielen wichtige Prinzipien der Prozessorarchitektur und der Speicherarchitektur: MU0 Arm Speicher
Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE
Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE 754 Standard festgelegt. Es stehen sogenannte einfach
Einleitung Die Pins alphabetisch Kapitel 1 Programmierung des ATmega8 und des ATmega
Einleitung... 11 Die Pins alphabetisch.... 12 Kapitel 1 Programmierung des ATmega8 und des ATmega328.... 15 1.1 Was Sie auf den nächsten Seiten erwartet... 19 1.2 Was ist eine Micro Controller Unit (MCU)?....
Ein- und Ausgabegeräte
Blockorientiert Jeder Block kann unabhängig gelesen und geschrieben werden. Festplatten, CD-ROMs, USB-Sticks, etc. Zeichenorientiert Keine Struktur, nicht adressierbar, Daten werden als Folge von Zeichen
Technische Informatik 2 Maschinenprogrammierungskonzepte
Technische Informatik 2 Maschinenprogrammierungskonzepte Prof Dr Miroslaw Malek Sommersemester 2005 wwwinformatikhu-berlinde/rok/ca Thema heute Ausführung von Befehlen Ein-/Ausgabeprogrammierung Architekturen
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 [email protected] http://ess.cs.uni-dortmund.de/~me/ 1 Agenda Coroutinen
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
Teil Rechnerarchitekturen. Repetitorium. Corinna Schmitt
Teil Rechnerarchitekturen Repetitorium Corinna Schmitt [email protected] Vorlesungsinhalt Rechnerarchitekturen M01: Architektur, ALU, Flip-Flop M02: Einführung in die Sprache C M03: 2er-Komplement,
U5-2 Register beim AVR-µC
U5 4. Übungsaufgabe U5 4. Übungsaufgabe U5-2 Register beim AVR-µC U5-2 Register beim AVR-mC Grundlegendes zur Übung mit dem AVR-µC 1 Überblick Register Beim AVR µc sind die Register: I/O Ports Interrupts
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
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
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
Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen
Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen Kode-Erzeugung: Syntaxbaum Ausgabeprogramm Starte mit Syntaxbaum: Darstellung des eingegebenen Programms Wähle Zielarchitektur Wähle abstrakte
Arithmetische und Logische Einheit (ALU)
Arithmetische und Logische Einheit (ALU) Enthält Blöcke für logische und arithmetische Operationen. n Bit Worte werden mit n hintereinander geschalteten 1 Bit ALUs bearbeitet. Steuerleitungen bestimmen
Zusammenfassung der Assemblerbefehle des 8051
Zusammenfassung der Assemblerbefehle des 8051 Seite 1 von 5 Befehl Bezeichnung Syntax Wirkung / Beispiel Befehle zum Datentransfer MOV Move MOV [Ziel],[Quelle] MOV P1,P3 Kopiert den Inhalt von P3 nach
2.2 Rechnerorganisation: Aufbau und Funktionsweise
2.2 Rechnerorganisation: Aufbau und Funktionsweise é Hardware, Software und Firmware é grober Aufbau eines von-neumann-rechners é Arbeitsspeicher, Speicherzelle, Bit, Byte é Prozessor é grobe Arbeitsweise
Grundlagen der Rechnerarchitektur. Ein und Ausgabe
Grundlagen der Rechnerarchitektur Ein und Ausgabe Übersicht Grundbegriffe Hard Disks und Flash RAM Zugriff auf IO Geräte RAID Systeme SS 2012 Grundlagen der Rechnerarchitektur Ein und Ausgabe 2 Grundbegriffe
DieÜbersetzung funktionaler Programmiersprachen
DieÜbersetzung funktionaler Programmiersprachen 107 11 Die Sprache PuF Wir betrachten hier nur die Mini-Sprache PuF( Pure Functions ). Insbesondere verzichten wir(vorerst) auf: Seiteneffekte; Datenstrukturen;
Ein- Ausgabeeinheiten
Kapitel 5 - Ein- Ausgabeeinheiten Seite 121 Kapitel 5 Ein- Ausgabeeinheiten Am gemeinsamen Bus einer CPU hängt neben dem Hauptspeicher die Peripherie des Rechners: d. h. sein Massenspeicher und die Ein-
Teil VIII Von Neumann Rechner 1
Teil VIII Von Neumann Rechner 1 Grundlegende Architektur Zentraleinheit: Central Processing Unit (CPU) Ausführen von Befehlen und Ablaufsteuerung Speicher: Memory Ablage von Daten und Programmen Read Only
Rechnerarchitektur, Einführung in die Laborübungen
G. Kemnitz Institut für Informatik, TU Clausthal (RA-LabEinf.pdf) 20. Dezember 2017 1/18 Rechnerarchitektur, Einführung in die Laborübungen G. Kemnitz Institut für Informatik, TU Clausthal (RA-LabEinf.pdf)
Einführung in die Welt der Microcontroller
Übersicht Microcontroller Schaltungen Sonstiges Einführung in die Welt der Microcontroller Übersicht Microcontroller Schaltungen Sonstiges Inhaltsverzeichnis 1 Übersicht Möglichkeiten Einsatz 2 Microcontroller
GdI2 - Systemnahe Programmierung in C Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2006 U4.fm
U4 4. Übungsaufgabe U4 4. Übungsaufgabe Grundlegendes zur Übung mit dem AVR-µC Register I/O Ports Interrupts AVR-Umgebung U4.1 U4-1 Grundlegendes zur Übung mit dem AVR-mC U4-1 Grundlegendes zur Übung mit
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..
Lösungsvorschlag zur 3. Übung
Prof Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik Wintersemester 09/10 1 Präsenzübungen 11 Schnelltest Lösungsvorschlag zur Übung a) Welche der folgenden Aussagen entsprechen
Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note:
Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 95 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel
Grundlagen der Rechnerarchitektur
Grundlagen der Rechnerarchitektur ARM, x86 und ISA Prinzipien Übersicht Rudimente des ARM Assemblers Rudimente des Intel Assemblers ISA Prinzipien Grundlagen der Rechnerarchitektur Assembler 2 Rudimente
Aufgabe 1 Entwicklung einer Virtuellen Maschine
Aufgabe 1 Entwicklung einer Virtuellen Maschine Rainer Müller Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2014/2015 R. Müller Entwicklung
Parallel-IO. Ports am ATmega128
Parallel-IO Ansteuerung Miniprojekt Lauflicht Ports am ATmega128 PortE (PE7...PE0) alternativ, z.b. USART0 (RS232) 1 Pin von PortC Port C (PC7...PC0) 1 Parallel-IO-Port "Sammelsurium" verschiedener Speicher
Wer möchte, kann sein Programm auch auf echter Hardware testen
U4 3. Übungsaufgabe U4 3. Übungsaufgabe Grundlegendes zur Übung mit dem AVR-μC Register I/O-Ports AVR-Umgebung Peripherie U4.1 U4-1 Grundlegendes zur Übung mit dem AVR-mC U4-1 Grundlegendes zur Übung mit
Deklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
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
Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009
Fachgebiet Rechnerarchitektur Fachbereich Informatik Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009 Aufgabe 9.1: Dinatos-Algorithmus-Analyse Die folgenden Verilog-Zeilen
6. Grundlagen der Programmierung
Computeranwendung in der Chemie Informatik für Chemiker(innen) 6. Grundlagen der Programmierung Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL6 Folie 1 Dr. Jens Döbler Grundlagen
MOP: Befehlsliste für den Mikrocontroller 8051
Beuth Hochschule Berlin FB VI, Labor für Digitaltechnik MOP: Befehlsliste für den Mikrocontroller 8051 Erläuterung der Operanden Operand A addr11 addr16 bit /bit C #data #data16 direct DPTR PC Ri Rn rel
3.0 8051 Assembler und Hochsprachen
3.0 8051 Assembler und Hochsprachen Eine kurze Übersicht zum Ablauf einer Programmierung eines 8051 Mikrocontrollers. 3.1 Der 8051 Maschinencode Grundsätzlich akzeptiert ein 8051 Mikrocontroller als Befehle
