Arquitetura de computadores - trabalho do apêndice a
Centro de Ciências e Tecnologia
Bacharelado em Ciências da Computação
___________________________________________________________
ARQUITETURA DE COMPUTADORES
Trabalho: Apêndice A
__________________________________________________
Henrique César Vasconcelos Mendes
(Matrícula: 1090509)
Fortaleza, Março de 2012
A.1 [5] <§A.5> A Seção A.5 descreveu como a memória é dividida na maioria dos sistemas MIPS. Proponha outra maneira de dividir a memória, que cumpra os mesmos objetivos.
Solução:
Outra forma de dividir a memória seria mover a parte de dados estáticos para os últimos endereços e modificar a forma como as pilhas e os dados dinâmicos são armazenados na memória. Dividiríamos a parte da memória que sobrar a estes dois últimos em duas partes e colocaríamos o segmento de pilha e acima dele os dados dinâmicos.
A vantagem desse modelo seria que o segmento de dados estaria bem definido em um intervalo que seria conhecido pelo sistema. A desvantagem em relação ao modelo da seção A.5 é que neste a memória de dados dinâmicos e de segmento de pilha é compartilhada, logo o segmento de dados dinâmicos poderá ser maior no modelo MIPS da seção A.5, aproveitando o máximo da memória.
A.2 [20] <§A.6> Reescreva o código para fact utilizando menos instruções.
Solução: main: li $v0,4 # solicita um numero ao usuário la $a0,frase1 syscall li $v0,5 #recebe o valor syscall move $t0,$v0 #move o valor lido para o reg. $t0 li $t1,1 #$t1= 1 li $t2,-1 #$t2= -1
chamada1: mul $t1,$t0,$t1 #$t1= $t0*$t1 add $t0,$t2,$t0 #$t0=$t2+$t0 usar como decremento bgtz $t0, chamada11 #Se $t0>0 chamada1() move $a0,$t1 #move o valor do fatorial para $a0 li $v0,1 #chama a impressão de um inteiro syscall #imprime li $v0,10 #chama o encerramento do programa syscall #encerra .data frase1: .asciiz "Digite um