Baixe o app para aproveitar ainda mais
Prévia do material em texto
Engenharia de Computação Disciplina de Arquitetura de Computadores II – 2017 / 2 Professora: Débora Matos Prova 1: Leia com atenção: Leia atentamente cada questão. A interpretação faz parte da prova. A prova é individual e sem consulta. A prova está contabilizada em 10 pontos. Nome: ___________________________________________________________________ Questão 1: (0,6) Verifique as sentenças abaixo: I. Os compiladores têm como função transformar um código descrito em uma linguagem de mais alto nível para uma linguagem de mais baixo nível para que, assim, o mesmo possa ser executado pelo processador. Um exemplo dessa etapa ocorre na tradução de um programa descrito em C para linguagem binária. II. Um programa descrito em linguagem interpretada tem como vantagem que, uma vez traduzido, gera um executável que pode ser executado em qualquer máquina com arquitetura compatível ao processador onde foi traduzido. III. Assembly é uma linguagem de programação de mais baixo nível composta por instruções mais simples que realizam apenas uma operação por vez. Já o assembler é o montador que transforma o assembly no código binário que será executado pela máquina. IV. Um carregador ou loader é um software responsável por alocar espaço de memória para um programa. Além disso, é função desse software a resolução dos endereços simbólicos a endereços físicos e a carga do programa na memória. V. Assembly é uma linguagem de programação que pode ser gerada a partir de um programa que já foi descrito nesse nível ou o mesmo pode ser obtido a partir da compilação de um programa implementado em uma linguagem de mais alto nível. Sendo assim, assembly é uma linguagem de programação que precisa ser compilada para ser executada. Marque a alternativa que apresenta todas as sentenças corretas: a) ( ) I e V; b) ( ) I, II e III; c) ( ) II, III e IV; d) ( ) III e IV; e) ( ) II, IV e V. Questão 2: (0,6) Sobre as etapas de compilação, verifique as sentenças a seguir: I. A análise léxica é a primeira fase de um processo de compilação e sua função é fazer a leitura do programa fonte caractere a caractere e agrupá-los em lexemas; II. A etapa final da análise léxica consiste em produzir uma sequência de símbolos léxicos que são conhecidos como tokens. Um token é um símbolo que representa a unidade léxica como, por exemplo, palavras reservadas; identificadores; números, etc. III. A análise semântica trata a entrada sintática e a transforma em uma representação mais simples. Além disso, essa camada também é responsável por analisar os identificadores e realizar a ligação de cada um deles a sua declaração. IV. A análise semântica é a etapa que verifica se cada expressão definida tem um tipo adequado, conforme as regras próprias da linguagem. Por exemplo, nessa etapa é que serão verificadas se as declarações de cada variável utilizada em uma expressão podem ser satisfeitas (exemplo: uso de int, floats, char, dentre outros). V. A análise sintática valida às regras conforme a sintaxe da linguagem de programação. Nesta etapa, os tokens são agrupados de acordo com a estrutura sintática da linguagem, gerando uma árvore de derivação. Marque a sentença que apresenta todas as alternativas que estão INCORRETAS: a) ( ) Apenas as alternativas I e V estão incorretas; b) ( ) Apenas as alternativas III e IV estão incorretas; c) ( ) Apenas a alternativa IV está incorreta; d) ( ) Todas as alternativas estão incorretas; e) ( ) Nenhuma alternativa está incorreta. Questão 3: (0,6) Sobre softwares de sistemas e suas partes, verifique as sentenças a seguir: I. Graças aos linkers, é possível alterar parte do programa e compilar apenas o procedimento alterado. Com isso, o linker fará a ligação do procedimento ao programa de forma independente, evitando a recompilação de todo o programa novamente. II. Um interpretador alterna ações de tradução e execução, já o compilador atua exclusivamente na tradução do programa fonte e não na execução. III. Uma subrotina é caracterizada por um desvio para a execução de instruções em outra posição e um retorno de onde a mesma foi chamada no programa. É uma prática comum nas construções de subrotinas o uso de pilhas para salvar o contexto de registradores antes da execução das instruções referentes à subrotina. IV. Subrotinas são conjuntos de instruções pré-definidas que são chamadas no programa, semelhantemente a chamada de funções em biblioteca e, portanto, não precisam ser descritas no programa. V. Na chamada da subrotina, sempre deve ser fornecido o endereço de memória onde a subrotina foi armazenada. Em assembly significa que haverá uma instrução de chamada da subrotina e o retorno deve ser sempre realizado com uma instrução do tipo jump para o endereço de início para a subrotina. Marque a sentença que apresenta todas as alternativas que estão INCORRETAS: a) ( ) Apenas as alternativas II e III; b) ( ) Apenas as alternativas III e IV; c) ( ) Apenas as alternativas I e V; d) ( ) Apenas as alternativas IV e V; e) ( ) Todas as alternativas estão incorretas. Questão 4: (0,6) Sobre os processadores RISC e CISC, analise as sentenças abaixo: I. Os processadores CISC possuem uma lógica de decodificação complexa devido à falta de padronização das instruções, já que variam muito com relação ao número de bytes utilizados. Além disso, estes processadores apresentam muitos modos de endereçamento, podendo apresentar modos que requerem vários acessos à memória; II. Os processadores CISC possuem um número considerável de registradores de propósito específico e geral. Sendo assim, além dos registradores definidos para uso do programador, a organização interna apresenta registradores intermediários necessários para armazenar os dados ao longo do caminho de dados entre os componentes da unidade operativa; III. Os processadores RISC, ao contrário dos processadores CISC, apresentam hardware específico para atenderem a algumas instruções que são inseridas na ISA para que a compatibilidade possa ser mantida; IV. Os processadores RISC possuem um conjunto de instruções enxuto, com tempos de execução semelhantes entre as instruções, baixa capacidade de endereçamento com acessos a memória e regularidade na decodificação das mesmas. V. Os processadores CISC podem apresentar instruções que levam muitos ciclos de clock, porém são projetados para que possam ser implementadas técnicas de paralelismo, como, por exemplo, o uso de pipeline, onde cada instrução atua sobre uma unidade operacional diferente em um mesmo ciclo de clock. Marque a sentença que apresenta todas as alternativas que estão CORRETAS: a) ( ) I e III; b) ( ) II e IV; c) ( ) I e IV; d) ( ) II e V; e) ( ) I, IV e V. Questão 5 (1,6): Sobre a técnica de pipeline, responda as seguintes questões: a) (0,5) Explique o funcionamento desta técnica. b) (0,5) É verdade dizer que com a técnica de pipeline uma instrução é executada mais rapidamente do que se a mesma tivesse toda a organização do processador disponível apenas para a sua execução. Justifique sua resposta: c) (0,6) Apresente exemplos de instruções e o que acontece em cada ciclo de clock para cada uma delas quando aplicada a técnica de pipeline. (Para melhor responder a questão, podem ser descritos/desenhados os módulos da unidade operativa e/ou descrever as etapas de execução de cada instrução). Questão 6 (1,6 – 0,4 cada): Para cada sentença a seguir, indique se a mesma corresponde a uma vantagem ou desvantagem (ou se há vantagens e desvantagens) e comente porque. Além disso, marque se é uma característica que se refere a compiladores ou a interpretadores: a. Geram arquivos executáveis, permitindo mais autonomia e segurança do código fonte. ( ) Compilador ( )Interpretador b. Depuração do programa é mais simples. ( ) Compilador ( ) Interpretador c. Apresenta várias etapas de tradução. ( ) Compilador ( ) Interpretador d. Necessário fornecer o programa fonte quando há necessidade de execução em um processador diferente. ( ) Compilador ( ) Interpretador Questão 7 (0,8): Sobre a linguagem Java, descreva sucintamente as etapas de compilação e interpretação em que um programa implementado em Java precisa percorrer até a sua execução: Questão 8 (1,2): Abaixo tem a descrição de um programa descrito para o processador Ramses. Considere que a nota da primeira área de Arquitetura de Computadores II será a média da nota do trabalho com a nota da prova (neste caso, trabalho e prova possuem o mesmo peso). A nota do trabalho está em um vetor a partir da posição 140 e a nota da prova está em um vetor a partir da posição 170. Considere que a ordem das notas dos alunos tem o mesmo aluno em cada posição do vetor. A média final deve ser inteira e salva a partir da posição 200, mas apenas para alunos que possuem até 4 faltas. Aqueles que possuem mais de 4 faltas devem ficar com nota zero. As faltas totais de cada aluno constam a partir da posição 230 (é definida uma posição para cada aluno com o total de faltas). Verifique se o programa tem algum erro, se sim, indique-o e apresente um possível mapa de memória para o programa. retorna: LDR B 139 JZ fim SUB B #1 STR B 139 ADD X #1 LDR A 229,X SUB A #4 JN continua JZ continua JMP zera continua:LDR A 139,X ADD A 169,X SHR A STR A 199,X JMP retorna fim: HLT zera: LDR A #0 STR A 199,X JMP retorna Questão 9 (1,2): O programa abaixo foi descrito para o processador Cesar. Indique qual a função do mesmo. MOV #65498, R3 MOV #65500, R1 MOV #65499, R2 MOV #65535, R5 MOV R1, R4 CLR (R3) espera: TST (R3) BEQ espera MOV 65499, (R1) jmp_rig: INC R1 MOV (R2), (R1) MOV #32, (R4) INC R4 DEC (R2) CMP (R2),#47 BNE pula MOV #57, (R2) pula: MOV #60, R3 ag: SOB R3, ag CMP R1, #65535 BNE jmp_rig BR jmp_left jmp_left: DEC R1 MOV (R2), (R1) MOV #32, (R4) DEC R4 DEC (R2) CMP (R2),#47 BNE pula2 MOV #57, (R2) pula2: MOV #60, R3 ag2: SOB R3, ag2 CMP R1, #65500 BNE jmp_left JMP jmp_rig Questão 10 (1,2): O programa abaixo foi descrito conforme as instruções do Ramses. A função do programa é identifica números ímpares e negativos ao mesmo tempo. No entanto há 2 situações que precisam ser identificadas: (1) a primeira delas é um erro que compromete o funcionamento do programa. O segundo (2) é uma parte do programa desnecessária, mas que não compromete o resultado. Indentifique-os considerando o mapa de memória informado na sequência, indicando no programa as situações (1) e (2). LDR A #0 STR A 129 volta: LDR A 130,I JN cont_teste proximo: LDR A 130 ADD A #1 STR A 130 LDR B 131 SUB B #1 STR B 131,I JZ fim JMP volta cont_teste: SHR A JC cont_teste2 JMP proximo cont_teste2: LDA B 129 SUB B #2 JMP contabiliza contabiliza: LDR B 129 ADD B #1 STR A 129 JMP proximo fim: HLT Mapa de memória de dados questão 7: Endereço Dado 129 0 130 133 131 10 133 131 134 4 135 1 136 255 137 250 138 5 139 0 140 125 141 121 142 252 143 247 144 13 145 251
Compartilhar