Arquitetura de Sistemas Digitais (FTL066) Instruções: Linguagem do Computador Segunda Lista de Exercícios



Documentos relacionados
Arquitetura de Computadores. Linguagem de Máquina

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

MODOS DE ENDEREÇAMENTO

MIPS. Prof. Carlos Bazilio

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

Sistemas de Computação. Instruções de Linguagem de Máquina

Para os problemas seguintes considere os 5 andares de pipelining do MIPS:

Arquitetura de Computadores

Faculdade de Computação

Representando Instruções no Computador

Organização e Arquitetura de Computadores I

Computadores de Programação (MAB353)

Descrição e análise da implementação em Assembly MIPS da função itoa

Organização e Arquitetura de Computadores I

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

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

Computador: Hardware + Software

Aula 14: Instruções e Seus Tipos

SSC0611 Arquitetura de Computadores

Conjunto de. Instrução MIPS. Parte II. Instruções MIPS. Instruções MIPS. Instruções MIPS :: Instruções lógicas. :: Instruções lógicas

Arquitectura de Computadores

Nível da Arquitetura do Conjunto das Instruções

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

Capítulo 3 Aula 8. Representação Numérica. Aritmética Computacional Representação Numérica

Organização e Arquitetura de computadores

Capítulo 7 Nível da Linguagem Assembly

Faculdade de Computação

SSC0114 Arquitetura de Computadores

Organização e Arquitetura de Computadores I

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

Infraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento

Faculdade de Computação

Prova P4/PS Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans lui+ori syscall 1. .text 2. main: $s0, string 3.

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.

Conjunto de Instruções. Conjunto de Instruções

Predição de Desvios e Processadores Superescalares Especulativos

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

MIPS ISA (Instruction Set Architecture)

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

Anotações da 2a Edição

3. INSTRUÇÕES. Instrução é uma palavra da linguagem de máquina. Instruction Set do MIPS ( usado pela NEC, Nintendo, Silicon Graphics e Sony.

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Algoritmos e Programação

Organização de Computadores 1

Conjunto de Instruções e Arquitectura p.1

Programação científica C++

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

Paralelismo a Nível de Instrução

Conjunto de Instruções

Infraestrutura de Hardware. Instruindo um Computador

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

Computadores de Programação (MAB353)

9 Comandos condicionais

Sistemas Microcontrolados

Faculdade de Computação

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

String em C++ Verificando o tamanho da string

Arquitetura de Computadores. Assembly Miscelâneas. Mário O. de Menezes.

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Estruturas de Repetição

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Nível Máquina Formatos de Instruções

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

O COMPUTADOR. Introdução à Computação

Arquitetura de Computadores I

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

Linguagens de Programação

Circuitos Digitais 144L

Convertendo Algoritmos para a Linguagem C

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

Módulo 10. Medição do Desempenho

Lista de Revisão para a Primeira Avaliação

Cap - 3: Linguagem de Máquina - MIPS

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

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Recursividade. Aula 9

02. [Manzano, 1996] Escreva um programa em C que apresente os quadrados dos números inteiros de 15 a 200.

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4

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

Conceitos básicos da linguagem C

LINEAR EQUIPAMENTOS RUA SÃO JORGE, TELEFONE : SÃO CAETANO DO SUL - SP - CEP:

AS FUNÇÕES DO EXCEL NOME(P1;P2;P3)

Conjunto de instruções e modos de. aula 4. Profa. Débora Matos

Informática básica Telecentro/Infocentro Acessa-SP

Conjunto de Instruções MIPS

Unidade 5: Sistemas de Representação

Plano de Aula. if(condição) { bloco de comandos; } else { bloco de comandos2; }

Revisando a Aritmética

compreender a importância de cada estrutura de controle disponível na Linguagem C;

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

LINGUAGEM C. Estrutura básica de um programa

Transcrição:

Arquitetura de Sistemas Digitais (FTL066) Instruções: Linguagem do Computador Segunda Lista de Exercícios 1) Explore conversões de números a partir de números binárias com sinal e sem sinal para decimal: a. 0010 0100 1001 0010 0100 1001 0010 01002 b. 1101 1111 1011 1110 0100 0000 0000 00002 a) Qual é a representação dos números binários acima na base 10, assumindo um inteiro em complemento de 2? b) Qual é a representação dos números binários acima na base 10, assumindo um inteiro sem sinal? c) Qual é a representação dos números binários acima em hexadecimal? 2) Qual é o valor decimal deste número de complemento de 2 de 64 bits? a. 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 10002 3) Estenda os seguintes números inteiros sem sinal para 16 bits: a. 1000 00012 b. 1111 11112 4) Qual instrução MIPS estes números representam? Op Rs Rt Rd shamt funct 0 8 9 10 0 34 5) Mostre o binário e o hexadecimal para representar as seguintes instruções: a. addi $t0, $t0, 0 b. sw $t1, 32($t2) 6) A tabela abaixo contém os valores de vários campos das instruções MIPS a. op=0, rs=8, rt=9, rd=10, shamt=0, funct=34 b. op=0x23, rs=8, rt=9, const=0x4 a) Qual tipo (Formato-I e Formato-R) de instrução estes valores representam? b) Quais são as instruções em assembly do MIPS descritas acima? c) Qual é a representação binária das instruções acima? 7) A tabela abaixo contém os bits que representam o opcode de uma instrução: 1

a. 0x01084020 b. 0x02538822 a) Qual número binário representa o número hexadecimal acima? b) Qual número decimal representa o número hexadecimal acima? c) Qual instrução o número hexadecimal acima representa? 8) A tabela abaixo contém várias operações lógicas do MIPS. a. sll $t2, $t0, 1 andi $t2, $t2, -1 b. andi $t2, $t1, 0x00F0 srl $t2, 2 a) Assuma que $t0 = 0x0000A5A5 e $t1 = 0x00005A5A. Qual é o valor de $t2 depois das duas instruções na tabela? b) Assuma que $t0 = 0xA5A50000 e $t1 = 0xA5A50000. Qual é o valor de $t2 depois das duas instruções na tabela? 9) Suponha que os registradores $t0 e $t1 contenham os seguintes valores, resp.: 0010 0100 1001 0010 0100 1001 0010 01002 0011 1111 1111 1000 0000 0000 0000 00002 Qual é o valor de $t2 depois de executar as seguintes instruções: slt $t2, $t0, $t1 beq $t2, $zero, ELSE j DONE ELSE: addi $t2, $zero, 2 10) Para os problemas abaixo, considere os seguintes fragmentos de código: a. LOOP: addi $s2, $s2, 2 bne $t1, $0, LOOP b. LOOP: slt $t2, $0, $t1 beq $t2, $0, DONE addi $s2, $s2, 2 j LOOP a) Para os laços escritos no assembly do MIPS acima, assuma que o registrador $t1 é inicializado para o valor 10. Qual é o valor no registrador $s2 assumindo que $s2 é inicializado para zero? b) Para os laços acima, escreva a rotina do código em C equivalente. Assuma que os registradores $s1, $s2, $t1 e $t2 são inteiros A, B, i e temp, resp. c) Para os laços escritos no assembly do MIPS acima, assuma que o registrador $t1 é inicializado com o valor N. Quantas instruções MIPS serão executadas? 11) Para os problemas abaixo, considere os seguintes fragmentos de código: a. addi $t1, $0, 50 LOOP: lw $s1, 0($s0) 2

lw $s1, 4($s0) addi $s0, $s0, 8 bne $t1, $0, LOOP b. addi $t1, $0, $0 LOOP: lw $s1, 0($s0) addi $s0, $s0, 4 addi $t1, $t1, 1 slti $t2, $t1, 100 bne $t2, $s0, LOOP a) Qual é o número total de instruções MIPS que serão executadas? b) Traduza os laços acima em C. Assuma que o inteiro i no nível do C está no registrador $t1, $s2 possui o inteiro result a nível de C, e $s0 possui o endereço base do inteiro MemArray. c) Reescreva o laço para reduzir o número de instruções MIPS executadas. 12) Considere que as variáveis f e g são inteiros de 32 bits: f = g f; f = g + ( f 5); Para o código C acima, determine: a) As instruções assembly do MIPS (use um número mínimo de instruções) b) O código assembly do MIPS correspondente c) Se as variáveis f e g possuem valores 1 e 2, qual é o valor final de f? 13) Responda as seguintes perguntas para este código C: a. for(i=0; i<a; i++) a += b; b. for(i=0; i<a; i++) for(j=0; j<b; j++) D[4*j] = i + j; a) Qual é grafo de fluxo de controle? b) Traduza o código C para o códgo em assembly do MIPS. Use um número mínimo de instruções. Assuma que os valores das variáveis a, b, i e j estão nos registradores $s0, $s1, $t0 e $t1 resp. Assuma também que o registrador $s2 possui o endereço base do array D. c) Se as variáveis a e b forem inicializadas para 10 e 1 e todos os elementos de D foram inicializados para 0, quantas instruções do MIPS serão executadas para completar o laço? 14) Qual é o código MIPS para o procedimento verifica_algo? verifica_algo(int n) int x,y; if(n >0) for(x=0; x< n; x++) y++; verifica_algo(n-1); 15) Qual é o código MIPS para o procedimento fib? 3

int fib(int n) if (n==0) return 0; else if (n == 1) return 1; else return fib(n-1) + fib(n-2); 16) Assuma que os segmentos de dados estáticos e a pilha estão vazios e que a pilha e os ponteiros globais iniciam no endereço 0x7fff fffc e 0x1000 8000, respectivamente. Assuma as convenções de chamada como especificado em sala de aula (veja slide 62 do Capítulo 2) e que as funções de entrada são passadas usando os registradores $a0-$a3 e retornados no registrador $r0. Assuma que as funções folha podem somente usar registradores salvos. a. int my_global = 100; main() int x = 10; int y = 20; int z; z = my_function(x, y) int my_function(int x, int y) return x y + my_global; b. int my_global = 100; main() int z; my_global += 1; z = leaf_function(my_global); int leaf_function(int x) return x + 1; a) Escreva o código em assembly do MIPS para o código da tabela acima. b) Mostre o conteúdo dos segmentos de dados estático e da pilha depois de cada chamada de função. c) Se a função folha puder usar os registradores temporários ($t0, $t1, etc), qual seria o código MIPS para o código da tabela acima? 17) Qual é a representação em C da string Arquitetura de Sistemas Digitais? 18) A seguinte tabela mostra os valores de caractere ASCII em hexadecimal: a. 41 44 44 b. 4D 49 50 53 Traduz o valores do ASCII hexadecimal para texto. 4

19) Qual é o intervalo de endereços para desvios condicionais no MIPS (K=1024) a) Endereços entre 0 e 64K-1. b) Endereços entre 0 e 256K-1. c) Endereços até aprox. 32K antes do desvio e aprox. 32K depois. d) Endereços até aprox. 128K antes do desvio e aprox. 128K depois. 20) Qual é o intervalo de endereços para jump e jump-and-link no MIPS (M=1024K) a) Endereços entre 0 e 64M-1. b) Endereços entre 0 e 256M-1. c) Endereços até aprox. 32M antes do desvio e aprox. 32M depois. d) Endereços até aprox. 128M antes do desvio e aprox. 128M depois. e) Qualquer lugar dentro de um bloco de 64M de endereços onde o PC fornece os 6 bits mais significativos. f) Qualquer lugar dentro de um bloco de 256M de endereços onde o PC fornece os 4 bits mais significativos. 21) Qual é a instrução da linguagem assembly do MIPS correspondente a instrução de máquina com o valor 0000 0000hex? 22) Para os seguintes problemas, considere: a. lui $t0, 0x1234 addi $t0, $t0, 0x5678 b. lui $t0, 0x1234 andi $t0, $t0, 0x5678 Qual é o valor do registrador $t0 depois de executar a sequência de código acima? 23) A tabela abaixo mostra os detalhes de nível de vinculação de dois diferentes procedimentos: Proc. A: tamanho de texto 0x140 e de dado 0x40; Proc. B: tamanho de texto 0x300 e de dado 0x50. Vincule os dois arquivos de objeto acima. Mostre os endereços atualizados das primeiras instruções do arquivo executável completo. Data de entrega: 24 de junho de 2014 (terça-feira). Após esta data será descontado 2 pontos por dia de atraso. A lista de exercícios deve ser resolvida e entregue individualmente. 10/06/2013 5