Você está na página 1de 29

DCC 301 Arquitetura e Organizao de Computadores

Aula 3 Mecanismos de Conversao, Compilaao Interpretacao


Prof. Acauan Ribeiro acauan.ribeiro@gmail.com
1

Contexto
Cdigo fonte (macros)
Pr-processador

Cdigo fonte (macros expandidas)


Compilador

Assembly
Montador

Objeto
Linkeditor

Executvel
2

Pr processadores
Pre-Proc Tratamento pr-compilao Macros Cod Faz expanso de macros Expandido Dificuldade operacional -Manter o registro das linhas originais para que o compilador gere mensagens significativas Uso mais conhecido -Linguagem C

Nem toda linguagem suporta prprocessamento


3

Compilao
Cada instruo de L1 substituda por um conjunto de instrues equivalentes de L0 Processador executa programa em L0 Todo programa em L0 carregado em memria e executado Programa pode ser traduzido uma nica vez e executado vrias vezes
4

Compiladores
Recebem entrada em alto nvel Traduzem todo cdigo para execuo posterior Converso e a execuo ocorrem em fases distintas Cada instruo do cdigo fonte pode gerar vrias instrues de mquina

Compiladores -Fases
Anlise(divide o programa fonte nas partes constituintes e cria uma representao intermediria dos mesmos) Ex.:

Lxica (tokens) A <- B * C Sinttica (rvore sinttica) Semntica (incoerncias semnticas)

Sntese(constri o programa alvo desejado a partir da representao intermediria)


Gerao de cdigo intermedirio Otimizao do cdigo Gerao do cdigo
6

Trabalho 01 Aula 03
Faa uma pesquisa e conceitue a fase de Analise do Compilador, d exemplo dos codigos gerados por cada uma das analises;
Analise Lexica; Analise Sintatica; Analise Semantica;

Envie pelo www.ava.ufrr.br No esquea as referencias das pesquisa.


7

Interpretao
Cada instruo de L1 substituda por um conjunto de instrues equivalentes de L0 Processador executa uma instruo de L1 (transformada para L0) antes de executar prxima instruo Cada instruo de L1, transformada para L0, carregada na memria e executada No criado um programa em L0. Programa deve ser novamente interpretado para ser executado
8

Interpretadores
Conversor on-line (incremental), onde a traduo e a execuo das instrues ocorrem passo a passo, a cada instruo Execuo simultnea leitura, logo aps a anlise Recebem como entrada arquivos texto contendo programas em linguagem assembly, linguagem de alto nvel, arquivos binrios com instrues de mquina e os executam diretamente OBS: Processadores so interpretadores implementados em hardware
9

Implementao Hbrida
Mescla compilao com interpretao Programas fonte so traduzidos para uma linguagem intermediria que interpretada Tem maior portabilidade que uma linguagem compilada So mais rpidas que uma linguagem interpretada Ex: Bytecode Java
10

Comparativo
Compilao Programas so traduzidos para linguagem de mquina e so executados diretamente no computador Envolve dois processos distintos: Traduo (compilao) e Execuo No existe acesso ao programa fonte na execuo
Interpretao O interpretador executa diretamente as instrues do programa fonte Execuo mais lenta, devido ao passo de decodificao da instruo de alto nvel tem acesso ao programa fonte, para depurao ou mesmo para alterar o cdigo sendo executado

11

Montadores
Traduo de uma linguagem de montagem (assembly) para cdigo de mquina. Em geral, no pode ser executado diretamente pela mquina, por conter referncias a sub-rotinas e dados especificados em outros arquivos Relao 1:1 com a linguagem de mquina dependente da arquitetura da mquina Uso de comandos -Endereamento simblico Programao difcil -Esforo 5x maior Maior performance
33% mais rpida Soluo crtica de sucesso
12

Ligadores
Programa que liga objetos gerados por um compilador ou montador formando o executvel
ele quem gera o executvel e no o compilador

Recebem como entrada arquivos objetos e geram como sada o programa final em linguagem de mquina Gera um programa executvel a partir de um ou mais arquivos objeto Resoluo das chamadas de funes atravs da unificao dos objetos num nico executvel
13

Empacotadores
Compacta um executvel e gera outro executvel auto extravel Packer muda a assinatura do executvel Possibilita criao de vrus com assinaturas diferentes Comprimem, cifram e ofuscam o executvel Dificultam a identificao do compilador usado por ferramentas adequadas Impossibilita a anlise esttica, pois o packer quem se torna o ator principal Decifragem sob demanda

14

Carregadores
Para executar um programa, um loader deve ser utilizado. O carregador , em geral, parte do sistema operacional Copia o arquivo em formato binrio para a memria
15

Carregadores -Tipos
Binrios / absolutos -programa que usa carregadores absolutos associado com localizaes especficas de memria, e por isso deve sempre ser carregado na mesma rea de memria (.COM) Relocveis-O programa executvel relocvel semelhante ao programa executvel absoluto, exceto que os endereos so todos relativos a zero (no so absolutos) (.EXE)
16

Esquema

17

Exerccios

18

TRT 4FCC 2011Tc. Judicirio TI


1. Em relao interpretao e compilao de programas, considere: I. O programa executado a partir do arquivo fonte sem que haja a necessidade de gerar um arquivo objeto e muito menos um executvel. II. Tem como resultado um arquivo objeto com cdigos em linguagem de mquina. III. O linkeditor tem como funo unir diversos cdigos objetos para gerar um arquivo executvel. IV. As instrues (ou blocos de instrues) do cdigo fonte vo sendo executadas na medida em que so traduzidas. Os itens que se referem, SOMENTE interpretao de programas so: a.I e IV. b.I, III e IV. c.II e IV. d.II, III e IV. e.III e IV.
19

CEFCESPE 2010 Tcnico Bancrio


2. Acerca de linguagens de programao, assinale a opo correta. a) Compilador um programa que traduz um cdigo em linguagem-fonte em outro cdigo em linguagem de mquina. b) Para funcionamento correto, o programa interpretador deve ser executado sobre instrues em linguagem de baixo nvel. c) Programas ligadores podem produzir ligao esttica ou dinmica, sendo comum, em interpretadores de programas orientados a objeto, o uso de ligao dinmica, o que permite apoiar a implementao de polimorfismo. d) Arquivos de cdigo executvel de programas que utilizam estratgia de ligao esttica apresentam necessariamente tamanho menor, quando se comparam a arquivos de cdigo executvel obtidos a partir do uso de estratgia de ligao dinmica. e) A traduo de arquivo em linguagem-fonte para arquivo em linguagemobjeto produz, inevitavelmente, cdigo de menor portabilidade.
20

SUSEP ESAF 2010 Analista tcnico -TI


3. Em relao a compiladores, ligadores (linkeditores) e interpretadores, correto afirmar que a)Uma funo importante do tradutor a realocao. b)O linkeditor o utilitrio responsvel por carregar, na memria principal, um programa para ser executado. c)O depurador o utilitrio responsvel por gerar, a partir de um ou mais mdulos-objeto, um nico programa executvel. d)O linkeditor o utilitrio responsvel por gerar, a partir de um ou mais mdulos-objeto, um nico programa executvel. e)A grande vantagem do uso de interpretadores o tempo gasto na traduo de suas instrues sempre que executado.
21

TRT-MT CESPE 2010 Analista Judicirio Anlise de Sistemas


4. Durante a compilao de um cdigo-fonte, a fase do compilador que responsvel por produzir uma sequncia de tokens a a.anlise lxica. b.anlise semntica. c.anlise sinttica. d.gerao de cdigo executvel. e.verificao de tipos.
22

MCT FINEPCESPE 2009 Informao e informtica -Suporte


5. Com relao a compiladores, ligadores (link-editor) e interpretadores, assinale a opo correta. a)Um cdigo escrito em linguagem de mquina (assembly) deve ser compilado e ligado antes de ser executado. b)A anlise semntica uma tarefa normalmente realizada pelo link-editor. c)A otimizao de cdigo, feita durante a fase de anlise, uma das tarefas do compilador. d)Um interpretador classificado como um tradutor, uma vez que analisa e executa o cdigo. O compilador, por realizar anlise e sntese do cdigo, no considerado um tradutor. e)A construo da tabela de smbolos atividade que pode ser iniciada durante a anlise lxica.
23

MECFGV 2009 Webdesign


6. Enquanto o bloco I refere-se compilao, o II representa o processo de: a.traduo. b.linkedio. c.converso. d.interpretao. e.multiplexao.
24

INMETRO CESPE 2010 Pesq Tcnico em Metrologia e Qualidade

7. Acerca dos conceitos de software bsico, julgue os itens que se seguem. [128] Em processos de compilao, a fase de anlise divida em duas etapas: anlise sinttica e anlise semntica. [129] A JVM (java virtual machine) exemplo de tradutor. [130] Montador um programa de computador que realiza a converso de uma linguagem de montagem (assembly) para cdigo de mquina.
25

METRO SP FCC 2008 Analista Trainee Cincia da Computao


8. No que concerne s linguagens de montagem, considere: I. A linguagem de montagem definida com base na linguagem de mquina, onde cada instruo da mquina representada por um comando mnemnico em caractere alfanumrico. II. Os programas escritos nas linguagens de montagem so especficos para cada famlia de microprocessadores,cujas instrues costumam ser definidas pelo prprio fabricante do microprocessador. III. Meta-assembler monta, exclusivamente, programas para um mesmo tipo de arquitetura de processadores e tem como caracterstica varrer o programa-fonte apenas uma vez, para gerar o cdigo. IV. Os programas montadores ou Assemblers so ferramentas que permitem a traduo de programas fonte escritos em linguagem de montagem para programasobjeto.

correto o que consta APENAS em: a.I e II. b.II e III. c.I, II, III. d.I, II e IV. e.II, III e IV.
26

IPADCESPE 2006 PC-PE Perito Criminal


9. Acerca dos conceitos de montadores, compiladores e interpretadores, assinale a alternativa incorreta. a.Programas fontes podem ser particionados em vrios mdulos e armazenados em arquivos separados. Neste contexto, necessria uma ferramenta capaz de juntar estes arquivos e compor a entrada para um compilador. Tal ferramenta referenciada como montador. b.Um compilador pode ser definido como um programa que converte programas escritos em uma linguagem fonte em programas equivalentes escritos em uma linguagem alvo (normalmente assembly ou linguagem de mquina). c.Em geral, o processo realizado por um compilador compreende duas partes: anlise, na qual um programa fonte processado e armazenado em uma representao intermediria, e sntese, na qual um programa na linguagem alvo construdo a partir da representao intermediria. d.Tipicamente, a etapa de anlise realizada por um compilador compreende 3 fases: anlise lxica, anlise sinttica e anlise semntica. e.Os interpretadores, diferentemente dos compiladores, no produzem cdigo como sada. Ao invs disto, eles prprios executam os programas fontes que lhes so fornecidos como entrada.
27

TER-SC -FAPEU 2005 Analista Judicirio Anlise de Sistemas


10. Qual das alternativas abaixo CORRETA com relao velocidade de execuo de um programa de computador escrito em uma linguagem de alto nvel? a.Programas compilados em tempo de execuo (por um compilador just-in-time) sero to rpidos quanto programas compilados antes da execuo. b.Programas compilados para cdigo nativo sempre sero mais rpidos que programas interpretados. c.Programas compilados e interpretados so igualmente rpidos quando a velocidade de processamento da CPU ultrapassar um determinado patamar. d.Programas compilados em plataformas diferentes sempre tero a mesma velocidade de execuo.
28

Gabarito
1.A 2.C 3.D 4.A 5.E 6.B 7.E, E, C 8.D 9.A 10.B
29