Autarquia Educacional do Vale do São Francisco – AEVSF Faculdade de Ciências Aplicadas e Sociais de Petrolina – FACAPE Ciência da Computação Arquitetura de Computadores Prof. Sérgio Faustino Lista de Exercícios 2 Obs.: Para as questões a seguir, considere o exemplo da Microarquitetura IJVM (Mic-1). 1o) Descreva, resumidamente, de quais fatores depende o projeto do Nível da Microarquitetura. 2o) Qual a composição básica e quais as funcionalidades dos elementos que formam o Mic-1 (Figura 4.6, Tanenbaum)? 3o) Um registrador pode ser lido e escrito no mesmo ciclo de clock sem produzir lixo? 4o) Descreva o que ocorre durante cada subciclo em um ciclo do caminho de dados. 5o) Qual o objetivo de uma microinstrução? Descreva a função dos sinais que compõem uma palavra de controle (microinstrução)? 6o) Como a arquitetura IJVM divide a memória? Caracterize cada uma das partes. 7o) Descreva o que faz cada instrução abaixo e quais os passos necessários (microinstruções) para a execução das mesmas (informe o conteúdo dos registradores envolvidos e da pilha a cada passo). a) IAND (considere que as palavras do topo da pilha são 4216 e 2516). b) IFEQ deslocamento (considere o deslocamento = 012316 e a palavra do topo da pilha igual a 0016) c) IFEQ deslocamento (considere o deslocamento = 012316 e a palavra do topo da pilha igual a 4216) d) SWAP (considere que as palavras do topo da pilha são 4216 e 2516) 8o) Quais as características mensuráveis que podem ser utilizadas para melhorar o projeto do Nível da Microarquitetura? 9o) (questão 7, cap. 4, Tanenbaum) Considere o seguinte comando Java: i = j + k + 4; Encontre duas traduções diferentes desse comando para a linguagem de montagem do IJVM. 10o) (questão 8, cap. 4, Tanenbaum) Encontre o comando Java que produziu o seguinte código IJVM: ILOAD j ILOAD k ISUB BIPUSH 6 ISUB DUP IADD ISTORE i 11o) (questão 25, cap. 5, Tanenbaum) Calcule a expressão booleana (A AND B) OR C para: A = 1101 0000 1010 1101 B = 1111 1111 0000 1111 C = 0000 0000 0010 0000 12o) (questão 26, cap. 5, Tanenbaum) Elabore uma metodologia para trocar o conteúdo de duas variáveis A e B sem usar uma terceira variável ou um registrador. Dica: pense na instrução “exclusive or”. 13o) Quais as características que um bom Nível ISA deve apresentar? 14o) O que diferencia o Modo Kernel e o Modo Usuário? 15o) Por que as instruções pequenas são, em geral, mais atraentes do que as grandes? 16o) Explique e exemplifique os modos básicos de endereçamento. 17o) Caracterize e exemplifique as instruções do Nível ISA segundo as suas funcionalidades. 18o) Para o trecho de código abaixo, identifique para cada instrução: a) O que a mesma faz (observe a figura 5.33 do Tanenbaum) b) O modo de endereçamento c) O tipo de instrução (segundo as funcionalidades) Código em C: tela[200]=~tela[200]; Correspondente: MOV EAX,DWORD [_tela] MOV AL,BYTE [EAX+0C8H] NOT AL MOV ECX,DWORD [_tela] MOV BYTE [ECX+0C8H],AL