Baixe o app para aproveitar ainda mais
Prévia do material em texto
ATIVIDADE AVALIATIVA SEMANA 5 PERGUNTA 1 As técnicas-padrão de geração de código requerem modificações das buscas em pós-ordem na árvore sintática, decorrentes das gramáticas de atributos de exemplos anteriores ou ações equivalentes durante uma análise sintática, caso uma árvore sintática não seja gerada explicitamente. Com relação ao apresentado, analise as asserções a seguir e as relações propostas entre elas. I. 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 (em geral, após algum processamento adicional do código intermediário). PORQUE II. Esse passo pode ser bastante simples, especialmente se o código intermediário for altamente simbólico e contiver pouca informação sobre a máquina-alvo ou o ambiente de execução. Analisando as asserções anteriores, conclui-se que: a. as duas asserções são verdadeiras, e a segunda justifica a primeira. b. as duas asserções são falsas. c. a primeira asserção é verdadeira, e a segunda é falsa. d. a primeira asserção é falsa, e a segunda é verdadeira. e. as duas asserções são verdadeiras, e a segunda não justifica a primeira. PERGUNTA 2 Compilar é o ato de transformação de um código fonte escrito em uma linguagem de programação específica em um código objeto para ser lido por um computador. O processo estrutural lógico da compilação pode ser dividido em duas fases: a fase da análise e a fase da síntese. Cada fase, ainda, pode ser subdivida em outras sub fases. Nesse contexto, assinale a alternativa correta que apresenta a fase do processo de compilação que é gerado a partir da árvore de derivação. a. fase léxica. b. fase sintática. c. código intermediário. d. gerador de código. e. otimizador de código. PERGUNTA 3 Uma estrutura de dados que representa o programa-fonte durante a tradução é denominada representação intermediária ou IR. Além da IR, a estrutura de dados principal usada durante a tradução é a tabela de símbolos. Assinale a alternativa que descreve o que é um código intermediário. a. É a representação intermediária, semelhante ao código-alvo. b. É o código final, ou seja, o código de máquina. c. É a representação inicial para a construção do código-fonte. d. É a forma mais abstrata de um compilador trabalhar. e. É a forma mais complexa de um compilador trabalhar. PERGUNTA 4 A geração de código _______ ou geração direta de código-alvo pode ser vista como uma _______ similar a muitos dos problemas de _______. Preencha as lacunas escolhendo a alternativa CORRETA. a. atributos, computação de atributos, atributos. b. intermediário, computação de atributos, atributos. c. direto, computação de atributos, atributos. d. três endereços, aquisição de atributos, classe. e. direto, aglomeração de atributos, atributos. PERGUNTA 5 Para acomodar todas as construções de uma linguagem de programação padrão, será preciso variar a forma do código de três endereços para cada construção. Se uma linguagem contiver características pouco usuais, pode ser necessário inventar novas formas de código de três endereços para expressar essas características. Com base no apresentado, avalie as afirmações a seguir e relacione adequadamente os termos aos seus conceitos. 1. TINY 2. Código de três endereços 3. P-código I. Não apresenta uma forma padrão, da mesma maneira como não existe uma forma padrão para as árvores sintáticas. II. É reconhecida por ser uma linguagem de programação imperativa, ou seja, de pequeno porte e que contém somente comandos e expressões. III. É projetado para ser executado diretamente e contém uma descrição implícita de um ambiente de execução específico, que inclui o tamanho dos dados. Assinale a alternativa que correlaciona adequadamente os dois grupos de informação. a. 1 – III; 2 – II; 3 – I. b. 1 – I; 2 – II; 3 – III. c. 1 – I; 2 – III; 3 – II. d. 1 – II; 2 – III; 3 – I. e. 1 – II; 2 – I; 3 – III. PERGUNTA 6 Conforme estudado, a tarefa final de um compilador é gerar código executável para uma máquina-alvo, o qual deve ser uma representação fiel da semântica do código-fonte. Com relação à geração de código, avalie as afirmativas a seguir. I. Na geração de código, não necessariamente estão envolvidas tentativas de otimizar ou melhorar a velocidade e/ou o tamanho do código-alvo. II. A geração de código é a fase mais complexa de um compilador. III. Em razão da facilidade de se gerar um código, um compilador geralmente realiza essa fase em um único passo. IV. Um compilador sempre gera um código executável. Está correto o que se afirma em: a. I, III e IV, apenas. b. I, II e IV, apenas. c. I e III, apenas. d. I, II e III, apenas. e. II, apenas. PERGUNTA 7 Há duas formas populares de código intermediário: o código de três endereços e o P-código. Considerando algumas das propriedades dessas formas, analise as afirmativas a seguir e assinale V para a(s) verdadeira(s) e F para a(s) falsa(s). I. ( ) O P-código foi planejado para ser executado diretamente na máquina. II. ( ) Um código de três endereços requer que o compilador gere nomes para os temporários. III. ( ) A instrução mais básica do código de três endereços é projetada para representar a avaliação de expressões aritméticas. IV. ( ) Os temporários correspondem aos nós interiores da árvore sintática e representam seus valores computados. Assinale a alternativa que apresenta a sequência CORRETA. a. V, V, V, V. b. V, V, F, V. c. F, F, F, V. d. F, V, V, V. e. V, F, V, F.
Compartilhar