Arquitectura de Computadores 543426 Tarea Nº X

Anuncio
Arquitectura de Computadores 543426
Tarea Nº X
Nombre 1
Nombre 2
Fecha
PROBLEMA 1.
Código en C:
int funcion91 (int n){
if (n > 100)
return n-10;
return funcion91(funcion91(n + 11));
}
void main(void)
{
int x,y;
printf("Ingrese entero positivo: ");
scanf ("%i", &x);
y=funcion91(x);
printf("\n\nEl resultado es: %i",y);
}
Función en Assembly:
FUN91:
li $t0,100
# $t0 = 100
BEGIN:
ble $a0,$t0,IF
addi $v0,$a0,-10
jr $ra
# if (n <= 100) goto IF
# $v0 = n - 10
IF:
sw $fp,-4($sp)
add $fp,$sp,-4
sw $ra,-4($fp)
addi $sp,$fp,-4
# Guarda antiguo $fp
# Crea nuevo $fp
# Guarda $ra
# Crea nuevo $sp
addi $a0,$a0,11
jal BEGIN
# $a0 = n + 11
# M(n+11)
addi $a0,$v0,0
jal BEGIN
# $a0 = $v0
# M(M(n+11))
lw $ra,0($sp)
addi $sp,$fp,4
lw $fp,0($fp)
beq $ra,$t1,QUIT
jr $ra
# Carga antiguo $ra
# Carga antiguo $sp
# Carga antiguo $fp
# if ($ra =! $t1) goto QUIT
LOAD:
--1--
Programa principal en Assembly:
.data
TEXTO:
.asciiz "Ingrese semilla para función-91: "
.text
main:
.globl main
li $v0,4
la $a0,TEXTO
syscall
# Código syscall para print_string
# $a0 = TEXTO:
li $v0,5
syscall
# Código syscall para read_int
addi $a0,$v0,0
addi $t1,$ra,0
li $t0,100
# $a0 = $v0 (semilla ingresada)
# $t1 apunta a retorno final
# $t0 = 100
BEGIN:
ble $a0,$t0,IF
addi $v0,$a0,-10
jr $ra
# if (n <= 100) goto IF
# $v0 = n - 10
IF:
sw $fp,-4($sp)
addi $fp,$sp,-4
sw $ra,-4($fp)
addi $sp,$fp,-4
# Guarda antiguo $fp
# Crea nuevo $fp
# Guarda $ra
# Crea nuevo $sp
addi $a0,$a0,11
jal BEGIN
# $a0 = n + 11
# M(n+11)
addi $a0,$v0,0
jal BEGIN
# $a0 = $v0
# M(M(n+11))
lw $ra,0($sp)
addi $sp,$fp,4
lw $fp,0($fp)
beq $ra,$t1,QUIT
jr $ra
# Carga antiguo $ra
# Carga antiguo $sp
# Carga antiguo $fp
# if ($ra =! $t1) goto QUIT
LOAD:
QUIT:
addi $a0,$v0,0
li $v0,1
syscall
jr $ra
# $a0 = $v0
# Código syscall para print_int
Comentarios:
- La idea general del programa.
- Que aclaren para corrección, que faciliten entender lo escrito.
- Cualquier cosa que crean no se entienda fácil.
Dificultades encontradas:
- Problemas que les costaron dentro del programa.
- Complejidades varias.
Recuerden que este es sólo un ejemplo tipo, pueden hacer sus propias versiones, ojalá lo más claro posible.
Nombre 1
Nombre 2
-- 2 --
Carrera
Descargar