Você está na página 1de 9

5/5/2013 7:57:00 AM

INTRODUO BREVE HISTORIAL SOBRE COMPILADORES


Como j sabido, o elemento principal do sistema computacional o computador. Maquina essa que tem sido desenvolvido ao longo do desenrolar da histria da humanidade. Nas suas etapas de desenvolvimento, foram surgindo problemas e dificuldades para aperfeioar esta maquina de modo a satisfazer as demandas do mercado. Surgiram tambm vrias empresas e indivduos que deram grandes contributos para que este objetivo fosse alcanado. Das muitas dificuldades encontradas, surgiu a necessidade de criao de softwares e linguagens de programao capazes de funcionar independentemente da mquina em caso, pois anteriormente os softwares para os primeiros computadores costumavam ser escritos geralmente em linguagem Assembly e isto por muitos anos. As linguagens de alto nvel de programao no foram inventadas at que se viu os benefcios de ser capaz de reutilizar software independentemente dos computadores apesar do custo de se escrever um compilador. Posteriormente, vrios compiladores experimentais foram desenvolvidos. O primeiro compilador foi escrito por Grace Hopper, em 1952, para a linguagem de programao A-0. No final da dcada de 1950, vrias contribuies para o desenvolvimento de linguagens de alto nvel independentes da mquina foram feitas, entre estes, o desenvolvimento da Short Code (UNIVAC), Speedcoding no IBM 701,10 11 o Whirlwind, o BACAIC e o PRINT. primeiros Mas A capacidade de memria muito limitada e a capacidade dos computadores tambm criavam muitos problemas tcnicos na

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.

ENTENDENDO MAIS SOBRE COMPILADORES

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.

GERAO DE CDIGO INTERMEDIRIO

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

As Triplas so formadas por: Um operador e dois operandos. Exemplo: A * B

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

REPRESENTAES GRFICAS (RVORE E GRAFO DE SINTAXE)

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

cdigo objeto final mais eficiente. 2. Simplifica a implementao do compilador, resolvendo,

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

cdigo fonte para objeto leva a uma compilao mais rpida.

5/5/2013 7:57:00 AM

Você também pode gostar