Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Transparencias PCSPIM 4, Apuntes de Ingeniería Telemática

Asignatura: Fundamentos de Computadores, Profesor: Antonio M. Guirao Puerta, Carrera: Ingeniería Telemática, Universidad: UPCT

Tipo: Apuntes

Antes del 2010

Subido el 27/02/2009

pitiii
pitiii 🇪🇸

4.3

(12)

14 documentos

1 / 12

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Problema de la llamada a subrutinas anidadas.
Problema del uso compartido de parámetros en las subrutinas.
Ejemplo.
rutina_a:
. . . . . .
li $a1,2 li $a1,1
jal rutina_a sw $a1,$t3
addu $s0,$a1,3 . . .
. . . jr $31
Obtendríamos como resultado en $s0, un 4 en lugar de que lo que esperábamos (5)
Mapa de memoria del MIPS
pf3
pf4
pf5
pf8
pf9
pfa

Vista previa parcial del texto

¡Descarga Transparencias PCSPIM 4 y más Apuntes en PDF de Ingeniería Telemática solo en Docsity!

Problema de la llamada a subrutinas anidadas.

Problema del uso compartido de parámetros en las subrutinas.

Ejemplo.

rutina_a:

li $a1,2 li $a1,

jal rutina_a sw $a1,$t

addu $s0,$a1,...

... jr $

Obtendríamos como resultado en $s0, un 4 en lugar de que lo que esperábamos (5)

Mapa de memoria del MIPS

Ciclo de apilar Reserva de espacio en pila + salvar los datos en pila.

F 0 B 7Esquema general del ciclo de apilar.

subu $sp,$sp,n4* # Reservar espacio en la pila sw $rn-1,(n-1)4($sp)* # Salvar datos en la pila sw $rn-2,(n-2)4($sp)* # ‘n’ es el número de palabras

... # que se desea salvar sw $r0,0($sp)

F 0 B 7Ejemplo: (abrir PCSpim y observar lo que hay cargado en $sp)

li $a0,0xee li $a1,0xfff

subu $sp,$sp,8 # Reserva de 2 palabras en pila. sw $a0,4($sp) # Operación Push con el dato 0xee. sw $a1,0($sp) # Operación Push con el dato 0xfff.

Solución a subrutinas anidadas haciendo uso de la pila

F 0 B 7Ejemplo.

Solución al uso compartido de parámetros en subrutinas. (A)

F 0 B 7 Convenio guardar invocador.

Antes de que se realice la llamada a la subrutina, el programa principal almacena su contexto en la pila

(principalmente las variables criticas $a0, $a1, $t2) e inmediatamente despues de que se produzca el retorno

de la subrutina, lo restaura.

F 0 B 7 Convenio guardar invocado.

En este caso, es la subrutina la que almacena en la pila el contexto (principalmente las variables criticas $a0,

$a1, $t2). La restauración se produce justo antes de que se devuelva el control al programa principal.

Solución al uso compartido de parámetros en subrutinas. (B) Ejemplo (guardar invocador)

funciones recursivas (A) Funciones que se invocan a si mismas

F 0 B 7Ejemplo.

Calculo del factorial de un número.

F 0 B 7Factorial

F 0 B 7Algoritmo (Pseudocódigo)

F 0 B 7Flujograma

F 0 B 7Problema.

El mismo que el de la llamada a subrutinas anidadas ( es decir se pierde la dirección de retorno de las

subrutinas almacenadas en el registro $31)

F 0 B 7Solución.

Usar la pila.

funciones recursivas (B) Funciones que se invocan a si mismas

Ejemplo (pag. 38 manual)

.data 0x cad1: .asciiz "Cálculo del factorial de: " cad2: .asciiz "El factorial calculado es: " .text .globl __start

__start: li $2, 4 # código de la impresión de cadena la $4, cad1 # dirección primera cadena syscall # impresión de cadena li $2, 5 # código lectura de entero syscall # lectura de entero

add $4, $2, 0 # argumento de la función factorial

jal fact

add $8, $2, 0 # guardamos el resultado en $

funciones recursivas (C) Funciones que se invocan a s

Factorial(3)

.data 0x cad1: .asciiz "Cálculo del factorial de: " cad2: .asciiz "El factorial calculado es: " .text .globl __start

__start: li $2, 4 la $4, cad syscall li $2, 5 syscall

add $4, $2, 0

jal fact

add $8, $2, 0

li $2, 4 la $4, cad syscall li $2, 1 add $4, $8, $ syscall

addi $2, $0, 10 syscall

Área de Arquitectura y Tecnología de Computadoras Prácticas de Fundamentos de Computadores. Curso 2001/

Área de Arquitectura y Tecnología de Computadoras Prácticas de Fundamentos de Computadores. Curso 2001/