Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Compiler

No description
by

Daniel Brunnmeier

on 29 January 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Compiler

Compiler Differezierung Geschichte Arbeitsschritte Lexikalische Analyse
Syntaktische Analyse
Semantische Analyse
Zwischencode-Generierung
Maschinencode-Generierung Screener Scanner Lexikalischer Scanner (=Lexer)
plain Text ->Tokens
Anwendung einer Grammatik
-> Bsp.: endlicher Automat Z.B. ”IF 13 == X1 THEN A “ wird zu: (’IF’, 13, ==, ’X1’, ’THEN’,’A’) Parser Parser Parser
Tokens -> Syntaxbaum/Parse-Baum
meist kontextfreie Syntax-Grammatik
Top-Down / Bottom-Up
keine DEAs / NEAs für Programmiersprachen (z.B. Klammerausdrücke) Z.B.(’IF’, 13, ==, ’X1’, ’THEN’,’A’) wird zu Beispiel CAL CAL Actor Language
From Wikipedia, the free encyclopedia

CAL (the Cal Actor Language) is a high-level programming language for writing (dataflow) actors, which are stateful operators that transform input streams of data objects (tokens) into output streams. CAL has been compiled to a variety of target platforms, including single-core processors, multicore processors, and programmable hardware. It has been used in several application areas, including video and image processing and DSP. The MPEG Reconfigurable Video Coding (RVC) working group has adopted CAL as part of their standardization efforts. Parse-Baum -> dekorierter/attributierter Syntax-Baum
kontextsensitive Attributgrammatik:
Deklariertheit
Gültigkeit
Sichtbarkeit
Typkonsistenz
Adresssprünge (Label & Goto)
Verwendeung einer Symboltabelle zur Verwaltung der Attribute 1949 Grace Hopper entwickelt ersten Compiler, der das Schreiben von Programmen erleichtern soll

(Programme wurden vorher mit aneinandergereihten Einsen und Nullen geschrieben) 1952 1955 1957 1960 Vorstellung des Compilers A-0

Aufgaben:
Abrufung von Algorithmen aus einem Katalog
Umschreibung von Codes
Zusammenstellung in passender Reihenfolge
Reservierung von Speicherplatz
Organisation der Zuleitung von Speicheradressen Präsentation des Compiler-Prototypen B-0

Dieser erzeugt aus englischen, französischen oder deutschen Anweisungen Programme. erster FORTRAN-Compiler erster COBOL-Compiler Grace Hopper F
r
o
n
t
e
n
d B
a
c
k
e
n
d Vorteile der Modularisierung Zwischencode = intermediate representation (IR)
auch Bytecode genannt
plattformunabhängig
Optimierung, z.B.:
death-code-elimination
constant propagation
constant folding
strength reduction
Registerverwaltung
Reduktion von paging Zwischencode Maschinecode / Objectcode
weitere Optimierung
plattformspezifisch
teilweise Zwischencode -> Assemblercode -(Assembler)> Maschinencode Maschinencode Linker Echte Compilergenerierung, also die automatische Generierung eines vollständigen Compilers aus einer formalen Spezifikation, ist noch Forschungsgebiet, z. B. an der Universität der Bundeswehr die Projekte JACCIE und SIC. Compiler <> Interpreter
-> Laufzeitkompilierung Compiler-Arten Native Compiler
Cross-Compiler

Precompiler / Präprozessor

Transcompiler erstellt Zielcode für die Plattform, auf der er läuft erstellt Zielcode für andere Plattform ersetzt Makros / Spracherweiterungen durch Elemente der Basissprache Aufgabe Umwandlung von Quellcode in Maschinensprache Form des Programms Schritte Quellcode hallo.dpr program hallo;

{$APPTYPE CONSOLE}

uses
SysUtils;

begin
WriteLn('Hello world');
end. Compiler Aufruf des Compilers:
dcc32.exe hallo.dpr -u Delphi7\lib erzeugen von Objectcode
(Maschinensprache) 00100000101001000001010101010101010100100000101010101
01010101111100100000101010101010101011111000010101010
10101000001010101010101011110000010000010101010101010
10111110000101010101010100101010101010100101010101010
11111000010101010101010001000001010101010101010111110 Aufruf des Linkers
dcc32.exe hallo.dpr -u Delphi7\lib Linker verbinden mit bereits übersetzten Bibliotheken (Libraries) 001000001010010000010
101010101010101001000
001010101010101010111
110010000010101010101
010101111100001010101
0101010000

Library SysUtils:
WriteLn, ... ausführbares Programm Beispiel:
program hallo;

{$APPTYPE CONSOLE}

uses
SysUtils;

begin
WriteLn('Hello world');
end. source-to-source compiler / transpiler Quellcode Bytecode Maschinencode Programm Laufzeit Ausführung
(Prozessor) Interpreter Just-In-Time Compiler Ahead-Of-Time Compiler Maschinencode VM, Teilprozess Plattformunabhängigkeit Beispiele VM Arc, C, Java, Lisp, Lua, Perl 6, PHP, Python, Ruby, CLI-bytecode, Tcl Beispiele Java CLI Parrot Entwicklung Interpreter? Quellen Wikipedia
http://www-stud.informatik.uni-frankfurt.de/~werner/PI1-Kap3e.pdf
Full transcript