UniversidadeFederaldoABC ArquiteturadeComputadores...

2
Universidade Federal do ABC Arquitetura de Computadores 2020.Q1 – Teste 2 Prof. Emílio Francesquini 03 de Março de 2020 Nome: RA: A leitura completa das instruções faz parte da sua avaliação! O teste tem duração de 20 minutos Não esqueça de preencher a caneta seu nome e RA As respostas podem ser deixadas a lápis. Em caso de fraude, TODOS os envolvidos: Receberão conceito final F (reprovado) na disciplina Serão denunciados à Comissão de Transgressões Disciplinares Discentes da Graduação e à Comissão de Ética da UFABC cuja punição pode resultar em advertência, suspensão ou desligamento, de acordo com os artigos 78-82 do Regimento Geral da UFABC e do artigo 25 do Código de Ética da UFABC. Questão 1 Reescreva a função em C dada abaixo em MIPS Assembly. No verso da prova você encontra o cartão de referências MIPS. Dica: como a função é folha, use e abuse dos registradores temporários para evitar ter que salvar os registradores salvos na pilha. int fibonacci (int n) { int a =0,b =1, i, tmp; if (n == 0) return 0; for (i =2;i <= n; i++){ tmp = a + b; a = b; b = tmp; } return b; } 1

Transcript of UniversidadeFederaldoABC ArquiteturadeComputadores...

Page 1: UniversidadeFederaldoABC ArquiteturadeComputadores 2020.Q1–Teste2professor.ufabc.edu.br/~e.francesquini/2020.q1.ac/files/... · 2020-04-28 · Title-8mm Universidade Federal do

Universidade Federal do ABCArquitetura de Computadores

2020.Q1 – Teste 2

Prof. Emílio Francesquini03 de Março de 2020

Nome: RA:

• A leitura completa das instruções faz parte da sua avaliação!• O teste tem duração de 20 minutos• Não esqueça de preencher a caneta seu nome e RA• As respostas podem ser deixadas a lápis.• Em caso de fraude, TODOS os envolvidos:

– Receberão conceito final F (reprovado) na disciplina– Serão denunciados à Comissão de Transgressões Disciplinares Discentes da Graduação e à Comissão de Ética da

UFABC cuja punição pode resultar em advertência, suspensão ou desligamento, de acordo com os artigos 78-82do Regimento Geral da UFABC e do artigo 25 do Código de Ética da UFABC.

Questão 1 Reescreva a função em C dada abaixo em MIPS Assembly. No verso da prova você encontrao cartão de referências MIPS. Dica: como a função é folha, use e abuse dos registradores temporáriospara evitar ter que salvar os registradores salvos na pilha.

int fibonacci (int n) {int a = 0, b = 1, i, tmp;if (n == 0) return 0;for (i = 2; i <= n; i++) {tmp = a + b;a = b;b = tmp;

}return b;

}

1

Page 2: UniversidadeFederaldoABC ArquiteturadeComputadores 2020.Q1–Teste2professor.ufabc.edu.br/~e.francesquini/2020.q1.ac/files/... · 2020-04-28 · Title-8mm Universidade Federal do

Exemplo: código MIPS Assembly para a função fatorial

int fact (int n) {if (n == 0) return 1;int i, res = n;for (i = n - 1; i >= 1; i--)res = res * i;

return res;}

# Calcula o fatorial de um número n.# Recebe n em $a0 e devolve n! em $v0.fact:

beq $a0, $zero, fact_zero # Trata caso especial 0add $t1, $zero, $a0 # res = naddi $t0, $a0, -1 # i = n - 1

fact_loop:slti $t2, $t0, 1 # se i < 1 então t2 = 1bne $t2, $zero, fact_ret # então terminoumul $t1, $t1, $t0 # res = res * iaddi $t0, $t0, -1 # i--j fact_loop

fact_zero:addi $v0, $zero, 1 # 0! = 1jr $ra # retorna

fact_ret:add $v0, $zero, $t1 # preenche resultadojr $ra # retorna