Inhaltsverzeichnis. 9.1 Einführung 9.2 Die Objekt-Datei. 9.3 Der Linker. 9.4 Der Lader. Inhalt von Objekt-Dateien Beispiele:.COM, a.

Größe: px
Ab Seite anzeigen:

Download "Inhaltsverzeichnis. 9.1 Einführung 9.2 Die Objekt-Datei. 9.3 Der Linker. 9.4 Der Lader. Inhalt von Objekt-Dateien Beispiele:.COM, a."

Transkript

1 Inhaltsverzeichnis 9.1 Einführung Inhalt von Objekt-Dateien Beispiele:.COM, a.out, ELF 9.3 Der Linker Aufgabe und Arbeitsweise Speicherlayout Symbol-Management Relocation 9.4 Der Lader 1

2 9.1 Einführung Programm aus Sicht des Programmierers math.c const int DIV_OK = 0; const int DIV_BY_ZERO = 1; int errno = 0; int div( int a, int b ) { if (b==0) { errno = DIV_BY_ZERO; return -1; } else { errno = DIV_OK; return a/b; } } prog.c extern int errno; extern const int DIV_OK; extern const int DIV_BY_ZERO; int main( int argc, char *argv[] ) { int a = 21; int b = 3; } int c = div( a,b ); if (errno == DIV_OK) return 0; else return -1; Adressen sind durch Symbole repräsentiert (z.b. errno, div ) Programm ist unabhängig von späteren Lage im Speicher 2

3 9.1 Einführung Programm aus Sicht des Prozessors Dump of assembler code for function main: 0x <main+0>: push %ebp x e <main+26>: sub %eax,%esp 0x <main+28>: movl $0x15,0xfffffff4(%ebp) // int a=21a = 21; 0x <main+35>: movl $0x3,0xfffffff8(%ebp) // int b=3 b = 3; 0x e <main+42>: sub $0x8,%esp 0x <main+45>: pushl 0xfffffff8(%ebp) 0x <main+48>: pushl 0xfffffff4(%ebp) 0x <main+51>: call 0x80483b8 <div> // int div(a,b) c = div( a,b ); 0x c <main+56>: add $0x10,%esp 0x f <main+59>: mov %eax,0xfffffffc(%ebp) // c=... 0x <main+62>: mov 0x80496a4,%edx // if errno (errno == 0x <main+68>: mov 0x ,%eax // DIV_OK DIV_OK) 0x d <main+73>: cmp %eax,%edx // errno==div_ok 0x f <main+75>: jne 0x804845a <main+86> 0x <main+77>: movl $0x0,0xffffffec(%ebp) return 0; 0x <main+84>: jmp 0x <main+93> else 0x a <main+86>: movl $0xffffffff,0xffffffec(%ebp) return -1; 0x <main+93>: mov 0xffffffec(%ebp),%eax 0x <main+96>: leave 0x <main+97>: ret } Adressen sind absolute Zahlen int main(int argc,char *argv[]) { 3

4 Programmerzeugung: Schritt 1 Compilieren Source Object math.c prog.c Compiler math.o prog.o Source Adressen symbolisch ( errno, div ) Compiler Erzeugt Objekt-Datei text-segment: enthält Programmcode data-segment: enthält initialisierte globale Variablen und Datenstrukturen bss-segment (Block Started by Symbol): enthält uninitialisierte globale Daten... Bindet symbolische Adressen an relative numerische Adressen, z.b. div befindet sich 16 Bytes nach Beginn des.text-segments errno befindet sich 8 Bytes nach Beginn des.data-segments 4

5 Programmerzeugung: Schritt 2 Linken Source Object Executable math.c prog.c Compiler math.o prog.o Linker prog Linker Eingabe: Menge von Objekt-Dateien Ausgabe: Ausführbares Programm gemeinsames text-segment gemeinsames data-segment gemeinsames bss-segment Querbezüge zwischen den Objekt-Dateien sind aufgelöst Je nach Betriebssystem: - Executable: Adressen sind absolut; Programm kann geladen und direkt gestartet werden - Relocatable: Adressen sind noch relativ; Programm muss vor Start noch angepasst werden 5

6 Inhalt einer Objekt-Datei Header: Allgemeine Info, z.b. Größe des Codes Objekt-Code: binäre Instruktionen (Maschinencode) und Daten Relocation: Liste von Stellen innerhalb des Programmcodes oder der Daten, die angepasst werden müssen, wenn die Startadresse des Codes verschoben wird Symbole: globale Symbole, die definiert werden; Symbole, die importiert werden Debug-Informationen: z.b. Zeilennummern in Quelldatei, lokale Symbole,... Aufgaben Linkable: kann als Eingabe eines Linkers verwendet werden enthält Symbol- und Relocation-Informationen, die vom Linker benötigt werden Executable: kann in den Speicher geladen und ausgeführt werden enthält keine Symbol- und wenig/keine Relocation-Information Loadable: kann als Bibliothek mit anderem Programm in den Speicher geladen werden Kombinationen sind möglich. 6

7 Beispiele MS-DOS.COM a.out enthält nur ein zu ladenes Speicherabbild Datei wird an fest definierte Stelle geladen und gestartet Objektformat unter UNIX Neuer Adressraum für jeden Prozess Programm wird fest auf immer dieselbe Adresse gelinkt a.out-header int a_magic; // Definierte Zahl (0407) int a_text; // Größe des Textsegments (Programmcode) int a_data; // Größe des Datensegments int a_bss; // Größe der uninitialisierten Daten int a_syms; // Größe der Symboltabelle int a_entry; // Startadresse des Programms int a_trsize; // Größe der Text-Relocation-Informationen int a_drsize; // Größe der Daten-Relocation-Informationen a.out-objektformat a.out-header text Section (Maschinen- Code) data Section (Daten) Relocation Info (text + data) Symboltabelle Stringtabelle 7

8 Einschub: Logischer Physikalischer Adressraum Logischer Adressraum enthält die von der CPU angefragten Adressen auch virtueller Adressraum genannt Physikalischer Adressraum tatsächlich bei Speichereinheit angefragten Adressen (Inhalt Memory-Address-Register ) relocation Register CPU logische Adresse physikalische Adresse Memory Memory- Management- Unit (MMU) 8

9 Beispiele ELF (Executable and Linking Format) Objektformat unter UNIX 3 Objektarten: - relocatable: werden von Compilern erzeugt und benötigen Linkerdurchlauf bevor sie gestartet werden können - executable: Relocation durchgeführt, Symbole aufgelöst, startfähig - shared object: Enthalten sowohl Symbolinformation für Linker als auch direkt lauffähigen Code linkable sections ELF-Header Program Header Table.text.init.fini executable segments RO, EXEC Duale Natur: - Compiler und Linker interpretieren Datei als Menge von logischen Sektionen..data.bss RW - Lader interpretiert Datei als Menge von Segmenten..rodata RO Section Header Table 9

10 ELF-Header char magic[4] = "\177ELF"; // magic number char class; // address size, 1 = 32bit, 2 = 64bit char byteorder; // 1 = little endian, 2 = big endian char hversion; // header version, always 1 char pad[9]; short filetype; // 1 = reloc., 2 = exec., 3 = shared obj short archtype; // 2 = SPARC, 3 = x86, 4 = M68K,... int fversion; // file version, always 1 int entry; // entry point (if executable) int phdrpos; // file position of program header or 0 int shdrpos; // file position of section header or 0 int flags; // architecture specific flags; usually 0 short hdrsize; // size of this ELF header short phdrent; // size of an entry in program header short phdrcnt; // number of entries in program header or 0 short shdrent; // size of an entry in section header short shdrcnt; // number of entries in section header or 0 short strsec; // section number containing section name strings 10

11 ELF Relocatable Files - Menge von Sektionen, jeweils definiert durch Section-Header int sh_name; // name, index into the string table int sh_type; // section type int sh_flags; // flags int sh_addr; // base memory address (if loadable), or 0 int sh_offset; // file position of beginning of section int sh_size; // size in bytes int sh_link; // section number with related info or 0 int sh_info; // more section-specific info int sh_align; // alignment granularity if section is moved int sh_entsize; // size of entries if section holds table - jede Sektion enthält max. eine Art von Information, z.b. Programcode, RO-Data,... - Section Types: o PROGBITS: Programminhalte, z.b. Code, Data, Debug-Info,... o SYMTAB, DYNTAB: Normale Symboltabelle bzw. Symboltabelle für dynamisches Linken o STRTAB: Stringtabelle; enthält Sektionsamen, Symbolnamen o REL: Relocation Information o... - Flags: o ALLOC: Sektion verbraucht Speicher, wenn Datei geladen wird o WRITE: geladene Sektion ist beschreibbar o EXECINSTR: Sektion enthält ausführbaren Code 11

12 ELF-Sektionen: Beispiele -.text: Type PROGBITS, Flags ALLOC+EXECINSTR. Äquivalent zum a.out text-segment -.data: Type PROGBITS, Flags ALLOC+WRITE. Äquivalent zum a.out data-segment -.rodata: Type PROGBITS, Flags ALLOC. Read-only data -.bss: Type NOBITS, Flags ALLOC+WRITE. -.rel.text,.rel.data,.rel.rodata: Type REL. Relocation Informationen der jeweiligen Sektion -.init,.fini: Type PROGBITS, Flags ALLOC+EXECINSTR. Code für Programmstart u. ende (z.b. für C++/Java-Programme mit globalen Objekten, die Konstruktoren und Destruktoren besitzen) -.symtab,.dynsym: Type SYMTAB bzw. DYNSYM. Symboltabellen (normale und dynamische)..dynsym hat Flag ALLOC, da sie zur Laufzeit geladen werden muss. -.strtab,.dynstr: Type STRTAB Relocatable ELF file ELF header.text.data.rodata.bss.sym.rel.text.rel.data.rel.rodata.line.debug.strtab Section Header Table 12

13 ELF Executable Files - Ähnlicher Aufbau wie Relocatable Files - Daten sind so gespeichert, dass Datei direkt in den Hauptspeicher eingeblendet und gestartet werden kann - Program Header: Array von Beschreibungen der einzublendenden Segmente int type; // loadable code or data, dynamic linking info,... int offset; // file offset of segment int virtaddr; // virtual address of the segment int physaddr; // physical address, not used int filesize; // size of segment in file int memsize; // size of segment in memory int flags; // Read, Write, Execute bits int align; // required alignment - Ein ausführbares Programm enthält in der Regel nur wenige Segmente: ein Read-Only-Segment für Code und RO-Data und ein Read-Write-Segment für RW-Data - Alle zu ladenden Sektionen sind in den entsprechenden Segmenten definiert, sodass sie mit möglichst wenigen Operationen in den Hauptspeicher eingeblendet werden können. ELF Shared Object - Enthält Elemente von Relocatable und Executable Files 13

14 9.3 Der Linker Aufgabe Kombination von Objektdateien zu einem ausführbaren Programm. Statisches Binden Bibliotheksfunktionen werden in das ausführbare Programmobjekt kopiert. Große Programmdateien Aktualisieren der Bibl. aufwändig Programm 1 printf exit libc.a Programm 1 Programm 2 Dynamisches Binden zur Startzeit Bibliotheksfunktionen werden einmal in den Speicher geladen und beim Programmstart gebunden. Programm 2 printf exit libc.a printf exit libc.so Dynamisches Binden zur Laufzeit Binden findet erst beim Aufruf einer Bibliotheksfunktion statt. Statisches Binden Dynamisches Binden mit gemeinsam genutzter Bibliothek 14

15 9.3 Der Linker Zwei Phasen 1. Scannen aller Eingabedateien Größe der Text- und Datensegmente ( Segmenttabelle) Symboldefinitionen und -referenzen ( Symboltabelle) Layout der Ausgabedatei (Größe und Anordnung der Segmente) Symbole -> Numerische Adressen 2. Erzeugen der Ausgabedatei Einlesen der Objektdateien und Anpassen der Adressen im Code und in den Daten Schreiben des modifizierten Codes in die Ausgabedatei Numerische Adressen statt Symbole wenn möglich Symboltabelle erzeugen und schreiben (Relinking oder Debugging) Relocation-Informationen erzeugen und schreiben 15

16 9.3 Der Linker Speicher-Layout der Ausgabedatei Alle Sektionen gleichen Typs aus den Eingabedateien ergeben eine Sektion in der Ausgabedatei; in der Regel werden die einzelnen Sektionen hintereinander geschrieben 1. Durchlauf: Feststellen der Sektionsgrößen A text data bss B output text 2. Durchlauf: Anordnen der Sektionen a.out: funktioniert in der Art text data data ELF: Linker muss zusätzlich Program Header Table und Section Header Table anpassen/erzeugen bss C bss text data bss 16

17 9.3 Der Linker Symbol-Management Linker behandeln Symbolreferenzierungen zwischen Modulen Symbole werden in einer Symboltabelle gespeichert Verschiedene Arten von Symbolen in Eingabedateien: globale Symbole, die im Modul definiert werden globale Symbole, die im Modul verwendet, aber nicht definiert werden ( externals ) Segmentnamen Nicht-globale Symbole, die für Debugger und Crash- Analysen verwendet werden Zeilennummer-Informationen für Debugger Während des 1. Linker-Durchlaufs: Aufbau einer globalen Symboltabelle Enthält alle Symbole, die irgendwo definiert oder verwendet werden Zu jedem Symbol werden alle Orte gespeichert, an denen es verwendet oder definiert wird (nach erstem Durchlauf sollte jedes Symbol genau einmal definiert worden sein) Globale Symboltabelle ist i.d.r. als Hashtabelle realisiert Symboltabelle Modul_A 0 Info zu Symbol 0 1 Info zu Symbol 1 2 Info zu Symbol globale Symboltabelle 17

18 9.3 Der Linker Relocation Bisher: Segmentgrößen und Symbole eingelesen, Layout der Ausgabedatei Problem: Symbole und Adressen sind relativ zu Eingabedateien definiert Relocation Anpassen von Sprung- und Speicheradressen an Layout der Ausgabe Bsp.: Zeiger zeigt auf Position 100, Segment ist in Ausgabedatei an Position 1000 Zeiger muss auf 1100 zeigen Auflösen von externen Symbolen Bsp.: Anweisung ruft Prozedur div auf, die an Position 500 liegt in einem Segment, das an Position 1000 liegt Anweisung muss Adresse 1500 referenzieren mod1.c int b=7; extern int b; int a; 0x9A12 0x mod2.c b=a; Compiler mov mov Assembler Linker a,%eax %eax,b A A A A3 12 9A a: Pos. 0x1234.text.data 18

19 9.3 Der Linker Relocation Hardware + Software Relocation Betriebssystem kann jedem Prozess einen eigenen virtuellen Adressraum geben, der an einer definierten virtuellen Adresse beginnt Tatsächlicher Speicherzugriff über Memory Management Unit Linker kombiniert Eingabedateien zu einer großen Ausgabedatei, die ohne weitere Anpassungen in den virtuellen Adressraum geladen werden kann + Einfacher Ladevorgang + Fehlerhafte Programme können andere Programme nicht stören Link-Time- + Load-Time-Relocation Beispiel MS-DOS: Link-Time-Relocation: jedes Programm wird so gebunden, als würde es an Speicherposition Null geladen werden. Load-Time-Relocation: tatsächliche Adresse hängt vom verfügbaren Speicher ab und das Programm muss beim Start angepasst werden. Beispiel Windows: Link-Time-Relocation: jedes Programm wird so gebunden, als würde es an einer wohldefinierten Adresse geladen werden. Load-Time-Relocation: i.d.r. ist diese Adresse verfügbar, d.h. keine Anpassung notwendig. Selten: Adresse ist in Gebrauch und Anpassung muss vorgenommen werden. 19

20 9.4 Der Lader Aufgabe: Programm in den Hauptspeicher bringen und starten Segmentation Einlesen der Header-Informationen, um Speicheranforderungen zu bestimmen Prüfen, ob Programmtext bereits im Speicher; nein text-segment laden Privates Datensegment anlegen, Daten aus Datei laden, bss-bereich mit 0 belegen Stack-Segment anlegen, Kommandozeilenparameter ablegen Register initialisieren Zur Startadresse springen a.out-datei Prozess Paging Virtuellen Speicher für Daten und Code anlegen Teile der Datei direkt in den Hauptspeicher einblenden hdr text data text size bss size data size text data bss heap stack 20

21 9.2 Der Lader Paging und Virtueller Speicher Adressraum des Programms wird in Seiten fester Größe unterteilt ( Pages ) Physikalischer Speicher wird in Rahmen der gleichen Größe unterteilt ( Frames ) Page Table mit Eintrag für jede Seite des Adressraums Eintrag enthält Adresse der Seite im physikalischen Speicher oder not present Seite muss bei Zugriff von Hintergrundspeicher nachgeladen werden Inhalt einer Datei direkt in den Hauptspeicher einblenden Dieselbe Seite mehreren Prozessen zur Verfügung stellen Virtueller Adressraum Page Table Physikalischer Speicher Hintergrundspeicher 21

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

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

Mehr

E Das ELF-Binärformat

E Das ELF-Binärformat E Das ELF-Binärformat ELF steht für Executable and linkable format und wird als Dateiformat für ausführbare Dateien, Objektfiles und Bibliotheken verwendet. Unter Linux hat es sich seit mehreren Jahren

Mehr

Kapitel 6 Speicherverwaltung Seite 1 zum Teil nach: Silberschatz&Galbin, Operating System Concepts, Addison-Wesley)

Kapitel 6 Speicherverwaltung Seite 1 zum Teil nach: Silberschatz&Galbin, Operating System Concepts, Addison-Wesley) Kapitel 6 Speicherverwaltung Seite 1 6 Speicherverwaltung 6.1 Hintergrund Ein Programm muß zur Ausführung in den Hauptspeicher gebracht werden und in die Prozeßstruktur eingefügt werden. Dabei ist es in

Mehr

Kapitel VI. Speicherverwaltung. Speicherverwaltung

Kapitel VI. Speicherverwaltung. Speicherverwaltung Kapitel VI Speicherverwaltung 1 Speicherverwaltung Computer exekutiert Programme (mit Daten) im Hauptspeicher. Hauptspeicher: Großes Array von Wörtern (1 oder mehrere Bytes) Jedes Wort hat eine eigene

Mehr

Einführung in die technische Informatik

Einführung in die technische Informatik Einführung in die technische Informatik Christopher Kruegel chris@auto.tuwien.ac.at http://www.auto.tuwien.ac.at/~chris Betriebssysteme Aufgaben Management von Ressourcen Präsentation einer einheitlichen

Mehr

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT Architektur Übersicht (allgemeine) OOP in C++ Polymorphie Virtuelle Funktionen Kompilieren Linken dynamische/statische Bibliotheken Tutorial: vs2008+ogre+(campus modell) Architektur (allgemeine) OOP in

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

Teil 1: Prozessorstrukturen

Teil 1: Prozessorstrukturen Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium

Mehr

Betriebssysteme Teil 4: Übersetzung von C-Programmen

Betriebssysteme Teil 4: Übersetzung von C-Programmen Betriebssysteme Teil 4: Übersetzung von C-Programmen 18.10.13 1 Übersicht Übersetzungsprozess gcc(i) als Steuerprogramm Assembler Binder Hauptprogramme in C In dieser Einheit werden nur die Grundprinzipien

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

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

Der Computer von Neumann

Der Computer von Neumann 1. Einführung Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Aufbau eines Computers!Systemumgebung!Vorgang des Programmierens!Editor, Debugger, Linker!Programmiersprachen - Geschichte Copyright:

Mehr

Netzwerksicherheit Musterlösung Übungsblatt 4: Viren

Netzwerksicherheit Musterlösung Übungsblatt 4: Viren Institut für Informatik Alina Barendt und Philipp Hagemeister Netzwerksicherheit Musterlösung Übungsblatt 4: Viren 1 Vorbereitung msg db "Virus" mov ah, 40h mov bx, 1 mov cx, $5 mov dx, msg int 21h ; Write

Mehr

Einführung ins Programmieren

Einführung ins Programmieren Einführung ins Programmieren Prof. Dr. Markus Gross Informatik I für D-MAVT (FS 2015) Aufbau eines Computers Systemumgebung Vorgang des Programmierens Editor, Debugger, Linker Programmiersprachen - Geschichte

Mehr

CA Übung 30.01.2006. Christian kann heute nicht kommen => ich bin heute da, Christian das nächste Mal wieder

CA Übung 30.01.2006. Christian kann heute nicht kommen => ich bin heute da, Christian das nächste Mal wieder CA Übung 30.01.2006 Hallo zusammen! Christian kann heute nicht kommen => ich bin heute da, Christian das nächste Mal wieder Adrian Schüpbach: scadrian@student.ethz.ch Christian Fischlin: cfischli@student.ethz.ch

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

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

Systemstart und Programmausführung

Systemstart und Programmausführung Michael Moese, 15.12.2003 Konzepte von Betriebssystemkomponenten Systemstart und Programmausführung Wir haben immer über ein Betriebssystem (Linux) gesprochen, aber wie wird es gestartet wenn man den Rechner

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

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

Übung zu Grundlagen der Betriebssysteme. 13. Übung 22.01.2012

Übung zu Grundlagen der Betriebssysteme. 13. Übung 22.01.2012 Übung zu Grundlagen der Betriebssysteme 13. Übung 22.01.2012 Aufgabe 1 Fragmentierung Erläutern Sie den Unterschied zwischen interner und externer Fragmentierung! Als interne Fragmentierung oder Verschnitt

Mehr

6 Speicherverwaltung

6 Speicherverwaltung 6 Speicherverwaltung 6.1 Hintergrund Ein Programm muß zur Ausführung in den Hauptspeicher gebracht werden und in die Prozeßstruktur eingefügt werden. Dabei ist es in mehreren Schritten zu modifizieren.

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

Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"

Praxisorientierte Einführung in C++ Lektion: Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm) Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte

Mehr

D i g i t a l l a b o r

D i g i t a l l a b o r Hochschule Karlsruhe Technik und Wirtschaft Fakultät für Informatik und Wirtschaftsinformatik Prof. Dr. A. Ditzinger / Dipl.-Inform. (FH) O. Gniot Prof. Dr. N. Link / Dipl.-Ing. J. Krastel D i g i t a

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

Effizientes Memory Debugging in C/C++

Effizientes Memory Debugging in C/C++ Effizientes Memory Debugging in C/C++ Adam Szalkowski Embedded Computing Conference 2014 Ursachen/ Symptome Debugging Tools Ursachen / Symptome Was habe ich falsch gemacht? Was kann denn passieren im schlimmsten

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

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

Einführung zum MS Visual Studio

Einführung zum MS Visual Studio 0 Visual Studio Verzeichnispfade einstellen Stellen Sie nach dem Start von Visual Studio zunächst Ihr Home-Laufwerk, d.h. den Pfad für Ihre Projektverzeichnisse und Dateien ein. Beenden Sie Visual Studio

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

Praktikum Betriebssysteme 1. Aufgabe (1)

Praktikum Betriebssysteme 1. Aufgabe (1) FG TECHNISCHE INFORMATIK U BS 041 01 TH 09 Praktikum Betriebssysteme 1. Aufgabe (1) Es wird ein unter LINUX lauffähiges C++-Programm ptab, mit dem Informationen über die Partitionierung von Festplatten

Mehr

GCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0

GCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0 1 GCC 3.x Stack Layout Auswirkungen auf Stack-basierte Exploit-Techniken Tobias Klein, 2003 tk@trapkit.de Version 1.0 2 Abstract Eine spezielle Eigenschaft des GNU C Compilers (GCC) der Version 3.x wirkt

Mehr

Betriebssysteme KU - Einführungstutorium

Betriebssysteme KU - Einführungstutorium Betriebssysteme KU - Einführungstutorium SWEB-Tutoren irc://irc.at.euirc.net/bs Teamwork Arbeitsaufteilung? Zeiteinteilung? Codeeinteilung? Kommunikation! Kommunikation Kommunikation mit dem Team Gruppentreffen

Mehr

5 Speicherverwaltung. bs-5.1 1

5 Speicherverwaltung. bs-5.1 1 5 Speicherverwaltung bs-5.1 1 Pufferspeicher (cache) realer Speicher Primärspeicher/Arbeitsspeicher (memory) Sekundärspeicher/Hintergrundspeicher (backing store) (Tertiärspeicher/Archivspeicher) versus

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

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

DAP2-Programmierpraktikum Einführung in C++ (Teil 1) DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume

Mehr

Embedded-Linux-Seminare. Linux als Betriebssystem

Embedded-Linux-Seminare. Linux als Betriebssystem Embedded-Linux-Seminare Linux als Betriebssystem http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: info@embedded-linux-seminare.de

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

U5 5. Übung. U5-1 Überblick. Besprechung 3. Aufgabe (mini_sh) Fragen zur Aufgabe 4 (malloc)??? Erstellen von C-Funktionsbibliotheken. SoS I - Ü U5.

U5 5. Übung. U5-1 Überblick. Besprechung 3. Aufgabe (mini_sh) Fragen zur Aufgabe 4 (malloc)??? Erstellen von C-Funktionsbibliotheken. SoS I - Ü U5. U5 5. Übung U5 5. Übung U5-1 Überblick Besprechung 3. Aufgabe (mini_sh) Fragen zur Aufgabe 4 (malloc)??? Erstellen von C-Funktionsbibliotheken RCS U5.1 U5-2 Erstellen von C-Funktionsbibliotheken U5-2 Erstellen

Mehr

Benutzerprogramme und Benutzer-Adressraum

Benutzerprogramme und Benutzer-Adressraum Benutzerprogramme und Benutzer-Adressraum Prof. Dr. Margarita Esponda Freie Universität Berlin WS 2011/2012 1 Benutzerprogramme Prozess src1.c Compiler cc src1.s Assembler as src1.o ELF Executable and

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

U5-2 Erstellen von C-Funktionsbibliotheken

U5-2 Erstellen von C-Funktionsbibliotheken U5 5. Übung U5 5. Übung U5-1 Überblick Besprechung 3. Aufgabe (mini_sh) Fragen zur Aufgabe 4 (malloc)??? Erstellen von C-Funktionsbibliotheken RCS U5.1 1 Überblick statische Bibliotheken Archiv, in dem

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

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

Programmentwicklung mit C++ (unter Unix/Linux)

Programmentwicklung mit C++ (unter Unix/Linux) Programmentwicklung mit C++ (unter Unix/Linux) Erste Schritte Der gcc - Compiler & Linker Organisation des Source-Codes & Libraries Automatische Programmgenerierung: Make Birgit Möller & Denis Williams

Mehr

Memory Management. Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at

Memory Management. Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at Memory Management Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1 Speicherverwaltung Effektive Aufteilung und Verwaltung des Arbeitsspeichers für BS und Programme Anforderungen

Mehr

Programm in Source-Files aufteilen Erhöht Lesbarkeit Aufteilung orientier t sich an logischer Struktur des Programms Getrenntes Übersetzen möglich:

Programm in Source-Files aufteilen Erhöht Lesbarkeit Aufteilung orientier t sich an logischer Struktur des Programms Getrenntes Übersetzen möglich: Source-Files Programm == Source-File nicht sinnvoll Unübersichtlich Bei jeder kleinen Änderung gesamtes File neu übersetzen Übersetzen dauert lange Keine Gruppenarbeit möglich Programm in Source-Files

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

TA Hacke Dein bewaffnen Sie!

TA Hacke Dein bewaffnen Sie! What can possibly go wrong? _john mcacicl: jdodhcn3@dt2u3x4c2ofdneo.rodreg (nur jeden 2. buchstaben lesen ) Juli 2012 Einleitung gdb Kerndetails Rinde M{3,4} Programmerzeugung in C (GNU Toolchain) Quellcode

Mehr

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44 Virtueller Speicher SS 2012 Grundlagen der Rechnerarchitektur Speicher 44 Die Idee Virtuelle Adressen Prozess 1 Speicherblock 0 Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm

Mehr

Compiler und Präprozessor (1) Erstellen eines Projektes

Compiler und Präprozessor (1) Erstellen eines Projektes Compiler und Präprozessor (1) Erstellen eines Projektes Projekte bestehen meist aus mehreren Dateien, z.b. Quelldateien, Funktionssammlungen in Bibliotheken Zur Definition eines Projektes sind folgende

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

Übungen zur Vorlesung Systemsicherheit

Übungen zur Vorlesung Systemsicherheit Übungen zur Vorlesung Systemsicherheit Address Space Layout Randomization Tilo Müller, Reinhard Tartler, Michael Gernoth Lehrstuhl Informatik 1 + 4 19. Januar 2011 c (Lehrstuhl Informatik 1 + 4) Übungen

Mehr

Die LogTrace-Bibliothek

Die LogTrace-Bibliothek Die LogTrace-Bibliothek Debugging-Hilfsmittel Weiteres Beispiel Motivation void Func() { FunktionLog var( Func );... Func2();... Ausgabe sollte hier sein: >Func > Func2 < Func2 < Func void Func2() { FunktionLog

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

Hochschule Darmstadt. IT-Sicherheit

Hochschule Darmstadt. IT-Sicherheit Hochschule Darmstadt IT-Sicherheit K l a u s u r WS 2014/2015, 2015-02-12 Dr. Martin Mink Name, Vorname: Matrikelnummer: Hinweise: (a) Es sind keine Hilfsmittel erlaubt. Mobiltelefone sind auszuschalten.

Mehr

Funktionen und Parameter

Funktionen und Parameter Funktionen in C++ Funktionen und Parameter Wie in Java: Parameter sind lokale Variablen Argumente werden bei Aufruf zugewiesen Extras: Zeiger-Parameter für alle Typen: als Rückgabewerte um große Kopien

Mehr

OpenCL Implementierung von OpenCV Funktionen

OpenCL Implementierung von OpenCV Funktionen Multi-Core Architectures and Programming OpenCL Implementierung von OpenCV Funktionen julian.mueller@e-technik.stud.uni-erlangen.de Hardware/Software Co-Design August 18, 2011 1 Table of content 1 OpenCL

Mehr

Profiling und Coverage mit GNU und Bare Embedded Systems

Profiling und Coverage mit GNU und Bare Embedded Systems Profiling und Coverage mit GNU und Bare Embedded Systems Life is too short for bad tools! Prof. Erich Styger erich.styger@hslu.ch +41 41 349 33 01 Coverage und Profiling Coverage: Analyse der Testabdeckung

Mehr

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Das Beispiel orientiert sich am selben Code, der im Teil 1 der Serie verwendet wurde. Text Styles: Shell Prompt mit

Mehr

Java-Prozessoren. Die Java Virtual Machine spezifiziert... Java Instruktions-Satz. Datentypen. Operanden-Stack. Konstanten-Pool.

Java-Prozessoren. Die Java Virtual Machine spezifiziert... Java Instruktions-Satz. Datentypen. Operanden-Stack. Konstanten-Pool. Die Java Virtual Machine spezifiziert... Java Instruktions-Satz Datentypen Operanden-Stack Konstanten-Pool Methoden-Area Heap für Laufzeit-Daten Class File Format 26 Die Java Virtual Machine Java Instruktions-Satz

Mehr

4.3 Hintergrundspeicher

4.3 Hintergrundspeicher 4.3 Hintergrundspeicher Registers Instr./Operands Cache Blocks Memory Pages program 1-8 bytes cache cntl 8-128 bytes OS 512-4K bytes Upper Level faster Disk Tape Files user/operator Mbytes Larger Lower

Mehr

TIMI: Technische Informatik für Medieninformatiker

TIMI: Technische Informatik für Medieninformatiker TIMI: Technische Informatik für Medieninformatiker Bachelor-Studiengang Digitale Medien Medieninformatik SS 2004 Niels Pollem Arbeitsgruppe Rechnernetze (Prof. Dr.-Ing. Ute Bormann) Scheduling:

Mehr

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 1 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich kurze Stunden mit Stoffueberblick -> mehr Zeit fuer Fragen This semester s menu... Imperative Programmierung

Mehr

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Dokumentation mit Doxygen

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Dokumentation mit Doxygen Grundkurs C++ Dokumentation mit Doxygen Doxygen Überblick Grundkurs C++ 2 Doxygen doxygen g Erzeugt Doxyfile Konfigurationsdatei Kann mit Texteditor bearbeitet werden. doxygen Doxyfile Erzeugt Dokumentation

Mehr

Grundlagen der Informatik III Wintersemester 2010/2011

Grundlagen der Informatik III Wintersemester 2010/2011 Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, Patrik Schmittat 2. Aufgabenblatt mit Lösungsvorschlag 08.11.2010 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen

Mehr

Zugriff auf die Modul-EEPROMs

Zugriff auf die Modul-EEPROMs MAX-P- und P-Bibliotheken EEPROM-Zugriff 1 Zugriff auf die Modul-EEPROMs Jedes X-Bus-Modul verfügt über ein EEPROM, in dem modulspezifische Daten gespeichert werden. Neben einigen Bereichen, die vom Betriebssystem

Mehr

Nachholklausur Informatik II

Nachholklausur Informatik II Technische Universität Darmstadt Teil Informatik II Fachbereich Informatik Frühjahr 2001 Fachgebiet Graphisch-Interaktive Systeme Prof. Dr. J. L. Encarnação Dr. J. Schönhut Nachholklausur Informatik II

Mehr

Freescale 68HCS12X Aufbau eines Linker Commandfiles für den 68HCS12XDP512 (ohne XGATE)

Freescale 68HCS12X Aufbau eines Linker Commandfiles für den 68HCS12XDP512 (ohne XGATE) COSMIC Software GmbH Rohrackerstr. 68 D-70329 Stuttgart Tel. ++49 (0) 711 42040 62 Fax. ++49 (0) 711 42040 68 Email sales@cosmic-software.de Internet www.cosmic-software.com Seite 1 von 13 Tech. Note:

Mehr

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere

Mehr

Compiler und Codegenerierung. Hw-Sw-Co-Design

Compiler und Codegenerierung. Hw-Sw-Co-Design Compiler und Codegenerierung Hw-Sw-Co-Design Wo sind wir? System Verhalten Modul Architektur Block SW HW Logik Struktur Compiler und Codegenerierung Compiler - Aufbau Codegenerierung Codeoptimierung Codegenerierung

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

3.0 8051 Assembler und Hochsprachen

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

Mehr

Computergrundlagen Programmieren in C

Computergrundlagen Programmieren in C Computergrundlagen Programmieren in C Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2013/14 Die Sprache C D. M. Ritchie, 1941 2011 Entwickelt 1971-1973 aktueller Standard:

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

µc/os-ii FLASHPORTIERUNG FÜR SK167 Peter Balog Fachhochschule Technikum Wien ZUSAMMENFASSUNG:

µc/os-ii FLASHPORTIERUNG FÜR SK167 Peter Balog Fachhochschule Technikum Wien ZUSAMMENFASSUNG: TAGUNGSBAND -157- MIKROELEKTRONIK 2003 µc/os-ii FLASHPORTIERUNG FÜR SK167 Peter Balog Fachhochschule Technikum Wien ZUSAMMENFASSUNG: µc/os-ii (MicroC/OS-II) ist ein optimierter, stark skalierbarer Multitasking-

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

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

bereit (oder Zombie genannt). Normales Ende (exit) und synchrone und asynchrone Signal-Ereignisse, z.b.

bereit (oder Zombie genannt). Normales Ende (exit) und synchrone und asynchrone Signal-Ereignisse, z.b. Prof. Dr. Michael Jäger FB MNI Lösungsvorschlag zur Klausur Betriebssysteme vom 1.10.2014 Blau gekennzeichnete Textstellen sind beispielhafte Lösungen bzw. Antworten zu den Aufgaben. Rot gekennzeichnete

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

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

Bugs beim Kompilieren einer Betty-App: Vergleich ARM/Keil versus GCC

Bugs beim Kompilieren einer Betty-App: Vergleich ARM/Keil versus GCC Eine Betty-App ist eine Anwendung, die auf der Swissbetty von Pollin laufen soll. Sie verkehrt mit dem Grundprogramm BettyBase über Softwareinterrupts, also über SVC-Befehle. Da der GCC die nicht direkt

Mehr

Praktikum Mikrocomputertechnik

Praktikum Mikrocomputertechnik Anleitung zum Praktikum Mikrocomputertechnik Im Praktikum wird der Mikrocontroller 68332 von Motorola verwendet. Dieser Mikrocontroller besteht aus einer 32-Bit CPU und integrierten Peripheriebausteinen

Mehr

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken Im Folgenden finden Sie jeweils die korrekte Antwort zu den im Buch abgedruckten Prüfungsfragen, soweit die Antworten in Textform

Mehr

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen

Mehr

Grundlagen der Informatik III Wintersemester 2010/2011

Grundlagen der Informatik III Wintersemester 2010/2011 Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, Patrik Schmittat 9. Aufgabenblatt mit Lösungsvorschlag 17.01.2011 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen

Mehr

Modulare Programmierung und Bibliotheken

Modulare Programmierung und Bibliotheken Modulare Programmierung und Bibliotheken Proseminar-Vortrag am 24.06.2011 von Ludwig Eisenblätter Ludwig Eisenblätter 1 von 25 Modulare Programmierung und Bibliotheken Inhaltsübersicht Motivation / Einleitung

Mehr

Implementierung der Jikes Research Virtual Machine

Implementierung der Jikes Research Virtual Machine Fakultät Informatik Institut für technische Informatik, Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Implementierung der Jikes Research Virtual Machine Hauptseminar Technische Informatik

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper Speicherverwaltung Real Mode Nach jedem starten eines PC befindet sich jeder x86 (8086, 80386, Pentium, AMD) CPU im sogenannten Real Mode. Datenregister (16Bit) Adressregister (20Bit) Dadurch lassen sich

Mehr

Angewandte IT-Sicherheit

Angewandte IT-Sicherheit Angewandte IT-Sicherheit Johannes Stüttgen Lehrstuhl für praktische Informatik I 30.11.2010 Lehrstuhl für praktische Informatik I Angewandte IT-Sicherheit 1 / 28 Aufgabe 1 Betrachten sie folgendes Programm:

Mehr

Hello world. Sebastian Dyroff. 21. September 2009

Hello world. Sebastian Dyroff. 21. September 2009 Hello world Sebastian Dyroff 21. September 2009 1 / 35 Inhaltsverzeichnis Organisatorisches Hello World Typen und Operatoren Programmfluss Weitere Konstrukte Nützliche Tipps 2 / 35 Inhalte dieser Veranstaltung

Mehr

Schleifenprogrammierung in C/C++, Fortran und Pascal

Schleifenprogrammierung in C/C++, Fortran und Pascal Schleifenprogrammierung in C/C++, Fortran und Pascal Stefan Ackermann Mathematisches Institut der Universität Leipzig 8. April 2009 1 Die kopfgesteuerte Schleife Bei der kopfgesteuerten Schleife steht

Mehr

Java Virtual Machine (JVM) Bytecode

Java Virtual Machine (JVM) Bytecode Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,

Mehr