Escolar Documentos
Profissional Documentos
Cultura Documentos
implementao de um compilador. assim que surge a equipe de desenvolvimento do FORTRAN liderada por John Backus na IBM , a qual geralmente creditada como tendo introduzido o primeiro compilador completo em 1957.
DESENVOLVIMENTO
Um Compilador um programa de computador (ou um grupo de programas) que, a partir de um cdigo fonte escrito em uma linguagem compilada, cria um programa semanticamente equivalente, porm escrito em outra linguagem, cdigo objeto. Ele chamado compilador por razes histricas, pois nos primeiros anos da programao automtica, existiam programas que percorriam bibliotecas de subrotinas e as reunia juntas, ou compilava as subrotinas necessrias para executar uma determinada tarefa. O nome "compilador" usado principalmente para os programas que traduzem o cdigo fonte de uma linguagem de programao de alto nvel para uma linguagem de programao de baixo nvel (por exemplo, Assembly ou cdigo de mquina). Contudo alguns autores citam exemplos de compiladores que traduzem para linguagens de alto nvel como C. Para alguns autores um programa que faz uma traduo entre linguagens de alto nvel normalmente chamado um tradutor, filtro ou conversor de linguagem.
Normalmente, o cdigo fonte escrito em uma linguagem de programao de alto nvel, com grande capacidade de abstrao, e o cdigo objeto escrito em uma linguagem de baixo nvel, como uma sequncia de instrues a ser executada pelo microprocessador. O processo de Compilao composto de Anlise e Sntese. A Anlise tem como objetivo entender o cdigo fonte e represent-lo em uma estrutura intermediria, j a Sntese constri o cdigo objeto (Programa) a partir desta representao intermediria. A Anlise pode ser subdividida ainda em Anlise Lxica, Anlise Sinttica, Anlise Semntica e Gerao de Cdigo Intermedirio, tambm conhecida como Front 2
End. A Sntese pode ter mais variaes de um compilador a outro, podendo ser composta pelas etapas de Optimizao de Cdigo e Gerao de Cdigo Final (ou cdigo de mquina), sendo somente esta ltima etapa obrigatria, tambm conhecida como Back End.
A Gerao de Cdigo Intermedirio a transformao da rvore de derivao (rvore Sinttica) em um segmento de cdigo (Representao Intermediria do Cdigo Fonte). Esse cdigo pode, eventualmente, ser o cdigo objeto final, mas, na maioria das vezes, constitui-se num cdigo intermedirio que mais prximo do cdigo objeto do que o cdigo fonte, mas ainda permite uma manipulao mais fcil do que se o cdigo Assembly ou cdigo mquina fosse utilizado . Assim, a grande diferena entre o cdigo intermedirio e o cdigo objeto final, que o intermedirio no especifica detalhes da mquina alvo, tais como quais registradores sero usados, quais endereos de memria sero referenciados, entre outros detalhes fsicos da mquina alvo.
LINGUAGENS INTERMEDIRIAS (TIPOS DE CDIGOS INTERMEDIRIOS) Os vrios tipos de cdigo intermedirio fazem parte de uma das seguintes categorias: a) Cdigo de trs endereos: i. Quadruplas e Triplas. b) Notao ps-fixada ou pr-fixada. c) Representaes grficas: i. rvore e Grafo de Sintaxe 3
CDIGO DE TRS ENDEREOS Um tipo popular de Linguagem Intermediria conhecido como cdigo de trs endereos. O que Isso Significa? O Cdigo de Trs Endereos composto por uma seqncia de instrues envolvendo operaes binrias ou unrias e uma atribuio. O nome Trs Endereos est associado especificao, em uma instruo de, no mximo trs variveis (endereos de memria): duas para os operadores binrios e uma para o resultado. Neste tipo de cdigo uma sentena tpica tem a forma X: = A op B, onde X, A e B so operandos e op uma operao qualquer. Uma forma prtica de representar sentenas de trs endereos atravs do uso de qudruplas (operador, argumento 1, argumento 2 e, resultado). Este esquema de representao de cdigo intermedirio preferido por diversos compiladores, principalmente aqueles que executam extensivas otimizaes de cdigo, uma vez que o cdigo intermedirio pode ser rearranjado de uma maneira conveniente com facilidade.
AS INSTRUES DESSA LINGUAGEM SO AS SEGUINTES: a) A: = B op C b) A: = op B c) A: = B Um cdigo de trs endereos pode ser implementado atravs de Qudruplas ou Triplas. As Quadruplas so constitudas de quatro campos: Um operador, dois operandos e um resultado. Exemplo: A: = B * D
NOTAO PS-FIXADA OU PR-FIXADA a) Se E1 e E2 so expresses ps-fixadas e q um operador binrio, ento, E1 E2 q a representao ps-fixada para a expresso E1 q E2. b) Se E1 e E2 so expresses pr-fixadas e q um operador binrio, ento, q E1 E2 a representao pr-fixada para a expresso E1 q E2. c) Notaes ps e pr-fixadas podem ser generalizadas para operadores n-rios.
NOTAO Infixada (a + b) * c a * (b + c) a+b*c Ps-Fixada ab+c* abc+* abc*+ Pr-Fixada *+abc *a+bc +a*bc
a) Uma rvore de Sintaxe uma forma condensada de rvore de derivao na qual somente os operandos da linguagem aparecem como folhas: b) Os operandos constituem ns interiores da rvore. c) Outra simplificao da rvore de sintaxe que cadeias de produes simples (por exemplo, A B, B C) so eliminadas. d) Um Grafo de Sintaxe, alm de incluir as simplificaes da rvore de sintaxe, faz a fatorao das subexpresses comuns, eliminando-as.
VANTAGENS E DESVANTAGENS Vantagens da gerao de cdigo intermedirio: 1. Possibilita a otimizao do cdigo intermedirio, de modo a obter-se o
gradativamente, as dificuldades da passagem de cdigo fonte para objeto (alto nvel para baixo nvel), j que o cdigo fonte pode ser visto como um texto condensado que explode em inmeras instrues elementares de baixo nvel. 3. Possibilita a traduo do cdigo intermedirio para diversas mquinas.
Desvantagens da gerao de cdigo intermedirio: 1. O compilador requer um passo a mais, pois a traduo direta do
5/5/2013 7:57:00 AM