ETC1. Ejercicios Subrutinas 1.- En base al siguiente programa en ensamblador: .data 0x10000200 .word 3, 14 C: .word 4 .text 0x400000 .globl __start __start: la $6, C lw $3, -4($6) lw $4, -8($6) jal xx sw $2, 0($6) .end xx: .text 0x400400 div $3, $4 mflo $2 srl $2, $2, 1 jr $31 Indíquese el contenido de la memoria después de ejecutar el programa. Dirección 0x1000 0200 0x1000 0204 0x1000 0208 0x1000 020C 2.- A) 3 14 4 B) 3 14 2 C) 3 14 0 2 Contenido D) E) 3 Ninguna de las anteriores 14 0 4 En base al siguiente programa en ensamblador: C: .data 0x10000200 .word 0x2,0x20 .space 4 .text 0x400000 __start: la $6, C lw $3, -4($6) lw $4, -8($6) jal xx sll $2,$2,2 sw $2,-4($6) .end xx: .text 0x400400 div $3,$4 mflo $2 srl $2,$2,1 jr $31 Indíquese el contenido de la memoria después de ejecutar el programa. Dirección 0x1000 0200 0x1000 0204 0x1000 0208 0x1000 020C A) 2 32 4 B) 2 64 0 Contenido D) E) 2 Ninguna de las anteriores 32 64 C) 2 32 0 En base al siguiente programa escrito en lenguaje ensamblador, conteste las siguientes dos preguntas: .data 0x10000000 resultado: .word 0 .text 0x400000 __start: li $4,0 li $5,1 li $6,2 li $7,3 jal F la $6,resultado sw $2,0($6) .end F: .text 0x400400 addi $29,$29,-16 sw $6,0($29) sw $5,4($29) sw $4,8($29) sw $31,12($29) bgt $6,$7,fin add $2,$4,$5 addi $6,$6,1 add $4,$0,$5 add $5,$0,$2 jal F fin: lw $6,0($29) lw $5,4($29) lw $4,8($29) lw $31,12($29) addi $29,$29,16 jr 31 3.- Indíquese cuántas veces se invoca a la subrutina F durante la ejecución del programa: A) B) C) D) E) Una sola vez por el programa principal. Dos veces, una por el programa principal y otra por la misma subrutina. Tres veces, una por el programa principal y dos por la misma subrutina. La subrutina se mete en un bucle infinito. Ninguna de las anteriores. 4.- Los contenidos de los registros $4, $5, $6, $7 y $2 después de ejecutar el programa anterior son: a) Registro $4 $5 $6 $7 $2 Contenido 1 1 0x10000000 3 2 b) Registro $4 $5 $6 $7 $2 Contenido 0 1 0x10000000 3 3 c) Registro $4 $5 $6 $7 $2 Contenido 1 1 0x10000000 3 3 d) Registro $4 $5 $6 $7 $2 Contenido 0 1 0x10000000 3 2 e) Ninguna de las anteriores. 5.- En el siguiente código en ensamblador del MIPS: D: .data 0x10000000 .word 3 .text 0x400000 __start: la $5, D addi $29, $29, -4 sw $5, 0($29) jal subrutina j fin subrutina: lw $4, 0($29) lw $5, 0($4) addi $5, $5, $5 sw $5, 0($4) addi $29, $29, 4 jr $31 fin: .end El paso de parámetros se realiza: A) B) C) D) E) 6.- Por pila y por valor. Por registro y por valor. Por pila y por referencia. Por registro y por referencia. Ninguna de las anteriores. Se desea implementar un programa principal que llame a una subrutina A y ésta a una subrutina B. Para esto el programa principal ejecuta jal A y la subrutina A ejecuta jal B y como última instrucción jr $31. Además de esto para una correcta ejecución se debería: A) El programa principal debe guardar la dirección de retorno de A en la pila, y la subrutina A la dirección de retorno de B. B) El programa principal debe guardar la dirección de retorno de A y la de B en la pila. C) La subrutina A debe guardar la dirección de retorno a la subrutina B en la pila. D) La subrutina A debe guardar la dirección de retorno al programa principal en la pila. E) Ninguna de las anteriores.