Escolar Documentos
Profissional Documentos
Cultura Documentos
Ricardo L. Chikasawa
Prof. Dr. Almir Camolesi
Disciplina: Compiladores
Compilador GCC
Compilador GCC
15 de Setembro Compilador GCC
Introduo
Compilador
Definio de um compilador
Compilador GCC
Histria
Estrutura e funcionamento
Demo
15 de Setembro Compilador GCC
Compilador
Import!ncia do Compilador
Os compiladores so ferramentas indispensveis para programao! "ode#
se di$er %ue sem ele& seria %uase imposs'vel desenvolver programas muito
complexos!
(s linguagens de programao de alto n'vel so pro)etadas para %ue
possam ser mais facilmente entendidas por programadores *umanos! Elas
permitem ao programador expressar suas intenes mais facilmente& escrever
programas mais organi$ados e com mais rapide$ do %ue se tivessem %ue
escrever os programas diretamente em cdigo de m%uina +linguagens de
,aixo n'vel-!
O compilador por sua ve$& tradu$ um cdigo fonte escrito numa linguagem
de alto n'vel +Ex. C/C00& "ascal& etc!!!-& em um cdigo alvo semanticamente
e%uivalente& escrito em cdigo de m%uina +Ex. (ssem,l1-! Esse cdigo alvo
ser enfim lido pela m%uina e executado!
15 de Setembro Compilador GCC
Richard "tallman
15 de Setembro Compilador GCC
GCC
#ist$ria
O compilador 2CC foi escrito por
3ic*ard 4tallman em 5678 para
servir de compilador para o "ro)eto
29:!
2CC ; uma a,reviao do termo
29: Compiler Collection! Ele leva
este nome pelo fato de %ue vrias
verses do compilador esto
integradas& com suporte a
linguagens como C& C00& O,)ective#
C& (da& <ortran& =ava e >reelang!
15 de Setembro Compilador GCC
GCC
Principais caracter%sticas
GCC ( )(*+,-
Compilava somente C
GCC . )(**.-
(dicionou C00
/GC" )(**,-
<ront end
I4O C66
GCC 1 ).22(-
Integra,ilidade li,)ava
GCC 3 ).220-
<ortran 6B
Metori$ao (utomtica
15 de Setembro Compilador GCC
GCC
)4indows 5 Linu5-
6inG4 )6inimalist G78 for 4indows-
<oi criado por Colin "eters em 5667! Ele usou uma verso muito inicial da su'te do
C1g?in para compilar a primeira verso do cdigo do compilador @in2A!
E uma verso portada para @icrosoft Aindo?s do con)unto de ferramentas 29: +a
mesma instalada pelo am,iente Dev#C00 ou pelo CodeGlocKs-! Oferece um completo
con)unto de ferramentas Open 4ource de programao& apropriado para o
desenvolvimento de aplicativos nativos @4#Aindo?s!
Code..GlocKs ; um am,iente integrado de desenvolvimento para as linguagens C e
C00! Ele usa a implementao @in2? do 2CC +29: Compiler Collection- como seu
compilador! Ele ; N<ree 4oft?areN +so, 29: 2eneral "u,lic License-!
Em 5666& a ,ase de usurios do @in2A tornou#se grande o suficiente& para se
separar da OC1g?in mailing listP& e configurar ela prpria uma lista de discusso
moderada pelo Earnie Go1d e Handerson Dale!
15 de Setembro Compilador GCC
6inG4 inclui:
Q :ma porta do 29: Compiler Collection +2CC-& incluindo compiladores C& C0
0& (D( e <ortran!
Q 29: Ginutils +coleo de ferramentas ,inrias- para Aindo?s& ou se)a&
vinculador& gerente de ar%uivo!
Q @4R4& %ue ; uma coleo de utilitrios 29:& para permitir a construo de
aplicaes e programas %ue dependem de instrumentos tradicionais do :9IF
para estar presente! Oferecido como uma alternativa para o cmd!exe da
@icrosoft!
Q Comunidade de apoio& ferramentas e ,i,liotecas +ming?"O3>s-!
Q :m grfico e um instalador de lin*a de comando para o Aindo?s!
Q Cross#compiladores para construir aplicaes Aindo?s em outras plataformas
+por exemplo& Linux-!
GCC
)4indows 5 Linu5-
15 de Setembro Compilador GCC
C$di9o fonte
15 de Setembro Compilador GCC
C$di9o fonte
15 de Setembro Compilador GCC
GCC
:uncionamento
Suando o 2CC ; invocado& ele
normalmente reali$a %uatro
etapas para gerar o executvel.
pr;#processamento& compilao&
montagem e ligao& sempre
nesta ordem!
Os primeiros trJs estgios
aplicam#se a um Tnico ar%uivo
fonte& e encerram produ$indo um
ar%uivo o,)eto!
15 de Setembro Compilador GCC
GCC
:ases da compilao
"rogramao "aralela
4uporta multi#plataforma
@emria compartil*ada
15 de Setembro Compilador GCC
GCC < Demo
Pro9rama:
?include @stdio.hA
douBle testCloop)douBle dD unsi9ned n-
E
douBle 5 F (.2G
unsi9ned HG
for )H F (G H @F nG HII- 5 JF dG
return 5G
K
int main )Loid-
E
douBle soma F 2.2G
unsi9ned iG
for )i F (G i @F (22222222G iII-
E
soma IF testCloop)iD i M 0-G
K
printf )Ns F M9OnND soma-G
return 2G
K
15 de Setembro Compilador GCC
GCC < Demo
Primeiro teste :
9cc <4all <2 test.c <lm
time .Pa.out
"e9undo teste:
9cc <4all <( test.c <lm
time .Pa.out
Qerceito teste:
9cc <4all <. test.c <lm
time .Pa.out
Ruarto teste:
9cc <4all <1 test.c <lm
time .Pa.out
Ruinto teste:
9cc <4all <1 <funroll<loops test.c <lm
time .Pa.out
"e5to teste:
9cc <fdump<tree<@9enericA test.c
15 de Setembro Compilador GCC
Concluso
9s concluimos %ue o 2CC ; uma pea fundamental em %uais%uer
desenvolvimento de soft?are livre e de soft?are fec*ado! Ele funciona
como ativador das ar%uiteturas e dos sistemas operacionais! Suando um
novo processador aparace& seu Jxito depende de uma verso 2CC %ue
ir fornecer suporte a ele!
(l;m de ser ro,usto& tem diversas ferramentas para sistema
distri,u'dos& onde *o)e tudo ; interligado a uma rede!
"or ser a,erto& todos tem a oportunidade de evoluir e contru,uir
com o pro)eto da 29:!
15 de Setembro Compilador GCC
=iBlio9rafia
Q Histria do compilador . *ttp.//???!economicexpert!com/a/Compiler!*tml
Q >ags de Otimi$ao. *ttp.//gcc!gnu!org/onlinedocs/gcc/Optimi$e#Options!*tml
Q "es%uisa ranKing dos linguagem mais utili$ado.
*ttp.//???!tio,e!com/index!p*p/content/paperinfo/tpci/index!*tml
Q Compilador IG@ *ttp.//???!i,m!com/developer?orKs/,r/li,rar1/l#gccD/
Q AiKi.
*ttp.//en!?iKi,ooKs!org/?iKi/29:VCVCompilerVInternals/29:VCVCompilerV(rc*itectureVWVD
Q 29: 2CC *ttp.//gcc!gnu!org/?iKi/Home"age
Q Docs 29: *ttp.//gcc!gnu!org/onlinedocs/cpp/
Q Otimi$ao 2cc. *ttp.//???!clevitonmendes!,logspot!com/HXX7/XC/opes#de#otimi$ao#do#
gcc!*tml
15 de Setembro Compilador GCC
=iBlio9rafia
Q :9IME34ID(DE DE LI4GO( #<(C:LD(DE DE CIY9CI(4 DE"(3>(@E9>O DE
I9<O3@L>IC(& <erramenta de (nlise de Cdigo para Deteco de Mulnera,ilidades Emanuel
"edro Loureiro >eixeira @E4>3(DO E@ E92E9H(3I( I9<O3@L>IC(#4etem,ro de HXX8
Q (n Introduction to 2CC & Grian 2oug* <ore?ord ,1 3ic*ard @! 4tallman
Q Livro Introduo 2CC online . *ttp.//???!net?orK#t*eor1!co!uK/gcc/intro/
Q Cdido fonte do gcc. *ttp.//???!net?orK#t*eor1!co!uK/gcc/intro/src/
Q 4lides do Diego 9ovillo & 2oogle