Você está na página 1de 7

30/04/2012

Linguagens e Programao

8 Gerao de Cdigo
Fontes: 1. Compiladores Princpios e prticas, Keneth C.Louden, Thomson, 2004. Cap. 8 Gerao de cdigo 2. Processadores de Linguagens da concepo implementao, Rui Gustavo Crespo. IST Press.1998. Cap. 7 e 8 Gerao de Cdigo (Cdigo Intermdio e Cdigo Final) 3. Compiladores Princpios,Tcnicas e Ferramentas AlfredV.Aho,R.Sethi e Jeffrey D.Ullman, 2007. Cap. 9 Gerao de cdigo

Ana Madureira
Engenharia Informtica Ano Lectivo: 2011/2012

Enquadramento do Compilador
Editor
Programa fonte Heap

Pr-processador
Programa fonte modificado

Compilador
Cdigo objecto

Stack Imagem na memria tpica Instrues

Linker
Cdigo objecto (recolocvel)

Bibliotecas externas

Variveis globais no inicializadas Constantes e variveis globais inicializadas

Loader
Imagem na memria

30/04/2012

Estrutura Geral de um Compilador (Estrutura conceptual)

Estrutura Geral de um Compilador (Estrutura funcional)


Diviso do compilador em vanguarda (front end) e retaguarda (back end)

Caractersticas Existncia de uma representao intermdia do programa fonte (mquina abstrata) A vanguarda mapeia o programa fonte numa representao intermdia A retaguarda produz o cdigo mquina (mquina concreta) a partir da representao intermdia Simplifica a produo de compiladores para vrias mquinas concretas Simplifica a produo de compiladores para vrias linguagens fonte Duas passagens cdigo mais eficiente que numa nica passagem

30/04/2012

Vantagens da representao intermdia

Front end

Funes: Reconhecer programas vlidos Produzir mensagens de erro Produzir a representao intermdia Produzir um mapa de armazenamento preliminar

30/04/2012

Back end

Funes: Traduzir a representao intermdia em cdigo mquina Escolher as instrues correspondentes a cada operao definida na representao intermdia Decidir que informao manter nos registos do processador Assegurar a concordncia com os formatos usados por outros componentes do sistema de desenvolvimento de software

Gerao de cdigo intermdio

A gerao de cdigo intermdio usa as mesmas ferramentas das verificaes semnticas: i.e. atributos associados aos terminais e no-terminais da gramtica e aces a executar, que emitem as instrues intermdias

30/04/2012

Gerao de cdigo intermdio


O cdigo produzido pelo percurso na rvore de parse construda na fase de anlise. A fase de sntese pode decorrer quer em paralelo com a anlise quer no seu seguimento; neste ltimo caso, ser necessrio manter a rvore numa representao apropriada como suporte segunda fase (que pode constituir uma nova passagem) Nos compiladores de Pascal so comuns duas passagens a primeira produzindo cdigo intermdio (P_CODE) para uma mquina abstracta de stack; a segunda correspondendo produo de cdigo mquina efectiva para um computador especfico O mtodo mais comum para realizar a produo de cdigo atravs da insero das aces necessrias no quadro da anlise sintctica

Cdigo intermdio
O cdigo intermdio constitui uma representao do texto fonte, numa sequncia de instrues (por vezes uma rvore ou grafo acclico dirigido), que quando executadas, tm o mesmo resultado que o especificado no texto fonte As instrues do cdigo intermdio so independentes do processador alvo Vantagens do cdigo intermdio: Reutilizao: Na construo de um compilador de uma dada linguagem para vrias mquinas, s necessrio mudar o gerador final Optimizao: O mdulo de optimizao pode ser o mesmo para vrios compiladores de linguagens fonte diferentes e para mquinas alvo diferentes

30/04/2012

Cdigo intermdio (cont.)


Algumas formas de cdigo intermdio: rvores ou grafos sintcticos, onde os ns interiores representam operaes e as folhas operandos. Exemplo para: a = b*-c + b*-c

Sequncias de instrues (para a = b*-c + b*-c):


Mquina de 3 endereos: t1 uminus c t1 b * t1 a t1 + t1

Mquina de stack: push b push c uminus mul pop t1 push t1 push t1 add pop a

Representao das instrues de 3 endereos


Representao em qudruplas (ou quads): sequncias de estruturas com 4 campos - cdigo de operao, 1 operando, 2 operando e resultado ou destino Representao em triplas: cada instruo s contm o cdigo de operao e os 1 e 2 operandos
o resultado no est explicitado na instruo (excepto no caso da instruo de atribuio) assume-se que a prpria instruo guarda o valor do resultado que pode servir de operando a outras instrues

Exemplo: Cdigo em quads e triplas para a = b * -c + b * -c

30/04/2012

Cdigo final
Aps a gerao do cdigo intermdio e eventual optimizao (melhoramento), segue-se, como ltima fase a gerao do cdigo final O cdigo intermdio j prximo do cdigo final da mquina alvo, com a excepo da no utilizao de registos (em vez disso usam-se temporrios) e da utilizao de instrues de mais alto nvel O problema principal da gerao do cdigo final a alocao eficiente dos registos do processador O cdigo final gerado toma geralmente duas formas: Cdigo assembly: usa nomes simblicos para as instrues mquina, registos, variveis e posies no programa; necessita de um assemblador para gerar o cdigo mquina final Cdigo mquina recolocvel (relocatable): As instrues esto j codificadas, sendo no entanto apenas usados endereos relativos, quer para os dados quer para as posies no prprio cdigo executvel; durante o carregamento na memria os endereos absolutos que porventura tenham de existir so corrigidos para o local onde o programa foi carregado

Mquina alvo
Como bvio o cdigo final a gerar depende fortemente do processador alvo onde se pretende que seja executado Processadores RISC Reduced Instruction Set Computer:
Nmero elevado de registos de uso geral (32 ou mais) As instrues que envolvem a memria limitam-se geralmente a transferncias para os registos (load e store) Instrues aritmticas e lgicas de 3 endereos, mas envolvendo apenas registos ou dados imediatos Instrues com tamanhos e tempos de execuo semelhantes (com raras excepes) Nmero limitado de registos e alguns com fins especficos (SP, FP, ) Geralmente instrues de 2 endereos (o destino um dos operandos) Diversos modos de endereamento (imediato, registo, absoluto, indexado, indirecto) com custos diferentes (espao e tempo de execuo) Algumas instrues com efeitos colaterais (autoincremento, etc)

Processadores CISC Complex Instruction Set Computer:


Você também pode gostar