LABORATORIO DE FUNDAMENTOS Y ARQUITECTURA DE COMPUTADORES UNIVERSITAT DE VALÈNCIA 6 de febrero de 2008 Apellidos: Nombre: 1. (4 puntos) Sea el siguiente programa en ensamblador MIPS. lista: filtro1: filtro2: __start: buc: fil2: fbuc: Dirección lista lista +4 lista +8 lista +12 filtro1 filtro1+4 filtro2 filtro2+4 .data .word .space .space 5,-8,-3,4 8 8 .text .globl __start la $s0,lista li $t0,0 la $s3,filtro1 la $s4,filtro2 lw $s2,0($s0) add $s0,$s0,4 add $t0,$t0,1 and $t1,$s2,0x80000000 bnez $t1,fil2 sw $s2,0($s3) add $s3,$s3,4 j fbuc sw $s2,0($s4) add $s4,$s4,4 bne $t0,4,buc li $v0,10 syscall Cont. Reg Contenido $v0 $t0 $t1 $s0 $s1 $s2 $s3 $s4 a) Indicar la evolución de los valores que se van obteniendo en la memoria y en los registros. b) Indica brevemente lo que hace el programa. 2. (4 puntos) Sea un procesador que utiliza palabras de 32 bits y 32 registros de 32 bits cada uno y que ejecuta las siguientes instrucciones en un solo ciclo: 1) bne rs,inm,rt: si rs ≠ inm salta a la dirección de memoria calculada como suma de PC+4 más el valor del registro rt. LABORATORIO DE FUNDAMENTOS Y ARQUITECTURA DE COMPUTADORES UNIVERSITAT DE VALÈNCIA 6 de febrero de 2008 Apellidos: Nombre: 2) addd rs,rt,dir : almacena en el registro rs el resultado de la suma del valor del registro rt más el contenido de la dirección de memoria dir. El formato para las dos instrucciones es el siguiente: código op. 2 bits rs 5 bits rt 5 bits inm / dir 20 bits a) Diseñar el camino de datos para un procesador que ejecute las dos instrucciones anteriores en un solo ciclo (Hacer un esquema por separado para cada instrucción anteriormente). Especificar en cada línea los bits de la instrucción que se consideran. b) Añadir al camino de datos anterior las señales de control necesarias y diseñar la unidad de control. 3. (2 puntos) Sea el siguiente script mostrar: #!/bin/bash if [ $# -eq 0 ] then echo "Error en el script" exit 1 fi case $1 in "-o") ls -a ;; "-t") ls -l ;; *) for i in $* do ls -al $i done ;; esac Indicar y argumentar lo que se obtiene por la salida estándar en cada una de las ejecuciones que vienen a continuación: a) mostrar b) mostrar -o c) mostrar -l d) mostrar k*