-
1. Data: 2010-05-27 10:47:32
Temat: GCC - jak działa?
Od: l...@l...lon
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
--
ml
http://www.archimedes.eu.org/
-
2. Data: 2010-05-27 12:10:45
Temat: Re: GCC - jak działa?
Od: "Rafał \"R@V\" Prasał" <r...@g...com>
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?
w źródła GCC musisz zajrzeć.
to jest ANSI C.
flex: http://www.lysator.liu.se/c/ANSI-C-grammar-l.html
yacc/bison: http://www.lysator.liu.se/c/ANSI-C-grammar-y.html
Rafał Prasał.
-
3. Data: 2010-05-27 14:13:42
Temat: Re: GCC - jak działa?
Od: Sebastian Kaliszewski <s...@r...this.informa.and.that.pl>
Rafał "R@V" Prasał wrote:
> 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?
>
> w źródła GCC musisz zajrzeć.
>
> to jest ANSI C.
> flex: http://www.lysator.liu.se/c/ANSI-C-grammar-l.html
> yacc/bison: http://www.lysator.liu.se/c/ANSI-C-grammar-y.html
>
> Rafał Prasał.
GCC nie używa już od jakiegoś czasu (wersji 3.cośtam) lexa ani bisona
pzdr
\SK
--
"Never underestimate the power of human stupidity" -- L. Lang
--
http://www.tajga.org -- (some photos from my travels)
-
4. Data: 2010-05-27 21:56:20
Temat: Re: GCC - jak działa?
Od: Adam Piotrowski <k...@i...pl>
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
-
5. Data: 2010-05-28 00:18:46
Temat: Re: GCC - jak działa?
Od: Adam Piotrowski <k...@i...pl>
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
>
>
Zapomnialem o czyms:
1) Do gcc internals nie ma dobrego opisu. Sa jakies szczatkowe
informacje o zasadach alokacji pamieci, o bitmapach ale nie takie jak
bym chcial (przynajmniej na poczatku)
2) Przebicie sie przez reprezentacje drzew zajelo mi ponad pol roku :)
3) Teoretyczna kompatybilnosc kodu zrodlowego pomiedzy wersjami jest ...
teoretyczna
4) Czytaj komentarze zawarte w kodzie zrodlowym
5) Jak chcesz pobawic sie w rozwijanie funkcjonalnosci gcc, to proponuje
poczytac o nowym mechanizmie pluginow
Adam
-
6. Data: 2010-05-28 20:59:20
Temat: Re: GCC - jak działa?
Od: "A...@g...com" <l...@1...0.0.1>
Dnia 28.05.2010 Adam Piotrowski <k...@i...pl> napisał/a:
> W dniu 2010-05-27 12:47, l...@l...lon pisze:
>> (...)
>> Czy ktoś może wie jaki jest schamet działania kompilatora GCC dla języka C?
>> Tzn. jakie są przebiegi?
>> (...)
> (...)
Dzięki za wszytkie informacje - o to chodziło. Resztę doczytam.
Pozdrawiam,
Marcin