Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilAgáta Vítková
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
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...
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.