CI1068                                   © Roberto André Hexsel, 2019-2020

Da tarefa (i), vale 2,5 pontos da média

Suas respostas devem ser enviadas por e-mail para rhexsel@gmail.com, até as 23:59 de amanhã, com arquivos texto contendo o código assembly. Seu programa será executado e só receberá crédito caso produza resultados corretos. Plágio não será tolerado, podendo acarretar um inquérito disciplinar. O trabalho pode ser efetuado em duplas. Os dois nomes são parte da resposta.
Problema 1: Traduza para assembly do Mico XII o programa Pascal abaixo. Veja a definição da sequência de Fibonacci. A primeira instrução deve ser alocada no endereço 0 da memória de programa, e deve fazer o registrador sp (re) apontar para o endereço 0xffff: addi sp, r0, ffff O vetor de dados deve ser alocado no endereço 0 da memória de dados. A convenção de uso dos registradores está nas Tabelas 9.6 a 9.8 das notas de aula sobre o Mico XII. { no corpo do programa principal } ... i : integer; vet vetor(0..15); ... function fib(num: integer) : integer; aux, f1, f2: integer; begin f1 := 1; f2 := 0; aux := 0; while f2 < num do begin aux := f1 + f2; f1 := f2; f2 := aux; end; fib := aux; end; begin { programa principal } ... i := 0; while (i < 8) do begin vet [i] := fib(i * 2); i := i + 1: end; ... end. Sua resposta deve conter o arquivo texto com o "executável" do Mico e com os comentários (instruções human readable). A última instrução de seu programa assembly deve ser um halt. Na correção, alterarei os números dos registradores para garantir que os mesmos registradores NÃO sejam usados em fib() e no programa principal, com excessão dos registradores do protocolo.
--fim desta tarefa--