Compiladores Questões Avaliação
Por: Igor Marcelo S. • 6/1/2021 • Exam • 881 Palavras (4 Páginas) • 165 Visualizações
1) De acordo com às variações de especificação semântica das linguagens de programação, jugue os itens abaixo em V ou F sobre a análise semântica:
- (V) Não é tão bem formalizada.
- (V) Não existe um método ou modelo padrão de representação do conhecimento.
- (V) Não existe um mapeamento claro da representação para o algoritmo correspondente.
- (F) A análise é artesanal não dependente da linguagem de programação.
- (V)Muitas vezes, a semântica de uma linguagem de programação não é claramente especificada o projetista do compilador tem que analisar e extrair a semântica.
2) A tabela de símbolos estrutura essencial para a análise semântica. Permite saber durante a compilação de um programa o tipo e endereço de seus elementos, escopo destes, número e tipo dos parâmetros de um procedimento, etc. Jugue os itens abaixo:
I. (V) Exemplo de atributos para ser usado como identificador de variável. E o nome da variável, tipo (inteira, real, etc.), escopo (global, local, etc.), endereço na memória, etc. Para vetores, ainda seriam necessários atributos como o tamanho do vetor, valor e tipo de seus limites, etc.
II. (V) Um atributo para identificador de procedimento nome do procedimento, lista de argumentos (número, ordem e tipo), escopo, etc.
III. (V) Principais operações na tabela de símbolos são Inserir: armazena na TS informações fornecidas pelas declarações no programa; Busca: recupera da tabela informações de um elemento declarado no programa quando esse elemento é utilizado; & Remover: remove (ou torna inacessível) da tabela informações sobre um elemento declarado que não se mostra mais necessário no programa (p.e., fora de escopo).
IV. (V) A tabela é acessada pelo compilador sempre que um elemento é mencionado no programa é: Verificar ou incluir sua declaração; Verificar seu tipo, seu escopo ou alguma outra informação; Remover um elemento quando este não se faz mais necessário ao programa.
V. (V) Tamanho da tabela: tipicamente, de algumas centenas de mil campos. Dependente da forma de implementação. Na implementação dinâmica, não é necessário se preocupar com isso.
3) A Geração de código recebe uma representação intermediária e produz como saída um programa alvo equivalente. Jugue os itens abaixo:
I. (V) Tarefas a serem executadas são: Gerenciamento de Memória, Seleção de Instruções, Alocação de Registradores, Ordem de Avaliação dos resultados, Gerenciamento de Memória, Seleção de Instruções, Alocação de Registradores e Ordem de Avaliação dos resultados.
II. (V) Assembly ou linguagem de montagem é uma notação legível por humanos para o código de máquina que uma arquitetura de computador específica usa.
III. (V) A linguagem de máquina, que é um mero padrão de bits, torna-se legível pela substituição dos valores em bruto por símbolos chamados mnemônicos.
IV. (F) Cada arquitetura de computador não tem a sua própria linguagem de máquina e, portanto, gera a sua própria linguagem de montagem. Essas linguagens de montagem não diferem no número e tipo de operações que suportam.
V. (V) A fase de geração de código é, ao contrário, dependente principalmente da máquina alvo, a máquina na qual o código gerado deverá ser executado eventualmente.
4) Quais as vantagens da geração de um código intermediário?
R: Otimizar códigos traz diversas vantagens, dentre elas as de economia no tempo de execução dos mesmos e o espaço ocupado pelos próprios códigos.
...