Prova Modelo. Nome: Número:



Documentos relacionados
T1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA

Conteúdos: Debora, Edcarllos, livros! slides disponíveis!

Do alto-nível ao assembly

Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

Universidade Federal da Paraíba Centro de Informática Departamento de Informática

Caminho de Dados e Controle. Prof. Leonardo Barreto Campos 1

AULA 3 Alocação dinâmica de memória: Ponteiros

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO

Estruturas de controlo condicional

Fundamentos de Arquitetura e Organização de Computadores

Projetando um Computador

INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS

Faculdade de Computação

Projetando um Computador Parte II Arquitetura do Processador BIP

Arquitetura de Computadores Moderna

Data Path / Control Path Controle do MIPS

O Sistema de Computação

OBSERVAÇÕES: EXERCÍCIOS

Sistemas Numéricos. Tiago Alves de Oliveira

PROVA Duração da prova: 120 minutos

Organização e Arquitetura de Computadores I

Informação-Prova de Equivalência à disciplina de: Aplicações Informáticas B. 1. Introdução. Ensino Secundário. Ano letivo de 2011/12

Prof. Adilson Gonzaga. Interface com Displays

Arquitetura FPU: Implementação MIPS32. Guilherme Fernandes Raphanelli Diogo D. Fonseca dos Santos

Informática Aplicada

Procedimentos e Gestão de Subrotinas

Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Algoritmos APRENDENDO A PROGRAMAR COM C#

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

Estrutura de um Computador

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Aula 3/4: Vetores/Matrizes e Ponteiros

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

Arquitetura e Organização de Processadores. Aula 2. Processadores RISC Apresentação do processador MIPS

Arquitectura interna de um computador

1. Estrutura de Dados

Gerenciamento de Memória Minix 3.1.7

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

Disciplina: Organização e Arquitetura de Computadores II Professores: Fabiano Hessel e Ney Calazans 22/abril/2009

Interface com Displays de 7 Segmentos. Interface com Displays

MC Teste de Mesa e Comandos Repetitivos

Arquitetura de Computadores II MIPS64. Prof. Gabriel P. Silva

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans. Lista de associação de números e mnemônicos para os registradores do MIPS

Introdução à Informática. Alexandre Meslin

Oganização e Arquitetura de Computadores

Guia Rápido MIPS. Tipos de Dados e Formatações

Exercícios resolvidos (aula de 4 de Maio) Resolução:

Dicas: Nas linhas 7 e 8 as constantes imediatas são especificadas como caracteres ASCIIE, o que é aceito pelo montador MARS.

1: 2: 2, [1] [2] 0x x001f8021 $16,$0,$31 13 [3] 0x x

Memórias Cache. Memória

Programação de Computadores I. Linguagem C Função

Arquitetura de Computadores

O Funcionamento do Processador

O Conjunto de Instruções do Processador

TECNOLOGIA EM MECATRÔNICA INDUSTRIAL CONTROLADORES LÓGICOS PROGRAMÁVEIS

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans

Nosso Site.

Arquitetura de Computadores - Módulos de E/S. por Helcio Wagner da Silva

Orientação a Objetos

Linguagens de Programação:

Arquitetura de Computadores EL66C 1a. Prova - Gabarito 26/04/10

Sistemas Processadores e Periféricos Aula 2 - Revisão

Organização e Arquitetura de Computadores I

Referências. Programação de Computadores II. Cap. 7 Cadeias de Caracteres. Caracteres. Tópicos

Montadores e Compiladores

Conjunto de Instruções. Prof. Leonardo Barreto Campos 1

BC1424 Algoritmos e Estruturas de Dados I Aula 02: Ponteiros, estruturas e alocação de memória

Módulo IV Programação Visual Basic. Programação

Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

Escreva um programa em código assembly correspondente ao seguinte programa C.

Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO

Sistemas Digitais Ficha Prática Nº 7

Construção de uma via de dados, abordagem monociclo, multiciclo e pipeline

[1] $2,$0,$3 105 [2] 0x004000e8

66 [2] 0x x c

Conceitos básicos de programação

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Aula 03

Histórico e Evolução da Computação

Arquitetura de Computadores - Operação da Unidade de Controle. por Helcio Wagner da Silva

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Sumário. Aula Anterior. Exercício 7.1 Contagem de bits a 1 numa palavra Exercício 7.2 Deslocamento de n bits num operando de 64 bits.

ARQUITECTURA DE COMPUTADORES

Aula 01. Breve História dos Computadores Informatiquês O Computador Software vs. Hardware. Introdução à Informática. Prof. Fábio Nelson.

Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação

Exame de Equivalência à Frequência do Ensino Secundário

Transcrição:

Arquitectura de Computadores (2008/2009) Licenciatura em Engenharia Informática Prova Modelo 27 de Abril de 2009 Duração: 56 min. + 5 min. de tolerância Nome: Número: Isto trata-se de uma prova modelo para ilustrar o funcionamento da avaliação usando perguntas de escolha múltipla. Os examinadores reservam-se o direito de modificar o tipo de prova e usar outras modalidades de questionário nos exames e frequências. As perguntas 13 e 14 referem-se ao módulo 3 (esta matéria não é avaliada na frequência intercalar) Notas Importantes: A fraude denota uma grave falta de ética e constitui um comportamento não admissível num estudante do ensino superior. Não serão admitidas quaisquer tentativas de fraude, levando qualquer tentativa detectada à reprovação imediata, tanto do facilitador como do prevaricador. Durante a prova pode consultar a bibliografia da disciplina (slides, livros, enunciados e materiais de apoio aos trabalhos práticos). No entanto, não é permitido o uso de computadores/máquinas de calcular e a consulta de exercícios previamente resolvidos. Isto é um teste de escolha múltipla onde deverá assinalar claramente as respostas na folha de enunciado. Cada pergunta correctamente respondida vale cinco pontos; cada pergunta errada desconta dois pontos; cada pergunta não respondida, conta zero pontos. Um total abaixo de zero conta como zero valores. 1. Considere o programa em C em que a tabela tab começa no endereço 5000 e o endereço de ptr é 1000. Que valores são impressos no ecrã? int main(){ int tab[]={1,2,3}; int *ptr; ptr=tab; printf( %d,%d,%d,%d,%d,%d,&ptr,ptr,*ptr,&tab,tab,*tab); } 1000,5000,1,5000,5000,1 5000,1000,1,5000,1,1 1000,5000,1,desconhecido,5000,1 Nenhuma das anteriores.

2. Considere a codificação da instrução beq $8, $9, salto no pedaço de código abaixo indicado. Sabendo que o label salto representa o endereço 0x2000, indique a codificação em hexadecimal da instrução? salto: addu $8, $9, $0 beq $8, $9, salto 0x1109FFFE 0x11090002 0x04892000 0x11092000 3. Considere o código em C onde é feita a seguinte alocação e libertação de memória. Sabendo que o bloco alocado começa no endereço 0x5000, o que é que acha que acontece? int *ptr, *aux; ptr=(int *)malloc(6*sizeof(int)); aux=ptr+3; free(aux); Os 24 bytes a começar em 0x5000 são disponibilizados. Só a metade superior do bloco, ou seja os 12 bytes a começar em 0x500B, é que são libertados. O gestor de memória não encontra a entrada na tabela de alocações, podendo dar origem a erros. A memória é libertada mas não poderá voltar a ser alocada. 4. Indique qual das seguintes afirmações é VERDADEIRA. Se uma função utilizar o registo $t0 deve ter o cuidado de o devolver no estado em que o encontrou. O registo $at não deve ser utilizado pelo programador porque é necessário a algumas pseudo-instruções. Uma função quando começa a executar deve guardar sempre o conteúdo de $ra na pilha de forma a poder retornar mais tarde. Como o registo $v0 só tem 32 bits o MIPS não é capaz de implementar funções em C que retornem à saída double words (64 bits).

5. Considere o seguinte programa em C. Indique qual a declaração correcta das variáveis p e h. p = (int *)malloc(sizeof(int)); *p =10; h = &p; A declaração de p e de h é int *p,**h;. A declaração de p e de h é int *p,*h;. A declaração de p e de h é int *p,h;. A declaração de p e de h é int **p,*h;. 6. Relativamente à memória de um programa que está a executar, diga qual das afirmações está CORRECTA: Durante a execução, as zonas de pilha e memória dinâmica (heap) podem ficar contíguas. Durante a execução, a zona de memória dinâmica (heap) pode crescer e sobrepor-se à zona estática. A pilha é uma zona de memória que tem sempre o mesmo tamanho. Durante a execução a pilha e zona de memória dinâmica (heap) podem ficar sobrepostas. 7. A representação em complemento para dois do valor -93 (decimal) para uma palavra de 8 bits é: 1010 0011 0101 1100 0101 1101 1010 0010 8. Escolha a afirmação FALSA: Ao compilar um código C para um processador INTEL este correrá também num MIPS pois este último microprocessador interpreta o código. O código C é independente do processador, ao passo que o código Assembly do MIPS é específico para este microprocessador. Para usar funções escritas em C juntamente com funções escritas em Assembly do MIPS é necessário primeiro compilar o código C para Assembly do MIPS. Uma função escrita em Assembly do MIPS pode chamar uma função escrita em linguagem C e devidamente compilada, desde que respeite as convenções de passagem de parâmetros.

9. Qual dos seguintes pedaços de código em Assembly do MIPS conta o número de caracteres de uma string armazenada em str, sem contabilizar os espaços (caracter com código ASCII 32)? (Nota: o resultado deverá ficar em $s0) - lbu $t1,0($t0) beq $t1,$0,fim beq $t1,$t3,cont addiu $t0,$t0,1 - lbu $t1,0($t0) beq $t1,$0,fim beq $t1,$t3,cont addiu $t0,$t0,4 - lw $t1,0($t0) beq $t1,$0,fim beq $t1,$t3,cont addiu $t0,$t0,1 - lb $t1,0($t0) bne $t1,$0,fim bne $t1,$t3,cont addiu $t0,$t0,1

10. Alguns processadores, como o x86, têm instruções próprias para entradas e saídas. Os restantes: Têm de usar hardware adicional para simular essas instruções. Têm de simular as entradas/saídas como se fossem células de memória RAM normais. Não permitem a ligação de dispositivos externos. Têm acessos mais lentos aos dispositivos externos. 11. Indique qual das seguintes afirmações é FALSA O uso da pilha para armazenamento de variáveis locais: É indispensável para o uso de funções recursivas. Simplifica a chamada de funções de qualquer tipo. É perfeitamente desnecessário pois estas podem ser armazenadas na HEAP. Permite a partilha dessas variáveis entre várias funções. 12. Contrariamente a outros processadores CISC, o MIPS: Na chamada a uma função, guarda automaticamente o endereço de retorno na pilha. Permite apenas o acesso à memória através de instruções específicas. Permite que todos os registos sejam de uso geral, incluindo o PC. Permite mover dados entre endereços de memória RAM usando a instrução add. 13. O MIPS apresenta uma arquitectura que permite dividir a execução de instruções em 5 etapas, com a duração de 1 ciclo de relógio cada. A introdução do mecanismo de pipelining permite em teoria executar, do ponto de vista estatístico, 1 instrução por ciclo de relógio. No entanto, verifica-se que em média cada instrução demora mais ciclos. Isto deve-se a (ASSINALE A QUE NÃO É): Conflitos no acesso a recursos (ex. mesmo registo). Dependência ao nível dos dados, i.e. o resultado de uma instrução ser usado como operando da seguinte. Existência de saltos condicionais. Existência de saltos incondicionais.

14. No MIPS pode-se resolver os conflitos no pipeline de várias formas. Das que se seguem, diga qual não serve: Introdução de bolhas. Alteração da ordem de certas instruções. Usando instruções consecutivas que usem mais ou menos ciclos de relógio. Usando delayed branches. 15. Considere a matriz A, definida em C usando uma tabela de inteiros, e armazenada em memória em linhas sucessivas. # 128 256& $ "1 255' O endereço da matriz é passado como parâmetro para a função em Assembly func. Como é que fica a matriz depois da função executar? (tenha em conta o facto de o MIPS usar a convenção little-endian para guardar words nas células de memória). func: lbu $t3, 9($a0) lb $t2, 12($a0) lbu $t0, 0($a0) sll $t1, $t0, 1 sw $t0, 12($a0) sw $t1, 8($a0) sw $t2, 4($a0) sw $t3, 0($a0) jr $ra # 128 256& $ "1 255' # 255 "1& $ 256 128' # 254 254& $ 255 "1 ' " 128 256% A = $ ' # 255 255&