Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Compilerbau und Reverse Engineering m Vorlesung im Wintersemester.

Ähnliche Präsentationen


Präsentation zum Thema: "Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Compilerbau und Reverse Engineering m Vorlesung im Wintersemester."—  Präsentation transkript:

1 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Compilerbau und Reverse Engineering m Vorlesung im Wintersemester 2010/11 m Prof. Albert Zündorf m Betreuer: Johannes Spohr, et. al. m Fachgebiet für Software Engineering

2 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Organisatorisches Umfang: 4 SWS teils Vorlesungen teils Übungen Übungsbetreuung: Johannes Spohr Ort und Zeit: Freitag 10:15 - 11:45 Raum 1340 Beginn: Freitag, den 22.10.2009 Prüfung: Projektarbeit / Hausaufgaben jeder einzeln wird nur einmal im Jahr angeboten Folienskript, Unterlagen, Aufgabenstellungen: http://seblog.cs.uni-kassel.de/ meist einen Tag in voraus.

3 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Inhalte und Lernziele: m Lesen und Verarbeiten strukturierter Texte m Daten m Programme m Rekursiverabstiegscompiler m Compilercompiler m Codegenerierung m Codecompletion m Codeanalyse m Refactorings m …

4 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Literatur m http://compilers.iecc.com/crenshaw/ m Compilerbau, 2 Tle., Tl.1 von Alfred V. Aho, Ravi Sethi, und Jeffrey D. Ullman von Oldenbourg (Taschenbuch - Dezember 1999)Preis:EUR 34,80 Compilerbau, 2 Tle., Tl.1

5 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University

6

7

8

9

10 Homework #1 m Write unit tests for l parsing single digits l addition of those digits and computing the correct result l interpreting subtraction, multiplication, and division l Punkt vor Strich l parsing parentheses m Implement the parser/interpreter. m A GUI for the interpreter only if you like. m Zip jour eclipse project m Send via Email to: alexander.jahl@student.uni-kassel.de Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University

11 Scanning

12 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University

13

14 Code Generation m Registermaschinen m Maschinencode / Assembler m Stackmaschinen m BCEL

15 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Registermaschinen ALU OPCode Decoder AdderMultiplier LogicOpsStoreOps JumpOps PC ACU FP R1..8 Memory 01001110010001010100010000101 Address Decoder

16 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University OPCode Decoder Adder Addierbefehl 11001100 & =0 &

17 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Maschinencode Registermaschine m Arithmetisch, Logisch, Speicher, Sprung, … m OpCode plus 1 oder 2 Operanden m Rechenbefehle nur auf Registern m Speicherbefehle: Memory Register

18 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Stackmaschinen ALU OPCode Decoder AdderMultiplier LogicOpsStoreOps JumpOps PC ACU FP R1..8 Memory 01001110010001010100010000101 Address Decoder Stack

19 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Maschinencode Stackmaschine m Arithmetisch, Logisch, Speicher, Sprung, … m OpCode plus 1 oder 2 Operanden m Rechenbefehle auf Stack m Speicherbefehle: Memory Stack m load 0, load 8, add, store 12

20 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Java Byte Code für eine Klasse http://jakarta.apache.org/bcel/manual.html

21 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University BCELifier m Beispiel in Java schreiben m Compilieren m mit BCELifier "Creator" Klasse generien m anschauen

22 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University if

23 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University

24 while

25 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University funcDecl

26 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Scopes

27 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Procedure Call Stack

28 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University

29 Tabellengesteuertes Parsen Beispielgrammatik: E ::= T ['+' T]*E ::= T E' E' ::= + T E' | T ::= F ['*' F]*T ::= F T' T' ::= * F T' | F ::= n | '(' E ')'

30 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Wortableitung Beispielgrammatik: E ::= T ['+' T]*E ::= T E' E' ::= + T E' | T ::= F ['*' F]*T ::= F T' T' ::= * F T' | F ::= n | '(' E ')'

31 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Parsertabelle +*()n$ EE::=TE' E'E'::=+TE' E'::= TT::=FT' T' T'::= T'::=*FT' T'::= FF::=(E)F::=n

32 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Algorithmus while Stack nicht leer if top == currentToken pop nextToken() else rule := M[top, currentToken] pop push (lhs(rule)) print rule

33 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Ablauf: StackEingabeAusgabe En + n * n $

34 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Ablauf: StackEingabeAusgabe

35 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Konstruktion: First und Follow First ( ) Menge aller Terminale mit denen beginnen kann First (a) {a} X ::= First ( X ) += X ::= A B C D First ( X ) += First ( A ) if ( First (A) ) First ( X ) += First (B) …

36 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Konstruktion: First und Follow E ::= T E'First (E) = {} E' ::= + T E' | First (E') = {} T ::= F T'First (T) = {} T' ::= * F T' | First (T') = {} F ::= n | '(' E ')'First (F) = {}

37 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Konstruktion: First und Follow Follow (X)alle Terminale die auf X folgen können SFollow (S) += $ A ::= B Follow (B) += First ( ) - if ( First ( ) ) Follow (B) += Follow (A) A ::= BFollow (B) += Follow (A)

38 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Konstruktion: First und Follow E ::= T E' Follow (E) = {} E' ::= + T E' | Follow (E') = {} T ::= F T' Follow (T) = {} T' ::= * F T' | Follow (T') = {} F ::= n | '(' E ')' Follow (F) = {}

39 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Tabellenkonstruktion for_all A ::= for_all a First ( ) M[A,a] += A ::= if First ( ) for_all b Follow (A) M[A,b] += A ::= if $ Follow (A) M[A,$] += A ::=

40 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Tabellenkonstruktion E ::= T E' E' ::= + T E' | T ::= F T' T' ::= * F T' | F ::= n | '(' E ')' +*()n$ E E' T T' F

41 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Compiler Compiler: Antlr V3

42 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Model Driven XXX

43 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University

44 Reverse Engineering

45 Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University

46

47

48


Herunterladen ppt "Fachgebiet Software Engineering Übersicht © 09.02.2014 Albert Zündorf, Kassel University Compilerbau und Reverse Engineering m Vorlesung im Wintersemester."

Ähnliche Präsentationen


Google-Anzeigen