-
Data: 2010-05-27 21:56:20
Temat: Re: GCC - jak działa?
Od: Adam Piotrowski <k...@i...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2010-05-27 12:47, l...@l...lon pisze:
> Witam,
>
> Czy ktoś może wie jaki jest schamet działania kompilatora GCC dla języka C?
> Tzn. jakie są przebiegi? Na pewno jest preprocesor, potem komilacja
> do *.s i linkowanie.
>
> Interesuje mnie kompilacja: czy można zoabczyć etap przejściowy, np.
> rozkład leksykalny czy też dzieje się to tylko wewnątrz kompilatora i z kodu
> źródłowego w C są od razu generowane isntrukcje assemblera?
>
> Pozdrawiam,
> Marcin
>
>
Hej
1) Rozklad leksykalny i skladniowy robione sa za pomoca specjalizowanych
funkcji dostosowanych do skladni C.
2) Z rozkladu leksyklanego to raczej za duzo nie zobaczysz, chociaz moge
sie mylic - jak bawilem sie kodem gcc to nie zwracalem uwagi na te
etapy, trzeba zerknac do kodu lub do GCC internals
3) Nie, z kodu C nie generujesz kodu assemblera, jakby tak bylo
musialbys zmieniac caly kompilator w przypadku portowania do innych
architektur nic x86
4) Front end - zajmuje sie analiza leksykalna i skladniowa, zalezny od
jezyka, niezalezny od architektury docelowej
Middle end - zajmuje sie optymalizacja - niezalezny do jezyka i architektury
Back end - nie zalezny od jezyka, zalezny od architekrury (przynajmniej
tak jest w teorii)
5) C -> GENERIC -> GIMPLE -> (SSA w przypadku optymalizacji - > GIMPLE)
-> RTL -> assembler : takie sa reprezentacje posrednie stosowane podczas
kompilacji
6) skompiluj sobie program (pod Linuxem) z parametrem -fdump-tree-all
aby zobaczyc jakie przeksztalcenia sa robione podczas optymalizacji kodu
na poziomie drzew. Ogolnie masz sporo opcji opisanych w rozdziale "3.9
Options for Debugging Your Program or GCC" w manualu do gcc
Adam
Następne wpisy z tego wątku
- 28.05.10 00:18 Adam Piotrowski
- 28.05.10 20:59 A...@g...com
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-02-01 "Nie kupujcie samochodów elektrycznych
- 2025-02-01 jakie małe auto duże w środku :-)
- 2025-02-01 Re: pytanie do oponiarzy lub szybkojeżdzących (opony Hankook Ventus Prime, S1 Evo, alternatywy)
- 2025-02-01 T-1000 was here
- 2025-02-01 Warszawa => DevOps Engineer <=
- 2025-02-01 Katowice => Administrator IT - Operating Systems and Virtualization <=
- 2025-02-01 Warszawa => Spedytor międzynarodowy <=
- 2025-02-01 Śmierć mózgu a narządy do pobrania
- 2025-01-31 A niektórym to naprawdę zależy na ekologi w miastach LPG POWRACA ;-)
- 2025-01-31 Lublin => Programista Delphi <=
- 2025-01-31 Łódź => Programista NodeJS <=
- 2025-01-31 Wrocław => Senior SAP Support Consultant (SD) <=
- 2025-01-31 Warszawa => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2025-01-31 Gdańsk => iOS Developer (Swift experience) <=
- 2025-01-31 Kraków => UX Designer <=