Академический Документы
Профессиональный Документы
Культура Документы
2011.2
http://www.dcc.ufrj.br/~fabiom/comp
O que um interpretador?
Um programa que l um programa executvel e produz o
resultado da execuo desse programa
Compiladores so interessantes
Incluem muitas aplicaes prticas de aspectos tericos
Expem questes algortmicas e de engenharia
Algoritmos gulosos
Inteligncia Artificial
Busca heurstica
It was our belief that if FORTRAN, during its first months, were to
translate any reasonable scientific source program into an object
program only half as fast as its hand-coded counterpart, then
acceptance of our system would be in serious danger... I believe that
had we failed to produce efficient programs, the widespread use of
languages like FORTRAN would have been seriously delayed.
Cdigo Cdigo de
fonte Compilador mquina
Erros
Implicaes
Devem reconhecer programas legais (e ilegais)
Deve gerar cdigo correto
Deve gerenciar o armazenamento das variveis (e cdigo)
Deve concordar com o SO e linker sobre o formato de cdigo
objeto
Grande avano em relao linguagem de montagemnotao de
alto nvel
7
Front Back
Cdigo End IR
End Cdigo de
fonte mquina
Depende Depende
principalmente da principalmente da
linguagem fonte mquina
Erros
Tipicamente o front end O(n) ou O(n log n), e o back end NPC
8
Cdigo tokens IR
Scanner Parser
fonte
Erros
Responsabilidades
Reconhecer programas legais (e ilegais)
Dar erros teis ao usurio
Produzir IR e mapa preliminar de alocao
Formatar cdigo para o resto do compilador
Muito da construo do front end pode ser automatizada
10
Cdigo tokens IR
Scanner Parser
fonte
Erros
Scanner
Mapeia caracteres em palavrasa unidade bsica da sintaxe
Produz pares uma palavra e sua categoria sinttica
x = x + y ; vira <id,x> = <id,x> + <id,y> ;
palavra lexeme, categoria sinttica tipo do token, par um token
Tokens tpicos incluem nmeros, identificadores, +, , new, while, if
Velocidade importante
11
Cdigo tokens IR
Scanner Parser
fonte
Erros
Parser
Reconhece sintaxe livre de contexto e reporta erros
Guia anlise sensvel ao contexto (anlise semntica/checagem
de tipos)
Constri IR para programa fonte
E E + E | E - E | E * E | E / E | (E) | num
14
Expr Op Termo
Cdigo tokens IR
Scanner Parser
fonte
Erros
18
Cdigo tokens IR
Scanner Parser
fonte
Erros
+ e +
a
Se voc transformar essa AST
em cdigo provavelmente vai ter f +
x d
duplicao.
x d
b c
19
b c
Monday, August 15, 11
O Front End
Cdigo tokens IR
Scanner Parser
fonte
Erros
Cdigo tokens IR
Scanner Parser
fonte
Erros
a distinto de b, c, e d ?
O Formato do Cdigo determina muitas propriedades do
programa resultante
load @b r1
abxc+d load @c r2
vira calcula
ef+bxc+d mult r ,r r 1 2 3 bxc+d
Gostaramos de produzir esse load @d r4
Erros
Responsabilidades
Traduz IR em cdigo de mquina
Escolhe instrues para implementar cada operao da IR
Decide quais valores manter em registradores
Garante conformidade com interfaces do SO
IR Seleo de IR IR Cdigo de
Alocao Escalon.
Instrues de reg. de Inst. mquina
Errors
Seleo de Instrues
Produz cdigo rpido e compacto
Aproveita recursos da mquina como modos de endereamento
Normalmente visto como um problema de casamento de padres
mtodos ad hoc, casamento de padres, programao dinmica
Forma da IR influencia escolha da tnica
Perdeu importncia com arquiteturas modernas
Processadores eram mais complicados
Ortogonalidade dos processadores RISC simplificou esse problema
22
Erros
Alocao de Registradores
Ter cada valor em um registrador quando for usado
Gerenciar um conjunto limitado de recursos
Pode mudar a escolha de instrues e inserir LOADs e STOREs
(afeta seleo e escalonamento)
Alocao tima NP-completa na maioria dos casos
Erros
Escalonamento de Instrues
Evita paradas no pipeline do processador
Usa todas as unidades do processador produtivamente
Pode aumentar o tempo de vida de variveis, afetando a alocao
de registradores
Escalonamento timo NP-Completo em quase todos os casos
24
Cdigo tokens IR
Scanner Parser
fonte
Erros
load @b r1
abxc+d load @c r2
vira calcula
ef+bxc+d mult r1,r2 r3 bxc+d
load @d r4
add r3,r4 r5
Lembram desse exemplo de reusa
store r5 @a
alguns slides atrs? bxc+d
load @f r6
add r5,r6 r7
25
store r7 @e
Monday, August 15, 11
O Back End
Erros
Escalonamento de Instrues
Erros
Erros
28
Erros
Otimizadores modernos estruturados como uma srie de passadas
Transformaes Tpicas
Descobrir e propagar algum valor constante
Mover uma computao para um lugar menos executado
Especializar alguma computao baseada no contexto
Descobrir e eliminar computao redundante
Remover cdigo intil ou inalcanvel
Codificar um idioma em alguma forma particularmente
eficiente
29
Cdigo Compilador
fonte offline Interpretador
IR
Compilador
Base de cdigo JIT
Poltica escolhe entre Ambiente de execuo
interpretador e compilador
30
32
Scan CFG Re -
Busy Elim. assoc Aloc.
& e CSE LICM OSR Mont.
Vars Cpia Reg.
Parse DOM (consts)
33
Lex-
Syn- Delay TLA Rank Pack Code Final
Flo
34
36