Buscar

Nota 10 - UNIVESP - 2022 - Linguagens e Compiladores - S7

Prévia do material em texto

Fazer teste: Semana 7 - Atividade Avaliativa
Linguagens e Compiladores - EEL101 - Turma 001 Atividades
Fazer teste: Semana 7 - Atividade Avaliativa 
a.
b.
c.
d.
e.
PERGUNTA 1
Se o código gerado for visto como um atributo de cadeia de
caracteres (em que as instruções são separadas por
caracteres de mudança de linha), esse código passa a ser
um atributo sintetizado que pode ser definido com base em
uma gramática de atributos e gerado diretamente durante a
análise sintática ou por um percurso em pós-ordem na árvore
sintática. 
Observe a gramática a seguir.
exp → id = exp ÷ aexp / aexp → aexp + fator ÷ fator / fator →
(exp) ÷ num ÷ id
Agora, assinale a alternativa correta.
Essa gramática não contém operações, apenas expressões.
Essa estrutura de dados contém apenas uma operação
(com o símbolo *).
Essa gramática contém apenas uma operação: atribuição
(com o símbolo =).
Essa gramática contém apenas três operações: atribuição
(com o símbolo exp), adição (com o símbolo +) e fator.
Essa gramática contém apenas duas operações: atribuição
(com o símbolo =) e adição (com o símbolo +).
1,66 pontos  
PERGUNTA 2
Desde os primeiros compiladores dos anos 1950, a
qualidade do código gerado por um compilador tem grande
1,68 pontos  
?
https://ava.univesp.br/webapps/blackboard/execute/courseMain?course_id=_7263_1
https://ava.univesp.br/webapps/blackboard/content/listContent.jsp?course_id=_7263_1&content_id=_941486_1&mode=reset
a.
b.
c.
d.
e.
importância. Essa qualidade pode ser medida pela
velocidade e pelo tamanho do código-alvo, embora a
velocidade seja, em geral, mais importante. 
Com relação ao apresentado, analise as asserções a seguir
e as relações propostas entre elas.
 
I. Os compiladores modernos lidam com o problema da
qualidade de código com a execução de diversos passos no
processo de compilação.
PORQUE 
II. A coleta de informações sobre o código-fonte e o uso
dessas informações para transformações para melhoria de
código nas estruturas de dados que representam o código
são exemplos desses passos. Diversas técnicas para
melhorar a qualidade do código foram desenvolvidas ao
longo dos anos, as quais são identificadas como técnicas de
otimização de código. 
Analisando as asserções anteriores, conclui-se que:
a primeira asserção é falsa, e a segunda é verdadeira.
a primeira asserção é verdadeira, e a segunda é falsa.
as duas asserções são verdadeiras, e a segunda não
justifica a primeira.
as duas asserções são verdadeiras, e a segunda justifica a
primeira.
as duas asserções são falsas.
PERGUNTA 3
O processo de compilação é subdivido em duas partes: a
análise do código e a síntese. A fase de análise é conhecida
também como front-end, e a fase de síntese é conhecida
como back-end. Ao fim da primeira etapa, como no final da
etapa da síntese, um código objeto é gerado. Este código é
interpretado e executado pelo computador. 
1,68 pontos  
a.
b.
c.
d.
e.
Considerando as oportunidades de otimização do código,
analise as afirmativas a seguir e assinale V para a(s)
verdadeira(s) e F para a(s) falsa(s) com relação 
I. ( ) Há a eliminação do chamado código morto, ou seja,
partes do código que são inoperantes. 
II. ( ) Há a renomeação das variáveis de curta duração,
conhecidas como variáveis temporárias. 
III. ( ) Ferramentas de software para otimização do código
podem ser usadas, como a Code Profiler.
IV. ( ) É possível usar técnicas, como Peephole ou
baseados, em análise do tempo de vida.
Assinale a alternativa que apresenta a sequência CORRETA.
V, V, F, V.
V, F, V, V.
F, F, F, V.
F, V, V, V.
V, V, V, V.
PERGUNTA 4
Se um compilador gerar código intermediário diretamente
durante a análise sintática ou a partir de uma árvore
sintática, deve ocorrer uma passada adicional pelo código
intermediário para gerar o código-alvo final. 
Considerando as características desse tipo de ambiente,
analise as afirmativas a seguir e assinale V para a(s)
verdadeira(s) e F para a(s) falsa(s).
I. ( ) É fundamental a alocação adequada dos registradores
e a manutenção das informações sobre o uso dos
registradores, ou seja, quais registradores estão disponíveis
e quais contêm valores conhecidos.
II. ( ) A geração de código a partir de um código
intermediário requer uma das seguintes técnicas-padrão ou
as duas: expansão de macros e simulação estática.
1,66 pontos  
a.
b.
c.
d.
e.
III. ( ) A expansão de macros requer a substituição de cada
tipo de instrução de código intermediário por uma sequência
equivalente de instruções de código-alvo.
IV. ( ) Exige-se que o compilador acompanhe as decisões
sobre localização e particularidades de código em estruturas
de dados separadas e que os procedimentos de macros
variem a sequência de código.
Assinale a alternativa que apresenta a sequência
CORRETA.
 V, V, V, V.
F, V, V, V.
F, F, F, V.
 V, F, V, V.
V, V, F, V.
PERGUNTA 5
A complexidade da descrição do código intermediário e do
código-alvo para esse mecanismo é aumentada, de forma
mais significativa que para outros mecanismos das
linguagens, em decorrência de diferentes máquinas-alvo
usarem mecanismos consideravelmente distintos para as
ativações e, também, em razão de as ativações dependerem
da organização do ambiente de execução.
Com base no apresentado, avalie as afirmações a seguir e
relacione adequadamente os termos aos seus conceitos.
1. Declaração
2. Parâmetros 
3. Sequência de ativação
I. Procedimento também conhecido como definição de
função.
II. Estrutura dos procedimentos oriundos das funções.
III. Código da função ativada.
1,66 pontos  
a.
b.
c.
d.
e.
 
Assinale a alternativa que correlaciona adequadamente
os dois grupos de informação.
1 – II; 2 – III; 3 – I.
1 – III; 2 – II; 3 – I.
1 – II; 2 – I; 3 – III.
1 – I; 2 – III; 3 – II.
1 – I; 2 – II; 3 – III.
a.
b.
c.
d.
e.
PERGUNTA 6
Conforme estudado, as características gerais da geração de
código permanecem constantes para uma ampla variedade
de arquiteturas.
Quanto à sequência de operações, avalie as afirmativas a
seguir.
I. Apresentam a geração de código vista como computação
de um atributo de cadeia sintetizado, sendo útil para
apresentar com clareza as relações entre as sequências de
código.
II. O uso da concatenação de cadeias não provoca uma
grande quantidade de cópias de cadeias.
III. Em regra, é muito mais desejável gerar pequenos trechos
de código à medida que ocorre a geração de código e gravar
esses trechos em um arquivo ou, então, inseri-los em uma
estrutura de dados.
IV. Embora seja útil ver o código como puramente
sintetizado, a geração de código depende grandemente dos
atributos herdados.
Está correto o que se afirma em:
I, II e III, apenas.
II, apenas.
I e III, apenas.
I, III e IV, apenas.
1,66 pontos  
I, II e IV, apenas.