Rechnerarchitektur und Betriebssysteme (CS201): Asm-Programmierung, Stack, Compiler

Größe: px
Ab Seite anzeigen:

Download "Rechnerarchitektur und Betriebssysteme (CS201): Asm-Programmierung, Stack, Compiler"

Transkript

1 Rechnerarchitektur und Betriebssysteme (CS201): Asm-Programmierung, Stack, Compiler 11. November 2005 Prof. Dr. Christian Tschudin Departement 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. Ist Assembler eine Programmiersprache? c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 2/36

2 Relevanz von µkontrollern (µc) µc sind billig: 50 Rappen bis 5 Franken pro Chip µc- Marktvolumen: über 10 Milliarden USD pro Jahr! Vergleich: µprozessoren (PC etc): Milliarden USD/a Digital Signal Processors (DSP): 4 Milliarden USD/a Populäre Geräte/Anwendungen: Auto: heute 60 µc und mehr pro Highend-Auto NASA Mars Sojourner Rover (8-bit Intel 80C85) Sonicare Plus Zahnbürste (8-bit Zilog Z8) c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 3/36 AVR Studio und WINE Die Simulationsumgebung AVR Studio 3.56 kann mit WINE auch unter Linux betrieben werden. WINE (Wine is Not an Emulator) implementiert die Window Programmier-Schnittstelle und bildet Aufrufe auf Linux ab. 3 Varianten, um Windows-Binaries auszuführen: avrstudio.exe avrstudio.exe Windows vmware o.ä. avrstudio.exe WINE Windows Linux Linux card.asp?tool id=2724 c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 4/36

3 Implementierung von IF...ELSE in C: if (r1 < r2), if (r1 <= r2), if (r1 == r2) etc AVR hat ca ein Dutzend Vergleichsoperationen (Seite 10): BR{LT, GE} branch if less than, if greater or equal BR{EQ, NE} branch if equal, if not equal BRCS und BRCC branch if carry set, if carry clear BRLO branch if lower (unsigned) BRSH branch if same or higher (unsigned) BR{MI, PL} branch if minus, if plus BR{VC, VC} branch if overflow clear, if set sowie weitere Abfragen auf anderen Bits und Flags c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 5/36 Bedingte Ausführung von Code C: if (r1 < r2) { statement; } Realisierung in zwei Schritte: zuerst Register vergleichen, dann auf Grund von Nebeneffekten (Flags) bedingter Sprung Umsetzung: cp r1, r2 brge L1... statement... ; vergleiche (compare) r1 mit r2 L1: nop ; hier geht s weiter ; verzweige falls r1 >= r2 (mit Vorzeichen!) c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 6/36

4 Ausführung von Code-Alternativen C: if (r1 < r2) { stmt1; } else { stmt2; } Umsetzung: cp r1, r2 ; vergleiche (compare) r1 mit r2 brge L1 ; verzweige falls r1 >= r2 (mit Vorzeichen!)... stmt1... rjmp L2 L1:... stmt2... L2:... ; hier geht s weiter c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 7/36 WHILE Schleife C: while (r1 < r2) { statement; } Umsetzung: L1: cp r1, r2 ; vergleiche (compare) r1 mit r2 brge L2 ; springe hinaus falls r1 >= r2 (mit Vorzeichen!)... statement... rjmp L1 L2:... ; hier geht s weiter c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 8/36

5 REPEAT-UNTIL bzw DO-WHILE Schleife C: do { statement; } while (r1 < r2); Umsetzung: L1:... statement... cp r1, r2 ; vergleiche (compare) r1 mit r2 brle L1 ; springe zurück falls r1 < r2 (mit Vorzeichen!)... ; hier geht s weiter c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 9/36 FOR Schleife C: for (stmt1; r1 < r2; stmt2) { stmt3; } Umsetzung: stmt1 L1: cp r1, r2 ; vergleiche (compare) r1 mit r2 brge L2 ; springe hinaus falls r1 >= r2 (mit Vorzeichen!)... stmt stmt2... rjmp L1 L2:... ; hier geht s weiter c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 10/36

6 Programmierbeispiel 1: Vorzeichen wechseln Input: in Register 16 Output: Register 16 ldi r16, 15 ; Konstante 15 an Register 16 ldi r17, 255 ; Konstante 255 an Register 17 eor r16, r17 inc r16 ; xor von r16 ; r16 um 1 erhöhen Zuerste müssen die Register geladen werden, dann das 2er-Komplement berechnen. Beachte die Bit-Negation mit XOR. c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 11/36 Programmierbeispiel 2: Reihe Zahlen von 1 bis N addieren. clr r0 ; Register auf 0 setzen ldi r16, 1 ; Konstante 1 (erste Zahl N) an Register 16 ldi r17, 4 ; Konstante 4 als Zähler-Variable in Register 17 L1: ; Label (logische Adresse) add r0, r16 ; addiere Inhalt von r16 zu r0 inc r16 ; N erhöhen dec r17 ; Zähler verkleinern (setzt Zero-Flag) brne L1 ; zurück zu L1, falls ungleich 0 end: nop ; no-operation BRNE = branch if not equal c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 12/36

7 Programmierbeispiel 3: Länge eines Strings berechnen ASCIIZ: String wird durch das Zeichen 0x00 abgeschlossen. (in C) Neue Befehle: rjmp relative jump.db Assembler-Anweisung für Datenablage cpi compare immediate, Vergleich mit einer Konstant Z Pseudoregister Zugriff auf Programmspeicherbereich (Z = R31:r30) adiw add immediate to word Bearbeitung von Z lpm load from program memory c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 13/36 Programmierbeispiel 3: Fortsetzung rjmp main str:.db "hello", 0 main: clr r16 ; Register auf 0 setzen ldi r30, LOW(str*2) ; Programmspeicher hat Wort-Adressen ldi r31, HIGH(str*2) L1: lpm r17, Z ; lese Byte cpi r17, 0 ; schon 0? breq L2 ; falls ja gehe zu L2 inc r16 ; erhöhe Zähler r16 adiw r30, 1 ; erhöhe Z Pointer rjmp L1 ; Schleife weiter bei L1 L2: c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 14/36

8 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 , 15/36 Stack Stapel, Kellerspeicher etc Zwei Operationen: push (neues Element drauf -legen) pop (oberstes Element wegnehmen) Stack pointer (SP): zeigt auf erste freie Stelle Bei AVR (und meisten CPUs): Stack wächst nach unten d.h. ein POP verkleinert den Wert des Stack Pointer c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 16/36

9 Stack im AVR-Chip Stack liegt im Datensegment (SRAM) SP ist ein Spezialregister, 16-bit weit. Alle Register sind memory-mapped, auch SP: 0x5d (low byte) 0x5e (high byte) Initialisierung: ldi r16, LOW(4352-1) sts 0x005d, r16 ldi r16, HIGH(4352-1) sts 0x005e, r16 ; Bem: wäre kompakter zu kodieren mit port -Befehlen c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 17/36 Stack-Verwendung Dynamischer Speicher anlegen: Bytes ablegen (und holen) Gegensatz: statisch allozierte Variablen: üblicherweise im unteren Speicherbereich (0x ) (Konstanten: im code -Segment / read-only memory) Beispiel: Register temporär freimachen push r12 ; Inhalt von r12 auf Stack... ; beliebige Verwendung von r12 pop r12 ; r12 erhält wieder den alten Wert Wiederholung: Stackpointer zeigt auf erste freie Position c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 18/36

10 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 , 19/36 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 , 20/36

11 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 , 21/36 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 , 22/36

12 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 , 23/36 Subroutinen s1: call s1 nop ret Code an Adresse s1 soll mehrfach verwendet werden können. c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 24/36

13 (r)call und ret: Stack für Rücksprung-Adresse nutzen call: legt das Wort PC + 1 auf den Stack, SP wird um 2 verkleinert (post-decrement) setzt PC auf die Adresse der Subroutine ret: erhöhe SP um 2 (pre-increment) ersetzt PC mit oberstem Stackwort rcall S1... S1:... Code von S1... ret c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 25/36 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 , 26/36

14 Prozedur-Aufruf ohne Stackpointer! Rücksprung-Adresse muss nicht im 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 , 27/36 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. 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 , 28/36

15 Parameter-Uebergabe für Prozeduren/Funktion C: int max(int a, int b) { return a > b? a : b } Aehnliche Diskussion wie bei Rücksprungadresse: Stapel, Register oder Hauptspeicher benutzen Praxis: a) einfache Param/Funktionswerte (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 , 29/36 Parameter-Uebergabe Weitere Anforderungen Prozedur hat lokale Variablen Arbeitsregister müssen temporär gesichert werden Calling Convention : wer ist für die Reg-Sicherung zuständig? Stack Frame : Speicherauslegeordnung einer Prozedur Rücksprungadresse gesicherte Arbeitsregister lokale Variablen c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 30/36

16 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 , 31/36 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 umbestimmt. c Christian Tschudin CS201 Rechnerarchitektur und Betriebssysteme , 32/36

17 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 , 33/36 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 , 34/36

18 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 , 35/36 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 , 36/36

Rechnerarchitektur und Betriebssysteme (CS201): AVR-CPU und -Assembler

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.

Mehr

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 Teil Rechnerarchitekturen M05 AVR-CPU und Assembler, Memory Map, Stack, Prozeduraufruf, Calling Convention Corinna Schmitt corinna.schmitt@unibas.ch AVR-CPU und -Assembler 2015 Corinna Schmitt Teil Rechnerarchitekturen

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): Memory Map, Stack, Prozeduraufruf, Calling Convent.

Rechnerarchitektur und Betriebssysteme (CS201): Memory Map, Stack, Prozeduraufruf, Calling Convent. Rechnerarchitektur und Betriebssysteme (CS201): Memory Map, Stack, Prozeduraufruf, Calling Convent. 19. Oktober 2012 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel

Mehr

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

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

Mehr

Einführung in AVR Assembler

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

Mehr

B1 Stapelspeicher (stack)

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

Mehr

Die Mikroprogrammebene eines Rechners

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.

Mehr

Wer in der Grundschule ein wenig aufgepasst hat, sollte in der Lage sein schriftlich eine Zahl durch eine zweite zu teilen.

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

Mehr

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures

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

Mehr

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

Atmel AVR für Dummies

Atmel AVR für Dummies Atmel AVR für Dummies fd0@koeln.ccc.de 29.12.2005 Übersicht 1 Hardware Kurzvorstellung Atmega8 Programmierkabel (Eigenbau vs. Kommerzlösung) Alternative: Bootloader (Programmieren via rs232) Software Speicher

Mehr

Multitasking / virtuelle Maschinen mittels Atmel AVR- Mikrocontrollern (Simple & Stupid)

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

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

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Kap 4. 4 Die Mikroprogrammebene eines Rechners 4 Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten (Befehl holen, Befehl dekodieren, Operanden holen etc.).

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

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

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

Mehr

Technische Informatik 2: Addressierung und Befehle

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

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

Theorie der Informatik (CS206) Kellerautomat, Postfix-Notation, Turing-Maschine, Busy Beaver

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

Mehr

Einführung in AVR-Assembler

Einführung in AVR-Assembler Einführung in AVR-Assembler Easterhack 2008 Chaos Computer Club Cologne Stefan Schürmans, BlinkenArea stefan@blinkenarea.org Version 1.0.4 Easterhack 2008 Einführung in AVR-Assembler 1 Inhalt Vorstellung

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Instruktionssatz-Architektur

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

Mehr

Assembler-Programmierung

Assembler-Programmierung Assembler-Programmierung Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Assembler-Programmierung 1/48 2012-02-29 Assembler-Programmierung

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

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

Assembler (NASM) Crashkurs von Sönke Schmidt

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

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

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

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

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.

Mehr

Zusammenfassung der Assemblerbefehle des 8051

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

Mehr

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

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

Mehr

Gegenüberstellung von Assembler- und C-Programmierung

Gegenüberstellung von Assembler- und C-Programmierung Gegenüberstellung von Assembler- und C-Programmierung Assembler-Version C-Version org 8000h #pragma code=0x8000 #pragma xdata=0x2000 INPUT equ 0e081h OUTPUT equ 0e082h neu: mov dptr,#input movx a,@dptr

Mehr

J.5 Die Java Virtual Machine

J.5 Die Java Virtual Machine Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class

Mehr

Assembler-Programme. Systemprogrammierung (37-023) Elementare Komponenten eines Assembler-Programmes

Assembler-Programme. Systemprogrammierung (37-023) Elementare Komponenten eines Assembler-Programmes Systemprogrammierung (37-023) Assemblerprogrammierung Betriebssystemgrundlagen Maschinenmodelle Dozent: Prof. Thomas Stricker krankheitshalber vertreten durch: Felix Rauch WebSite: http://www.cs.inf.ethz.ch/37-023/

Mehr

Zwischencodeerzeugung Compiler II

Zwischencodeerzeugung Compiler II Zwishenodeerzeugung Compiler II Prof. Dr. Ursula Goltz 14.09.2012 Einleitung Front-End... Parser Sem. Analys Zwishenodegenerator Bak-End Codegenerator... Zwishendarstellung (Zwishenode) evtl. mashinennunabh.

Mehr

Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen

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

Mehr

Befehlssatz AVR RISC Controller

Befehlssatz AVR RISC Controller Befehlssatz AVR RISC Controller Design-Philosophie des AVR Befehlssatzes Assembler-Sprache AVR-Befehlssatz Philosophie RISC = Reduced Instruction Set Computing keine komplexen Befehle möglichst symmetrischer

Mehr

Rechnerarchitektur Atmega 32. 1 Vortrag Atmega 32. Von Urs Müller und Marion Knoth. Urs Müller Seite 1 von 7

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

Mehr

Technische Informatik 2 Maschinenprogrammierungskonzepte

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

Mehr

Mikrocontroller effektiv in C programmieren - ein noch unbekanntes Land

Mikrocontroller effektiv in C programmieren - ein noch unbekanntes Land Mikrocontroller effektiv in C programmieren- ein noch unbekanntes Land Mikrocontroller effektiv in C programmieren - ein noch unbekanntes Land HS Pforzheim Fakultät Technik Mikrocontroller-Labor Tiefenbronner

Mehr

Technische Informatik 1

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

Mehr

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44 Aufgabe 33 a) Der Pseudobefehl move $rd,$rs wird als addu $rd,$0,$rs übersetzt. Dabei macht sich SPIM zunutze, dass das Register $0 immer Null ist. Somit wird das Register $rd ersetzt durch $rd=0+$rs=$rs,

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

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

0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags.

0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags. 3. Assembler-Programmierung Der PIC 16F84A Microcontroller kennt 35 verschiedene Befehle. Für eine ausführliche Beschreibung aller Befehle siehe PIC16F84A-Datenblatt Kapitel 7.1. 3.1 Wichtige Flaggen im

Mehr

1 Assembler. 2 LED-Steuerung

1 Assembler. 2 LED-Steuerung Inhaltsverzeichnis Inhaltsverzeichnis... 1 1 Assembler... 2 2 LED-Steuerung... 2 3 Taster Abfrage ( Port I/O)... 3 3.1 Zahlensysteme... 3 3.2 Ausgabe... 4 3.2.1 Assembler-Sourcecode... 4 3.2.2 Assemblieren...

Mehr

Mikrocomputertechnik. Adressierungsarten

Mikrocomputertechnik. Adressierungsarten Adressierungsarten Ein Mikroprozessor bietet meist eine Reihe von Möglichkeiten, die Operanden für eine Rechenoperation zu bestimmen. Diese Möglichkeiten bezeichnet man als Adressierungsarten. unmittelbare

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Modellierung und Programmierung

Modellierung und Programmierung Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben

Mehr

Core und Speicher des ATmega16

Core und Speicher des ATmega16 Ausarbeitung Core und Speicher des ATmega16 Verfasst von: Daniel Dünker Quellen: http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf Inhaltsverzeichnis 1.Allgemeines (S. 3) 2.Die Alu (S. 4) 3.Das

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Lösungsvorschlag zur 3. Übung

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

Mehr

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

Mikrocontroller-Programmierung

Mikrocontroller-Programmierung Mikrocontroller-Programmierung Anhand des HC12 Fabian Wiesel Überblick Überblick Mikrocontroller Überblick HC12 CPU Peripherie des DG128 Assemblerprogrammierung Mikrocontroller Leistungsfähigkeit: zwischen

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

Microcontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1

Microcontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1 Microcontroller Kurs Programmieren 9.1.11 Microcontroller Kurs/Johannes Fuchs 1 General Purpose Input Output (GPIO) Jeder der Pins der vier I/O Ports kann als Eingabe- oder Ausgabe-leitung benutzt werden.

Mehr

Grundlagen der Rechnerarchitektur

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

Mehr

Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff

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

Mehr

Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c

Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c 1 Transportbefehle 1.1 Verwendung nur Akku und Register (R0, R1,... R7) 1.1.1 Kopieren Sie den Wert aus Register1 nach

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

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

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

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note:

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

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include

Mehr

U4 Grundlagen der C-Programmierung

U4 Grundlagen der C-Programmierung U4 Grundlagen der C-Programmierung U4 Grundlagen der C-Programmierung Makros Enums und Typedefs Deklaration und Definition Compileroptimierungen U4-1 Makros U4-1 Makros Makros sind Textersetzungen, welche

Mehr

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Themen heute Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Besprechung des 3. Übungsblattes Aufgabe 3 Speicherplätze für Mikrocode-Anweisungen

Mehr

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

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

Mehr

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache Agenda für heute, 4. März, 2010 Zusammengesetzte if-then-else-anweisungen Datentypen Pascal ist eine streng typisierte Programmiersprache Für jeden Speicherplatz muss ein Datentyp t (Datenformat) t) definiert

Mehr

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B. C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von

Mehr

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: 1 ADRESSIERUNG IN MMIX Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: no base address is close enough to the address A! relative address

Mehr

Übersicht Shell-Scripten

Übersicht Shell-Scripten !!!! Wichtig: Bei Shell-Scripten enden die Zeilen nicht mit einem Strichpunkt!!!! Erste Zeile eines Shell-Scripts: #! /bin/bash Variablen in Shell-Scripts: Variablennamen müssen mit einem Buchstaben beginnen,

Mehr

Lösungen zum Kurs "Mikrocontroller Hard- und Software

Lösungen zum Kurs Mikrocontroller Hard- und Software Lösungen zum Kurs "Mikrocontroller Hard- und Software Gerhard Schmidt Kastanienallee 20 64289 Darmstadt http://www.avr-asm-tutorial.net Lösung Aufgabe 2 Aufgabe 2 sbi DDRB,PB0 2 Takte sbi PORTB,PB0 2 Takte

Mehr

Problem: Keine Integers in JavaCard. ToDo: Rechnen mit Bytes und Shorts

Problem: Keine Integers in JavaCard. ToDo: Rechnen mit Bytes und Shorts Kapitel 6: Arithmetik in JavaCard Problem: Keine Integers in JavaCard ToDo: Rechnen mit Bytes und Shorts Java SmartCards, Kap. 6 (1/20) Hex-Notation 1 Byte = 8 Bit, b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 0101

Mehr

Programmierung mit C Zeiger

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

Mehr

10. Die Adressierungsarten des MSP 430

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

Mehr

3. Sprachkonzepte und ihre Übersetzungen

3. Sprachkonzepte und ihre Übersetzungen Übersetzung von dynamischen Feldern: var feld: array[u1..o1,,uk..ok] of integer; //ui, oi nicht alle konstant; z.b. Parameter Speicherbelegung: (Felddeskriptor) 0 fiktive Anfangsadresse 1 Feldgröße 2 Subtr.

Mehr

MOP: Befehlsliste für den Mikrocontroller 8051

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

Mehr

U23 2008 Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer

U23 2008 Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer Alexander Neumann e.v. http://koeln.ccc.de Köln, 1.9.2008 1 Musterlösungen Aufgabe 1 & 2 2 Taster entprellen

Mehr

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Compiler: Vom Code zum Maschinen-Code C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Zusammenhänge: C und Assembler Hochsprachen

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Gerhard Paulus gp@gnomsoft.de

Gerhard Paulus gp@gnomsoft.de -------------------------------------------------------------- Assembler ab 0 und 1 8.10.2002 -------------------------------------------------------------- Gerhard Paulus gp@gnomsoft.de Copyright (c)

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

Mehr

Der Toy Rechner Ein einfacher Mikrorechner

Der Toy Rechner Ein einfacher Mikrorechner Der Toy Rechner Ein einfacher Mikrorechner Dr. Gerald Heim Haid-und-Neu-Str. 10-14 76131 Karlsruhe 16. Mai 1995 Allgemeine Informationen 2 Quelle: Phil Kopmann, Microcoded versus Hard-Wired Logic, Byte

Mehr

Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011

Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011 Sicheres C in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011 Dipl. Ing. (FH) Ebrecht Roland, Infineon Technologies AG M.Eng (Electronic Systems) Güller Markus, Infineon Technologies

Mehr

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

Mehr

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks)

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): Peripheriebausteine, IO, Interrupts und Timer

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

Mehr

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Musterlösung 1. Aufgabe (5 Punkte) Im folgenden Programmcode sind einige Fehler enthalten. Finden und markieren Sie mindestens

Mehr

Moderne C-Programmierung

Moderne C-Programmierung Xpert.press Moderne C-Programmierung Kompendium und Referenz Bearbeitet von Helmut Schellong 1. Auflage 2005. Buch. xii, 280 S. ISBN 978 3 540 23785 3 Format (B x L): 15,5 x 23,5 cm Weitere Fachgebiete

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

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Eine Einführung in Aufbau, Funktionsweise, Programmierung und Nutzen von Mikroprozessoren Teil II: Wat iss ene Bit, Byte un Word?

Mehr

4 Assembler für die 8051-Controller-Familie

4 Assembler für die 8051-Controller-Familie 4 Assembler für die 8051-Controller-Familie Tabelle 4.1 Wichtige Schreibweisen und Bedeutungen für die Befehle Abkürzung #data data addr Rr @Rr code addr Bedeutung Daten sind in der Instruktion codiert

Mehr

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!

Mehr

1.7 Assembler Programmierung

1.7 Assembler Programmierung 1.7 Assembler Programmierung Die nach außen sichtbare Programmierschnittstelle eines Prozessors ist der Befehlscode. Dies ist eine binäre Dateninformation, die vom Prozessor Byte für Byte abgearbeitet

Mehr

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr