Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Lestes C++ compiler. Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr.

Podobné prezentace


Prezentace na téma: "Lestes C++ compiler. Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr."— Transkript prezentace:

1 Lestes C++ compiler

2 Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr

3 Cíle projektu 4 překladač jazyka C++ 4 platforma pro další vývoj 4 implementace jazyka v souladu s normou (ISO/IEC 14882:2003)

4 Proč je to těžké 4 norma C++ –styl –interpretační obtíže –provázanost celku 4 jazyk –rozsáhlost –syntaktická nejednoznačnost –vyhodnocování výrazů –šablony

5 Nejednoznačnosti v C++ int i, j; class C { /*... */ }; int f() { C (j) = 5, i++; // výraz C (j) = 5, i; // deklarace }

6 Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr

7 Architektura překladače

8 4 Abstract Syntax (AS) –kopíruje gramatiku normy –strom 4 Semantic Structures (SS) –sémantika zdrojového kódu 4 Pseudoinstructions (PI) –architekturně nezávislý mezikód –orientovaný acyklický graf (DAG) Druhy vnitřní reprezentace

9

10 Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr

11 Preprocesor 4 vlastní implementace –makra s parametry –podmínky –#include –rozšířené znakové sady (utf8) –trigrafy ( ??= ), digrafy ( %: )

12 Syntaktická analýza  nejednoznačnosti řešeny back-trackingem int f() {  int (*p)  (int);  int (*q)  (0);  int (*r) + 1; } 4  deklarace vs. výraz 4  inicializátor vs. deklarace parametru

13 Sémantická analýza 4 přetížené funkce a operátory 4 deklarace 4 interakce se syntaktickou analýzou 4 pořadí vedlejších efektů

14 Pořadí vedlejších efektů (a++,++b)+(c++,++d)     ab    dc  Povolená pořadí acbd abcd cdab cadb

15 Backend 4 machine description – způsob popisu cílové architektury 4 implementace pro IA32

16 Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr

17 Framework 4 garbage collector 4 dumper 4 generátor struktur 4 ladicí výpisy 4 chybové hlášky

18 Generátor struktur 4 XML popis vnitřních struktur kompilátoru 4 transformace XSLT procesorem do C++ 4 podpora vybraných návrhových vzorů 4 automatická podpora pro GC a dumper

19 Garbage collector 4 vlastní implementace mark & sweep 4 smart pointers

20 Dumper 4 zobrazení vnitřních struktur překladače 4 ladění, výukové účely 4 XML výstup 4 XSLT transformace do HTML

21 Dumper

22 Ladicí výpisy 4 stromová struktura 4 konfigurační soubor XML

23 Chybové hlášky 4 chyby, varování 4 pozice chyby 4 specifikace v XML 4 potenciální možnost lokalizace

24 Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr

25 Shrnutí (1) 4 design –klíčové vlastnosti C++ –modularita 4 prostředí pro vývoj –odstínění od rutinních činností –snadné ladění –vhled do činnosti překladače

26 Shrnutí (2) 4 funkční překladač – podmnožina jazyka – rozšiřitelnost 4 dokumentace –včetně návrhu neimplementovaných vlastností

27 int factorial(int n) { if ( n<=1 ) { return 1; } return n*factorial(n-1); } _Z9factoriali: push EBP mov EBP, ESP add ESP,-52 push EDI push ESI push EBX mov EAX,0 mov DWORD [EBP-4],EAX mov EAX,DWORD [EBP+8] mov DWORD [EBP-8],EAX mov EAX,DWORD [EBP-8] mov EBX,DWORD [EBP-4] cmp EAX,EBX sete CL mov BYTE [EBP-12],CL mov AL,BYTE [EBP-12] cmp AL,0 jz NEAR @Lbl_0 mov EAX,1 mov DWORD [EBP-16],EAX mov EAX,DWORD [EBP-16] mov EBX,EAX...


Stáhnout ppt "Lestes C++ compiler. Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr."

Podobné prezentace


Reklamy Google