Buscar

D571 COMPILADORES E COMPUTABILIDADE UNIDADE II 2020

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

COMPILADORES E COMPUTABILIDADE D571_13701_R_20201 UNIDADE II
· Pergunta 1
0,5 em 0,5 pontos
	
	
	
	A respeito da definição e tarefas dos Montadores ( Assemblers), Ligadores ( Linkers) e Carregadores ( Loaders) analise as afirmativas a seguir e assinale a alternativa correta.
I) Os montadores são encarregados da tradução do programa escrito em linguagem de montagem ( assembly) para um programa equivalente escrito em linguagem de máquina, isto é, com o conjunto de instruções da arquitetura alvo (ISA – Instruction Set Architecture).
II) Os ligadores, llinkers ou linkeditores são programas responsáveis por unir as diferentes partes de um programa e construir um único executável. A sua existência é o que permite a modularização de um programa e o uso de bibliotecas estáticas.
III) O Loader: é responsável pela transferência de um programa do disco para a memória principal, deixando-o pronto para a execução. Usualmente o carregador é parte do Sistema Operacional.
 
	
	
	
	
		Resposta Selecionada:
	e. 
Todos itens são verdadeiros. 
	
	
	
· Pergunta 2
0,5 em 0,5 pontos
	
	
	
	A respeito dos Carregadores ( Loaders) é incorreto afirmar:
 
	
	
	
	
		Resposta Selecionada:
	e. 
Reunir os módulos objeto em um único elemento chamado de módulo absoluto de carga.
	
	
	
· Pergunta 3
0,5 em 0,5 pontos
	
	
	
	A sintaxe geralmente é definida por uma Gram. Livre de Contexto, mas estas não são capazes de descrever aspectos sobre a compatibilidade de tipos ou regras de escopo de identificadores. Analise as informações a seguir e assinale a alternativa correta.
I) Uma Gramática de Atributos é uma gramática livre de contexto estendida com regras de cálculo e/ou ações semânticas de modo a fornecer sensitividade ao contexto através de elementos chamados de atributos, que estão associados aos símbolos terminais e não terminais utilizados na regra de produção.
II) Um atributo é qualquer propriedade da estrutura da linguagem que se deseja quantificar ou caracterizar, como por exemplo, o tipo e o escopo das variáveis, valores de expressões, etc.
III) O valor dos atributos é estabelecido tomando como base a árvore sintática explícita do programa e podem ser calculados tanto em tempo de compilação quanto em tempo de execução, de acordo com a propriedade que representam.
 
	
	
	
	
		Resposta Selecionada:
	e. 
Todos itens são verdadeiros.
	
	
	
· Pergunta 4
0,5 em 0,5 pontos
	
	
	
	Usualmente a geração de código acontece em duas etapas. Primeiramente ocorre a tradução da estrutura do programa para um código em linguagem intermediária e em seguida, esse código dado linguagem intermediária é então traduzido para a linguagem simbólica do processador-alvo. A esse respeito julgue as afirmativas a seguir e assinale a alternativa correta.
I - Permitir o reaproveitamento de código, facilitando a portabilidade de um compilador para diversas plataformas, uma vez que apenas os módulos finais precisam ser refeitos a cada nova plataforma de hardware.
II - Permitir a utilização de um otimizador de código que analise aspectos independentemente de máquina e melhore o código intermediário antes de uma tradução definitiva.
III - Permitir uma compilação portável para diferentes arquiteturas e sistemas operacionais independente de qual seja a linguagem fonte.
 
	
	
	
	
		Resposta Selecionada:
	c. 
Os itens I e II são verdadeiros.
	
	
	
· Pergunta 5
0,5 em 0,5 pontos
	
	
	
	A tabela de movimentos de um analisador LR(1) é construída a partir de um autômato de pilha, cujos estados representam o processo de derivação do programa em relação a gramática de linguagem. As diferentes posições da tabela informam ao analisador qual a operação (empilhamento, redução ou aceitação) deve ser realizada em cada instante do processo de análise, tomando como referência apenas o estado corrente e o símbolo (token) dado na entrada. Acerca desta tabela e de sua construção, analise cada uma das afirmativas a seguir e selecione a alternativa correta.
I - A operação de empilhamento equivale a retirada do símbolo da entrada e sua inserção na pilha para processamento. A célula da tabela equivalente a esta ação é dada pelo número correspondente ao estado que o autômato assume após a transição.
II - Durante uma ação de redução, os símbolos (estados) equivalentes a cadeia derivada, são retirados da pilha e substituídos pelo não-terminal que os origina, realizando assim o processo inverso ao da derivação pela regra em questão. Na tabela essa ação é colocada em cada célula cuja linha corresponde ao estado que contém a regra completada e as colunas correspondentes aos símbolos pertencentes ao conjunto de seguidos (Follow) do não-terminal associado à regra.
III - A aceitação da cadeia ocorre quando encontramos uma ocorrência do símbolo inicial da gramática. Desta forma, preenchemos a coluna correspondente ao símbolo inicial com esta ação para todas as linhas da tabela.
	
	
	
	
		Resposta Selecionada:
	c. 
Os itens I e II são verdadeiros.
	
	
	
· Pergunta 6
0,5 em 0,5 pontos
	
	
	
	Um dos tipos de analisadores ascendentes é o conhecido como LR(1), que constrói a árvore sintática do programa realizando reduções através das regras da gramática geradora da linguagem. Considerando o estado corrente do mecanismo reconhecedor (um autômato de pilha) e apenas um símbolo da entrada é possível determinar com precisão qual a regra apropriada e que de ser aplicada em cada momento do processo de análise do programa.
A construção desse autômato começa com uma ampliação das regras da gramática, as quais acrescenta-se uma nova regra que sinalize o início do processo de derivação e permita diferenciar qualquer ocorrência do símbolo inicial daquela que se configura como raiz da árvore sintática.
Adicionalmente caracterizamos os diferentes momentos de derivação de uma regra através de uma representação na forma de item. Num item dado por o marcador sinaliza os símbolos que já foram encontrados pelo parser (os símbolos de α) e também aqueles que ainda faltam para que a regra tenha sido completamente derivada . Quando todos os símbolos tiverem sido encontrados, ou seja, tivermos um item na forma é possível então realizar a redução da sequência correspondente  por A.
Supondo a gramática dada a seguir:
Sabendo que já encontra-se aumentada pela inclusão da regra 0, assinale a alternativa que corresponde ao primeiro estado (inicial) do autômato de reconhecimento deste analisador. 
	
	
	
	
		Resposta Selecionada:
	d. 
	
	
	
· Pergunta 7
0,5 em 0,5 pontos
	
	
	
	O Linker tem a tarefa de reunir em um único programa os vários módulos objeto obtidos a partir da tradução dos diferentes arquivos fontes que compõe o programa. Esse arquivo resultante, dado por todas as partes devidamente encaixadas, damos o nome de Módulo Absoluto de Carga. Durante esse processo o linker deve ser capaz de resolver as chamadas Referências Cruzadas, isto é, referência a elementos externos ao módulo corrente e são conhecidos apenas após a ligação do módulos. Tendo em mente estas atribuições, é incorreto afirmar que cabe ao Linker:
 
	
	
	
	
		Resposta Selecionada:
	e. 
Copiar o módulo de carga para a memória principal, preparando o programa para a sua execução.
	
	
	
· Pergunta 8
0,5 em 0,5 pontos
	
	
	
	Em uma Gramática de Atributos podemos classificar cada um de seus atributos em duas categorias, herdados e sintetizados, de acordo com o símbolo a quem estão associados durante o seu cálculo. Os chamados atributos herdados são aqueles que aparecem ligados a elementos posicionados a direita do sinal de derivação, ou seja, em uma regra na forma A→α, seriam os atributos ligados a qualquer símbolo da sentença α. Por sua vez, os atributos ditos sintetizados são aqueles que aparecem associados ao elemento da esquerda do sinal de derivação, isto é, para o nosso exemplo, seriam aqueles que estiverem associados ao símbolo A. A respeito dos atributos analise os itens a seguir e assinale a alternativa correta.
I) Entre outros aspectos, a categorização dos atributos é importante pois permite determinaro sentido em que devemos percorrer a árvore sintática para calculá-lo. No caso dos atributos herdados, como o próprio nome sugere, seu valor é calculado a partir de elementos hierarquicamente superiores da árvore e dos quais este valor “deriva”.
II) Atributos sintetizados são computados a partir de nós inferiores da árvore sintática, assim os sucessivos valores deste atributo podem ser calculados percorrendo a árvore de baixo para cima. Esta categoria de atributos é especialmente interessante para a propagação de características comuns a diferentes trechos do código, como por exemplo no trecho “int x, y, z;”, em que o tipo int pode ser propagado para um nó superior comum a todas as variáveis (x, y e z) declaradas no mesmo comando.
III) Gramáticas que utilizam apenas atributos sintetizados são chamadas de S-Atribuídas. Na tradução dirigida pela sintaxe, assume‐se que os símbolos terminais tenham apenas atributos sintetizados uma vez que as definições não providenciem quaisquer regras semânticas, apenas ações para a geração de código.
 
	
	
	
	
		Resposta Selecionada:
	e. 
Todos itens são verdadeiros.
	
	
	
· Pergunta 9
0,5 em 0,5 pontos
	
	
	
	São tarefas de responsabilidade de um montador Assembler:
I - A substituição dos mnemônicos pelos opcodes numéricos do conjunto ISA (Instruction Set of Architecture), seguindo uma tabela de associações que relaciona o mnemônico com a instrução-alvo.
II - A substituição dos endereços simbólicos que representam destinos de saltos e constantes por endereços numéricos, determinando de maneira absoluta ou relativa em termos do registrador PC (Program Counter) o endereço de destino dos rótulos.
III - Reservar espaço na memória para armazenamento de dados de acordo com o tipo associado a cada variável declarada no programa.
IV - Gerar constantes em memória para variáveis e constantes, determinando o valor associado ao modo de endereçamento do operando.
 
	
	
	
	
		Resposta Selecionada:
	e. 
Todos itens são verdadeiros.
	
	
	
· Pergunta 10
0,5 em 0,5 pontos
	
	
	
	A tabela de símbolos é uma estrutura de dados que tem por propósito armazenar todos os nomes declarados pelo programador juntamente com os seus respectivos atributos. É considerada fundamental para o processo de compilação, pois participa de várias etapas do processo inclusive para a geração de código. Durante a análise semântica o compilador busca nesta tabela as informações sobre os identificadores que participam de suas análises, como por exemplo, para recuperar os tipos dos identificadores envolvidos no cálculo de uma expressão com o propósito de verificar a compatibilidade entre eles.
Sobre a tabela de símbolos e a análise semântica é incorreto afirmar que:
	
	
	
	
		Resposta Selecionada:
	a. 
Questões relacionadas a declaração prévia dos identificadores, escopo de utilização e a verificação dos argumentos informados como parâmetro durante a chamada de uma sub-rotina são aspectos pertinentes ao componente semântico de tempo de execução.

Outros materiais