Übersicht. Übersetzungsprozess gcc(i) als Steuerprogramm Assembler Binder Hauptprogramme in C
|
|
- Ernst Braun
- vor 7 Jahren
- Abrufe
Transkript
1 Übersicht Übersetzungsprozess gcc(i) als Steuerprogramm Assembler Binder Hauptprogramme in C In dieser Einheit werden nur die Grundprinzipien dargestellt, dies ist keine Beschreibung konkreter Formate etc. 2
2 Übersetzungsprozess von C I Überblick Syntax Analyse (Parser) Compiler Ableitungsbaum Optimierung Compiler Module als Object-Files Object-File Codegenerierung Assemblieren Zusammensetzen Compiler Assembler Linker/Linkage Editor Ableitungsbaum Sequenz Zwischensprache Sequenz Assembler Sequenz Tabellen Sequenz Tabellen Prozess- Image Laden Lader/Loader Daten im RAM Ausführung 3 Übersetzungsprozess von C II C-Programm Beispiel.c Preprozessor Include-Dateien C-Programm mit expandierten Makros Übersetztes Programm ohne Bibliotheksroutinen Fertiges ausführbares Programm Beispiel.i Beispiel.o Beispiel (Eigentlicher) Übersetzer Binder Lader in Linux Hauptprogramm Bibliotheken Programm in Ausführung 4
3 Durchlauf (Pass) Das Übersetzen erfolgt in mehreren Durchläufen (Pass), in denen das gesamte Programm vollständig gelesen und interpretiert wird. Nach jedem Durchlauf wird das Programm in überarbeiteter Form neu in einer speziellen Datei angelegt; diese wird bei dem nächsten Durchlauf benutzt. Die Steuerung der Durchläufe übernimmt gcc(i). Bei Compilern sind 4 bis 5 Durchläufe üblich, es können auch erheblich mehr sein, z. B. PL/1 hatte bis zu 60 Durchläufe. 5 Kommando gcc(i) I gcc [-c] [-g] [-o ofile] [-E] [-M] [-S] file1 file2... filen Die angegeben Dateien file1 bis filen werden als C-Programme angesehen und entsprechend den Flags übersetzt. Flag -c bewirkt, dass vor dem Linken der Vorgang beendet wird, d.h. dass lediglich *.o-dateien erzeugt werden. Flag -g bewirkt, dass Debugging-Informationen den Binärdateien hinzugefügt werden. Flag -o dient der Benennung der Ausgabedatei als ofile. Flag -E bewirkt einen Stopp nach der Preprozessor (Generieren von *.i- Dateien). Flag -M bewirkt die Ausgabe einer Regel zur Benutzung in make(1); es wird nicht übersetzt. Flag -S bewirkt die Erzeugung des Assemblers. 6
4 Kommando gcc(i) II gcc (GNU C) ist ein Programm, das alle Schritte der Übersetzung durch Starten von weiteren Programmen veranlasst und steuert. Per Parameter kann der globale Ablauf nach jedem Schritt abgebrochen werden, z.b. Parameter -E: nur bis *.i-datei Parameter -c: nur bis *.o-datei Anhand der Dateinamen-Endung erkennt gcc(i) wie weit der Übersetzungsvorgang vorangeschritten ist und veranlasst entsprechend die nächsten Schritte, so dass am Ende das fertig gebundene und ausführbare Programm vorhanden ist. Beispiel: "gcc a.o b.c c.o" führt für b.c alle, für a.o und c.o nur den letzten Schritt (Binden) durch. 7 Übersetzungsprozess von C III Syntaxanalyse 1. Durchlauf: Makroexpansion Es werden die Makrodefinitionen (C hat die Möglichkeit von Makros, in Programmiersprachen ohne Makros wird dieser Schritt ausgelassen) vermerkt und alle Makro-Aufrufe mit den Makrokörpern samt Parametern ersetzt. 2. Durchlauf: Syntaktische Prüfung Entspricht der entstandene Text den Regeln der Sprache? Z.B. Hat jede öffnende Klammer (rund oder geschweift) eine korrespondierende schließende? Wird jedes Statement durch ein Semikolon abgeschlossen? 3. Durchlauf: Semantische Prüfung Sind alle Variablen und Funktionen deklariert? Werden sie übereinstimmend damit benutzt? 8
5 Übersetzungsprozess von C IV 4. Durchlauf: Optimierung (optional) Können Deklarationen weggelassen werden, da die Variablen nicht benutzt werden? Lassen sich Schleifen verkürzen? 5. Durchlauf: Erzeugung von Assembler-Code Für jedes Statement wird der entsprechende Assemblercode generiert, so dass das generierte Programm das tut, was es laut Sprachdefinition tun sollte. 6. Durchlauf: Assemblieren Der Compiler ist jetzt fertig; es wird ein Assembler gestartet, der das generierte Assembler-Programm in eine Objektdatei übersetzt. 9 Übersetzungsprozess von C V Die generierte Objektdatei ist aus folgenden Gründen nicht ausführbar: Es fehlen aufgerufene und nicht programmierte Routinen, z. B. System.out.println() in Java oder printf() in C. Globale Variablen haben noch keine feste Position (Adresse), sie könnten an verschiedenen Stellen angelegt werden. Der Binder (Linker, Linkage Editor) setzt das endgültige Programm unter Verwendung von Bibliotheken zusammen und positioniert die globalen Variablen. Erst dessen Ergebnis kann ausgeführt werden. 10
6 Übersetzungsprozess von C V 7. Durchlauf: Binden Der Binder durchsucht Objektbibliotheken, um ein unvollständiges Programm mit den nicht selbst programmierten, aber aufgerufenen Subroutinen zu ergänzen. Am Ende ist eine direkt ausführbare Datei entstanden. Jetzt erst kann die Datei mit Maschinencode vom Betriebssystem in den RAM geladen und ausgeführt werden. Java wird etwas anders realisiert: es wird nicht bis zum Maschinencode übersetzt, sondern in eine Zwischensprache: Java-Byte-Code. Dieser wird in einem Interpreter (Virtuelle Maschine) ausgeführt. Bei Linux ist es meistens auch etwas anders. 11 Assembler I Assembler = Übersetzer für Programme in einer symbolischen Maschinensprache Die Sprache Assembler ist für jeden CPU-Typ anders und spiegelt die Eigenarten der CPU-Architektur wieder. Zur Assembler-Sprache gehören u.a.: Befehle (Instruktionen) der CPU. Makros als Zusammenfassungen mehrerer Befehle. Anweisungen zur Reservierung von Speicherplatz. Anweisungen zur Belegung von Speicherplatz. Der Assembler übersetzt das Assembler-Programm in ein maschinen-codiertes Format, dem Objektformat. Diese Dateien heißen daher Objektdateien. 12
7 Assembler II Fiktives Beispiel Assembler Objekt-Datei 13 Assembler III Assemblersprachen sind in der Regel spalten-orientiert, d.h. die Zeilen haben ein festes Format, das einzuhalten ist. Ein wichtiges Charakteristikum eines Assemblers ist, dass die Assembler-Befehle fast immer 1:1 zu Maschinenbefehlen umgesetzt werden (Ausnahme: Verwendung von Makros). Sprungmarken = Label = Namen für Speicherstellen (symbolische Adressen) von bestimmten Instruktionen, z. B. Beginn einer Subroutine Das Programmieren in Assembler ist sehr mühselig, da: es viel Zeit kostet, viele Fehler gemacht werden können. Aber: In Assembler sind die effizientesten Programme realisierbar 14
8 Compiler vs. Assembler Höhere Programmiersprachen, wie z. B. C oder Java, werden durch Compiler in Maschinensprache übersetzt. Compiler = Übersetzer für Programme in einer höheren Programmiersprache, die sich dadurch auszeichnet, dass ein Statement ("Befehl") dieser Sprache in mehrere Befehle in der Maschinensprache übersetzt werden muss. 15 Reales Beispiel I W EQU 0 ; Bit für Working Register F EQU 1 ; Bit für File Register STATUS EQU 0x003 ; Adresse Statusregister TRISC EQU 0x087 ; Adresse Tristatekontrolle PORT C ORG 0 ; Beginn goto start ; Sprung zum Programmanfang ORG 4 ; Interrupt-Einsprung goto start ; nicht besetzt ORG 5 ; Anfang des Programms start bsf STATUS,RPO ; RPO <- 1: Registerbank 1 movlw Oxff ; nach W-Register movwf TRISB ; W-Register nach Steuerung Eingang clrf TRISC ; Port C ist Ausgang bcf STATUS,RPO ; RPO <- 0: Registerbank 0 ; unendliche Arbeitsschleife loop movf PORTB,w ; speichere Eingabe nach W-Register movwf PORTC ; speichere W-Register nach Ausgabe goto loop ; springe immer (Schleife) END Aus [8-3] S.44 16
9 Reales Beispiel II Pseudo-Instruktionen Instruktion Erläuterung EQU ORG END Equivalence Definition von Konstanten Origin Fiktive Speicherzellen-Adresse, an der die folgenden Instruktionen platziert werden Ende des Assembler-Programms bzw. Moduls Erläuterungen der (Pseudo-)Befehle von einem Assembler für PIC-Microcontroller. Pseudo-Befehl = Anweisung an den Assembler zu dessen Steuerung Pseudo-Befehle entsprechend keinen Anweisungen des Prozessors sie sind Anweisungen an den Assembler. 17 Aufbau von Befehlen 18
10 Arten von Operanden (Adressierungsarten) 19 Aufbau von Befehlen (fiktives Beispiel) Adressierungsart = Art und Weise der Bestimmung bzw. Adresse des Operanden 20
11 Beispiel: Objekt-Fileformat (a.out) I 21 Beispiel: Objekt-Fileformat (a.out) II Header = Deskriptor für den Aufbau der Datei Text = Tabelle mit dem übersetzten Code Data = Tabelle mit den vorbelegten globalen Daten (static) Relocation Information = Verschiebungsinformation = Tabelle mit der Beschreibung der Stellen im Code, die durch den Linker korrigiert werden müssen Symbol-Tabelle = Tabelle mit den Deskriptoren von Symbolen, z.b. Namen von Variablen oder Routinen String-Tabelle = Feld mit de Zeichenketten (Strings), die die Symbole ausmachen Da dieselben Symbole mehrfach vorkommen können, werden die Strings in der String-Tabelle und die Verweise darauf in der Symbol-Tabelle abgelegt. 22
12 Verschiebungsinformation (Relocation Info) Wenn ein Modul auf eine static-variable zugreift, dann muss der Ort, also dessen Adresse zum Zeitpunkt des Bindens berechnet werden, denn der Ort hängt von der Position des betreffenden Moduls innerhalb der Binärdatei ab. In der Tabelle Relocation Information stehen Deskriptoren, die festlegen, an welchen Stellen im Code die zu korrigierende Adressen stehen. Wenn die CPU mit einer relativen Adressierungsart darauf zugreift, ist die Korrektur zwingend erforderlich. Wenn die CPU relativ zu einem Register, z.b. PC, darauf zugreift, so steht im Code lediglich die Differenz der Adressen zwischen Register und dem Ort. Dann ist eine Verschiebung nicht nötig. Dasselbe gilt analog für Zugriffe auf absolute Adressen. 23 Bemerkungen Die beiden vorgestellten Formate sind nur Beispiele. Für Objekt-Dateien gibt es unter Linux folgende Formate: Klassisches a.out-format (siehe oben, veraltet) COFF (Common Object File Format), veraltet Siehe z.b. ELF (Executable and Linking Format) Siehe z.b. Format Heutige Systeme benutzen nur noch das ELF-Format. 24
13 Binden I 25 Binden II - Binärcode (Objectcode) 26
14 Binden III - Bibliotheken 27 Begriffe Bibliothek = Archiv = Library = Datei mit mehreren benannten Informationsblöcken einschließlich eines Verzeichnisses; jeder Block kann eine eigenständige Datei aufnehmen, z. B. Zip-Archive Beispielstruktur: Header Index Datei 1 Datei 2... Datei N Objektbibliothek = Bibliothek für Objektdateien Binärprogramm = Aus vielen Objektdateien bzw. Bibliotheken zusammengesetztes ausführbares Programm 28
15 Beispiel: Bibliothek (ar-format) Siehe 29 Binden IV 30
16 Binden V Jede übersetzte, ungebundene Objekt-Datei wird Modul genannt. Der Linker arbeitet pro Modul in folgenden Schritten: 1. Kopieren des aktuellen Moduls ans Ende der bisherigen 2. Feststellen, was dieses neue Modul an Symbole definiert 3. Diese aus der Tabelle der Unbekannten entfernen und in die Tabelle der Bekannten eintragen 4. Alle Verweise (Aufrufe etc.) im bisher geladenen Teil mit dem neuen Modul verbinden 5. Alle Verweise auf noch nicht geladene Routinen bzw. in Tabelle der Unbekannten bringen. 6. Ist die Tabelle der Unbekannten leer, so terminiert das Laden, ansonsten werden die Bibliotheken nach der Definition der Unbekannten durchsucht; wird ein Modul dazu gefunden, geht es mit Schritt 1 weiter, ansonsten wird eine Fehlermeldung produziert. 31 Zeitpunkte des Bindens Direkt während der Übersetzung des Programm Dadurch entsteht eine ausführbare Datei mit allen Teilen. Erst zum Zeitpunkt des Ladens in den RAM Es entstehen kleine nicht-ausführbare Programme, die während des Startens mit aktuellen Versionen der fehlenden Teile verbunden werden. Der Linker ist dann Teil des Laders. Dies wird meist bei Linux gemacht. Während der Laufzeit des Programms Der Binder läuft parallel zum Programm und verbindet nur die Routinen, die aufgerufen werden. 32
17 Hauptprogramm C kennt keine Hauptprogramme, alle Routinen sind gleichwertige Funktionen, die Werte liefern (und deshalb einen Aufrufer benötigen). Es wird ein in Assembler geschriebenes Hauptprogramm dazu gebunden, das eine C-Routine Namens "main" aufruft, so dass main() wie ein Hauptprogramm erscheint. Pseudocode des Hauptprogramms Initialize Register Initialize Stack Push(Parameter) call _main(argc,arv,env) /* Haupt-Programm */ call _exit(0) /* für return in main() */ 33 Nach dieser Anstrengung etwas Entspannung... 34
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
MehrComputer-Systeme. Teil 5: Central Processing Unit (CPU)
Computer-Systeme Teil 5: Central Processing Unit (CPU) Computer-Systeme WS 12/13- Teil 5/CPU 05.11.2012 1 Literatur [5-1] [5-2] [5-3] Bauer, F.L.: Wer erfand den von Neumann-Rechner? Informatik Spektrum,
MehrComputer-Systeme Teil 5: Central Processing Unit (CPU)
Computer-Systeme Teil 5: Central Processing Unit (CPU) Computer-Systeme WS 12/13- Teil 5/CPU 05.11.2012 1 Literatur [5-1] [5-2] [5-3] Bauer, F.L.: Wer erfand den von Neumann-Rechner? Informatik Spektrum,
MehrVon der Programmiersprache WHILE zum ersten Einstieg in Java
Von der Programmiersprache WHILE zum ersten Einstieg in Java Die Programmiersprache WHILE bildet den Kern jeder imperativen Programmiersprache. Man geht davon aus, dass die Ein- Ausgabe primitiv organisiert
MehrTeil 1: Prozessorstrukturen
Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium
MehrProgrammiersprachen und Übersetzer
Programmiersprachen und Übersetzer Sommersemester 2009 5. April 2009 Vorteile bei der Verwendung höherer Programmiersprachen Vorteile bei der Verwendung höherer Programmiersprachen 1. Einfache Notation
MehrHello World! Eine Einführung in das Programmieren Das erste Programm
Hello World! Eine Einführung in das Programmieren Das erste Programm Görschwin Fey Institute of Embedded Systems Hamburg University of Technology Slide 2 Betriebssystem Funktion Anwendung Gerätesteuerung
Mehr2Binden 3. und Bibliotheken
3 Vom C-Programm zum laufenden Prozess 3.1 Übersetzen - Objektmodule 1Übersetzen 3. - Objektmodule (2) Teil III 3Vom C-Programm zum laufenden Prozess 2. Schritt: Compilieren übersetzt C-Code in Assembler
MehrTechnische Informatik I - HS 18
Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik I - HS 18 Musterlösung zu Übung 3 Datum : 25.-26. Oktober 2018 Aufgabe 1: Wurzelverfahren nach Heron Das
MehrRechnerstrukturen Wintersemester 2002/03. Maschinensprache Opcode, Operanden, Adressierung Für Menschen schwer verdauliche Folgen von 0 und 1
(c) Peter Sturm, Universität Trier 1 Rechnerstrukturen 8. Assembler Für Hartgesottene Maschinensprache Opcode, Operanden, Adressierung Für Menschen schwer verdauliche Folgen von 0 und 1 Assembler Symbolische
MehrTeil 1: Prozessorstrukturen
Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium
MehrSystemprogrammierung
Systemprogrammierung 3Vom C-Programm zum laufenden Prozess 6. November 2008 Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2008 SS 2006 SOS 1 (03-Pro.fm 2008-11-06 08.52) 3 Vom C-Programm
MehrÜbung 1 - Betriebssysteme I
Prof. Dr. Th. Letschert FB MNI 13. März 2002 Aufgabe 0: Basiswissen Rechnerarchitektur: Übung 1 - Betriebssysteme I Aus welchen Komponenten besteht ein Rechner mit Von-Neumann Architektur? Was sind Bits
MehrEinführung in die Systemprogrammierung
Einführung in die Systemprogrammierung Der Binder Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 28. Mai 2015 Herausforderungen durch große Programme Große Programme: die meisten
MehrEinführung in die Systemprogrammierung
Einführung in die Systemprogrammierung Dynamische Programmbibliotheken Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 28. Mai 2015 Dynamische Programmbibliotheken Idee: Programm
MehrInformatik II SS Der Kompilationsprozess (-phasen) Schreiben des Programms. Die Organisation eines typischen Compilers
Der Kompilationsprozess (-phasen) Informatik II SS 2004 Teil 6: Sprachen, Compiler und Theorie 7 Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Scanner
MehrGrundlagen der Programmentwicklung
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Über C++ Über C++ C++ ist eine in der Industrie
MehrBeim 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
MehrProgrammiersprachen Einführung in C
Programmiersprachen Einführung in C Teil 1: Von der Maschinensprache zu C Prof. Dr. Maschinensprache: MIPS R2000 Was bewirkt folgendes Programm: 00100111101111011111111111100000 10101111101111110000000000010100
MehrMaschinencode Dateiformat und Stackframes
Maschinencode Dateiformat und Stackframes Proseminar C-Programmierung - Grundlagen und Konzepte Julian M. Kunkel julian.martin.kunkel@informatik.uni-hamburg.de Wissenschaftliches Rechnen Fachbereich Informatik
MehrTechnische Informatik 1 - Übung 3 3. & 4. November Philipp Miedl
Technische Informatik 1 - Übung 3 3. & 4. November 2016 Philipp Miedl Philipp Miedl 3. 11. 2016 1 Ziele der Übungen Aufgabe 1 Philipp Miedl 3. 11. 2016 2 Ziele der Übungen Aufgabe 1 Aufbau von Objekt-Dateien
MehrSystemprogrammierung (37-023)
Systemprogrammierung (37-023) Assemblerprogrammierung Betriebssystemgrundlagen Maschinenmodelle Dozent: Prof. Thomas Stricker Unterrichtssprache: Deutsch Textbuch: R. Paul: Sparc Architecture, Assembly
MehrDefinition Compiler. Bekannte Compiler
Compiler Inhalt: Definition Compiler / bekannte Compiler Klassifikationen von Compilern Analyse-Synthese-Modell der Kompilierung Analyse des Quellprogramms Synthesephase Die Phasen eines Compilers Symboltabellenverwaltung
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrProgrammiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
MehrBetriebssysteme I: Speicherverwaltung (Teil A: Adress-Bindung)
Betriebssysteme I: Speicherverwaltung (Teil A: Adress-Bindung) Mühlbacher BS: Speicherverwaltung TeilA Adressbindung,Loader, Linker 1 Ausgangssituation Programm ist auf einem Massenspeicher als binary
Mehr7 Laufzeit-Speicherverwaltung
7.1 Grundlagen Bevor wir die Code-Generierung betrachten, müssen wir uns Gedanken über zur Laufzeit des zu generierenden Programms notwendige Aktivitäten zur Zuordnung und Freigabe von Speicherplatz machen.
MehrComputergrundlagen Programmiersprachen, Interpreter, Compiler, Linker
Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Was sind Programme? In dieser Vorlesung: Python,
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrOffenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab...
0 1 2 0 2 1 1 2 0 2 1 0 Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 1 2 1 1 3 2 2 3 212 Um solche Tabellen leicht implementieren zu können, stellt Java das switch-statement
Mehr0 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
MehrProgramme erstellen in Java
Programmieren mit Java Modul 0 Programme erstellen in Java Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Schreiben von Computerprogrammen 3 2.1 Computerprogramme bestehen aus Daten und Instruktionen.......
Mehr1 pulsierender Speicher
1 pulsierender Speicher 1.1 Aufgabentyp Gegeben sei das folgende C-Programm: [...] (a) Geben Sie den Gültigkeitsbereich jedes Objektes des Programms an. (b) Stellen Sie die Rechnung des Programms für die
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
MehrProgrammieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff
Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Agenda Elementare Einführung C Programm Syntax Datentypen, Variablen und Konstanten Operatoren und Ausdrücke Kontrollstrukturen
MehrEinfü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).
MehrDie 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,
MehrMichael Dienert. 8. Dezember 2016
C für Unverdrossene Michael Dienert 8. Dezember 2016 Vorbemerkung Natürlich könnte ich als erstes C-Programm Hello World nehmen. Um mit dem Kompiler zu spielen, kann man aber auch gleich einen sinnvolleren
MehrARM-Cortex-M4 / Thumb-2-Befehlssatz Adressierungsarten und arithmetische Operationen
ARM-Cortex-M4 / Thumb-2-Befehlssatz Adressierungsarten und arithmetische Operationen Aufgabenstellung: - das beigefügte Assembler-Programm schrittweise ausführen - sich mit der Handhabung der Entwicklungswerkzeuge
MehrComputergrundlagen Programmiersprachen, Interpreter, Compiler, Linker
Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Was sind Programme? In dieser Vorlesung: Python,
MehrGrundlagen der Informatik Vorlesungsskript
Grundlagen der Informatik Vorlesungsskript Prof. Dr. T. Gervens, Prof. Dr.-Ing. B. Lang, Prof. Dr. F.M. Thiesing, Prof. Dr.-Ing. C. Westerkamp 16 AUTOMATISCHES ÜBERSETZEN VON PROGRAMMEN MIT MAKE... 2 16.1
MehrArrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3
Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................
MehrDr. Monika Meiler. Inhalt
Inhalt 8 Das Konfigurationswerkzeug make...8-2 8.1 Modularisierung...8-2 8.2 Modulübersetzung...8-4 8.3 Konfigurationswerkzeug make und Aufbau eines Makefiles...8-8 8.3.1 Abhängigkeiten und Kommandos...
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
MehrRechnerstrukturen. 7. Assembler. Inhalt. Vorlesung Rechnerstrukturen. Assemblerprogrammierung SML-CPU. SML-Assembler. Binden
Rechnerstrukturen 7. Assembler Assemblerprogrammierung SML-CPU Inhalt SML-Assembler Adressierungsarten Instruktionssatz Assembler-Direktiven Binden 7.2 1 Maschinensprache Instruktion = Bitkombination Für
MehrSpeicherklassen (1) Lokale Variablen
Speicherklassen (1) Lokale Variablen Lokale Variablen beschränken sich auf die Funktionen, in denen sie definiert werden Sind in der Funktion gekapselt können also nur in der Funktion verändert werden
MehrProgrammierung mit C Modularisierung von Programmen. Präprozessor-Anweisungen nutzen.
Programmierung mit C Modularisierung von Programmen. Präprozessor-Anweisungen nutzen. Modularisierung Zerlegung eines Programms in überschaubare Einheiten Die einzelnen Einheiten werden als Modul bezeichnet.
MehrAssembler - Einleitung
Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
Mehr2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen
Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrJust-In-Time-Compiler (2)
Just-In-Time-Compiler (2) Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2011/2012 Just-In-Time-Compiler (2) 1/13 2011-09-12 Just-In-Time-Compiler
MehrJust-In-Time-Compiler (2)
Just-In-Time-Compiler (2) Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2015/2016 V. Sieh Just-In-Time-Compiler
MehrÜbungsblatt 10 (Block C 2) (16 Punkte)
georg.von-der-brueggen [ ] tu-dortmund.de ulrich.gabor [ ] tu-dortmund.de pascal.libuschewski [ ] tu-dortmund.de Übung zur Vorlesung Rechnerstrukturen Wintersemester 2016 Übungsblatt 10 (Block C 2) (16
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
MehrKompilieren Datentypen Operatoren. Überblick. 1 Kompilieren. 2 Datentypen. const static volatile. 3 Operatoren. Alexander Batoulis
Überblick 1 2 const static volatile 3 Überblick 1 2 const static volatile 3 eines C Programmes bevor Programm ausführbar ist, muss es von Compiler in Maschinensprache übersetzt werden Neben Compiler werden
MehrCompilerbau für die Common Language Run-Time
Compilerbau für die Common Language Run-Time Syntax und Semantik von Programmiersprachen 2 Compilerbau Sprachbeschreibung vs. Implementierung Beschreibung: formale oder informale (engl.) Lexik, Syntax,
MehrEinfü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
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
MehrImplementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
MehrLeseprobe. Norbert Heiderich, Wolfgang Meyer. Technische Probleme lösen mit C/C++ Von der Analyse bis zur Dokumentation ISBN:
Leseprobe Norbert Heiderich, Wolfgang Meyer Technische Probleme lösen mit C/C++ Von der Analyse bis zur Dokumentation ISBN: 978-3-446-42382-4 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-42382-4
MehrBetriebssysteme Teil 3: Laufzeitsystem für Programme
Betriebssysteme Teil 3: Laufzeitsystem für Programme 23.10.15 1 Literatur [3-1] Stack: http://fbim.fh-regensburg.de/~hab39652/pg1/skriptum/ ausdruecke/maschinenmodell.html [3-2] https://de.wikipedia.org/wiki/dynamischer_speicher
MehrHinweise C-Programmierung
Hinweise C-Programmierung Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2016/2017 V. Sieh Hinweise C-Programmierung
MehrEine Mini-Shell als Literate Program
Eine Mini-Shell als Literate Program Hans-Georg Eßer 16.10.2013 Inhaltsverzeichnis 1 Eine Mini-Shell 1 1.1 Einen Befehl parsen......................... 2 1.2 Was tun mit dem Kommando?...................
MehrUnterlagen. CPP-Uebungen-08/
Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen
MehrVon Assembler zu Java
Von Assembler zu Java Prof. Dr.-Ing. Thomas Schwotzer 1 Einführung Die erste imperativen Programme wurden in den Urzeiten der IT tatsächlich direkt auf der Hardware der Maschinen geschrieben. Die verfügbaren
MehrÜbungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002
1. Stellen Sie die schrittweise Verbesserung eines Compilers durch das Bootstrap- Verfahren mit Hilfe von T-Diagrammen dar. Gegeben ist ein auf der Maschine M lauffähiger Compiler C 1, der in S geschrieben
MehrPropädeutikum. Dipl.-Inf. Frank Güttler
Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik
MehrVorlesung Informatik I
Vorlesung Informatik I Universität Augsburg Wintersemester 2010/2011 Prof. Dr. Robert Lorenz Lehrprofessur für Informatik Programmieren in C Der Compilierungsprozess 1 Aufbau eines C-Programms 1. Direktiven
MehrOrganisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online
Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrGlobale Variablen Diverses. Globale Variablen. Globale Variablen
lokale Variablen Variablen bisher nur am Anfang von Funktionen auch erlaubt: am Anfang innerer Codeblöcke (innerhalb geschweifter Klammern) in C99 und als gcc-erweiterung: an beliebiger Stelle innerhalb
MehrC - PRÄPROZESSOR. Seminar effiziente C Programmierung WS 2012/13. Von Christian Peter
C - PRÄPROZESSOR Seminar effiziente C Programmierung WS 2012/13 Von Christian Peter Themen Was sind Präprozessoren? Beispiele für Präprozessoren Funktionsweisen Der C - Präprozessor Der # Präfix #include
MehrAssembler Programmierung Motivation. Informatik II SS 2004 Teil 4: Assembler Programmierung. Assembler vs. Maschinensprache
Assembler Programmierung Motivation Informatik II SS 2004 Teil 4: Assembler Programmierung Was ist ein Programm? Eine Reihe von Befehlen, die der Ausführung einer Aufgabe dient Dazu wird das Programm sequentiell
Mehr1.3 Handhabung eines Programmiersystems
1.3 Handhabung eines Programmiersystems Der Turbo-Pascal-Editor Man muss nichts vom Innenleben eines Computers verstehen, um mit ihm umgehen zu können. Wir wollen ihn als "black box" verwenden, also lediglich
MehrAlgorithmen implementieren. Implementieren von Algorithmen
Algorithmen implementieren Implementieren von Algorithmen Um Algorithmen ablaufen zu lassen, muss man sie als Programm darstellen (d.h. implementieren) Wie stellt man die algorithmischen Strukturelemente
MehrJavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
MehrJava: Eine kurze Einführung an Beispielen
Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse
MehrKonzepte von Betriebssystemkomponenten
Konzepte von Betriebssystemkomponenten Systemstart und Programmausführung Seminarvortrag 15.12.2003, Michael Moese Übersicht 2. Systemstart 3. Programmausführung TEIL 1: Systemstart 1.1 Das BIOS 1.2 Der
MehrÜbung Praktische Informatik II
Übung Praktische Informatik II FSS 2009 Benjamin Guthier Lehrstuhl für Praktische Informatik IV Universität Mannheim guthier@pi4.informatik.uni-mannheim.de 20.03.09 4-1 Heutige große Übung Ankündigung
MehrZwischencode-Erzeugung. 2. Juni 2009
Zwischencode-Erzeugung im Rahmen des Seminars "Übersetzung von künstlichen Sprachen" Sebastian Hanneken 2. Juni 2009 1 / 32 1 Einleitung Einordnung Funktion von Zwischencode 3-Adresscode (3AC) 2 Erzeugung
MehrProgrammieren lernen mit Perl
Xpert.press Programmieren lernen mit Perl Bearbeitet von Joachim Ziegler 1. Auflage 2002. Buch. XIV, 400 S. Hardcover ISBN 978 3 540 42685 1 Format (B x L): 15,5 x 23,5 cm Gewicht: 783 g Weitere Fachgebiete
Mehr68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren.
WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren. Ein Programm liegt der CPU in binärer Form vor und wird durch den Assembler in einer primitiven
MehrHerzlich willkommen!
Programmiertechnik 1 Herzlich willkommen! Dozent: Dipl.-Ing. Jürgen Wemheuer Teil 6: Zusammenfassung und Beispiele Mail: wemheuer@ewla.de Online: http://cpp.ewla.de/ Zusammenfassung (1) 2 1. Programm in
MehrÜbersicht zur Programmentwicklung unter UNIX
Fachhochschule Wiesbaden Fachbereich Informatik Prof. Dr. Reinhold Kröger Übersicht zur Programmentwicklung unter UNIX Auf den folgenden Seiten werden die wesentlichen Aspekte und üblichen Techniken zur
MehrMethoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom
Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon
MehrOrganisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download
Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches
MehrFACHHOCHSCHULE MANNHEIM
für Java-Programmierer Der Präprozessor Prof. Dr. Wolfgang Schramm FACHHOCHSCHULE MANNHEIM Hochschule für Technik und Gestaltung Präprozessor Ist dem Compiler vorgeschaltet ( Prä -). Spezielle Anweisungen
MehrTechnische Informatik 1 - HS 2015
Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik 1 - HS 2015 Übung 3 Datum: 29. 30. 10. 2015 Einleitung Das Ziel dieser Übung ist, den Compilations-Vorgang
Mehr