Documente Academic
Documente Profesional
Documente Cultură
Los siguientes problemas abordan la traducción de C a MIPS. Suponga que las variables g, h, i
y j son conocidas y son enteros de 32 bits, tal como se declaran en C.
a f = g + h + i + j;
b f = g + (h+5);
2.1.1 ¿Cuál es el código MIPS para las instrucciones C de la tabla? [Utilice el número mínimo
posible de instrucciones ensamblador MIPS, aún no emplee registros]
a add f, g, h
b addi f, f, 1
add f, g, h
2.1.4 ¿Cuál es la sentencia C equivalente para las instrucciones MIPS de la tabla anterior?
Ejercicio 2.2
Los siguientes problemas abordan la traducción de C a MIPS, suponga que las variables, g, h, i
y j son conocidas y son enteros de 32 bits, tal como se declaran en C.
a f = f + f + i;
b f = g + (j + 2);
2.2.1 ¿Cuál es el código MIPS para las instrucciones C de la tabla? [Utilice el número mínimo
posible de instrucciones ensamblador MIPS, aún no emplee registros]
a add f, f, h
b sub f, $0, f
addi f, f, 1
2.2.4 ¿Cuál es la sentencia C equivalente para las instrucciones MIPS de la tabla anterior?
Ejercicio 2.3
Los siguientes problemas abordan la traducción de C a MIPS, suponga que las variables, g, h, i
y j son conocidas y son enteros de 32 bits, tal como se declaran en C.
a f = f + g + h + i +j + 2;
b f = g - (f + 5);
2.3.1 ¿Cuál es el código MIPS para las instrucciones C de la tabla? [Utilice el número mínimo
posible de instrucciones ensamblador MIPS, aún no emplee registros]
a add f, -g, h
b addi h, f, 1
sub f, g, h
2.3.4 ¿Cuál es la sentencia C equivalente para las instrucciones MIPS de la tabla anterior?
Ejercicio 2.4
Los siguientes problemas abordan la traducción de C a MIPS, suponga que las variables f, g, h,
i y j se han asignado a los registros $s0, $s1, $s2, $s3 y $s4, respectivamente.
Suponga que las direcciones base de los vectores A y B están en los registros $s6 y $s7,
respectivamente.
a f = g + h + B[4];
b f = g – A[B[4]];
2.4.1 ¿Cuál es el código MIPS para las instrucciones C de la tabla? [Utilice el número mínimo
posible de instrucciones ensamblador MIPS]
Los siguientes problemas abordan la traducción de MIPS a C, suponga que las variables f, g, h,
i y j se han asignado a los registros $s0, $s1, $s2, $s3 y $s4, respectivamente.
Suponga que las direcciones base de los vectores A y B están en los registros $s6 y $s7,
respectivamente.
b lw $s0, 4($s6)
2.4.5 Reescriba el código ensamblador para minimizar (si es posible) el número de instrucciones
MIPS necesarias para llevar a cabo la misma operación de la tabla.
2.4.6 ¿Cuántos registros diferentes es necesario utilizar tal como está escrito el código anterior?
Con el nuevo código, ¿Cuál es el número mínimo de registros necesario?
Ejercicio 2.5
a Dirección valor
12 1
8 6
4 4
0 2
b Dirección valor
16 1
12 2
8 3
4 4
0 5
2.5.1 Para las posiciones de memoria mostradas en la tabla, escriba las instrucciones en C que
ordene los valores de menor a mayor, situando el menor valor en la posición de memoria más
pequeña de las mostradas. Suponer que los datos se han representado en un vector de enteros de
C de nombre Array, que el procesador es direccionable por bytes y que una palabra está
formada por 4 bytes.
2.5.2 Para las posiciones de memoria mostradas en la tabla, escriba el código MIPS que ordene los
valores de menor a mayor, situando el menor valor en la posición de memoria más pequeña de las
mostradas. Utilice el número mínimo de instrucciones MIPS. Suponga que la dirección base de la
tabla está en el registro $s6.
a 0x12345678
b 0xbeadf00d
2.5.4 Convierta los números hexadecimales de la tabla a decimales.
2.5.5 Indique cómo se almacenarían los datos de la tabla en un procesador Little-endian o en uno
big-endian. Suponga que los datos se almacenan a partir de la dirección 0.
Ejercicio 2.6
Los siguientes problemas abordan la traducción de C a MIPS, suponga que las variables f, g, h,
i y j se han asignado a los registros $s0, $s1, $s2, $s3 y $s4, respectivamente.
Suponga que las direcciones base de los vectores A y B están en los registros $s6 y $s7,
respectivamente.
a f = g + h + B[4];
b f = g – A[B[4]];
2.6.1 ¿Cuál es el código MIPS para las instrucciones C de la tabla? [Utilice el número mínimo
posible de instrucciones ensamblador MIPS]
Los siguientes problemas abordan la traducción de MIPS a C, suponga que las variables f, g, h,
i y j se han asignado a los registros $s0, $s1, $s2, $s3 y $s4, respectivamente.
Suponga que las direcciones base de los vectores A y B están en los registros $s6 y $s7,
respectivamente.
2.6.5 Suponga que los valores contenidos en los registros $s0, $s1, $s2 y $s3 son,
respectivamente, 10, 20, 30 y 40, que el registro $s6 tiene el valor 256 y que en la memoria
están los siguientes valores:
Dirección Valor
256 100
260 200
264 300
2.6.6 Indique el valor de los campos op, rs y rt para cada instrucción MIPS. Indique el valor
del campo inmediato para las instrucciones de tipo I, y del campo rd para las instrucciones de
tipo R.
Ejercicio 2.7
En los siguientes ejercicios se estudia la conversión de números binarios con y sin signo a números
decimales.
2.7.1 Suponiendo que los números de la tabla son enteros en complemento a 2, ¿Qué números
decimales representan?
2.7.2 Suponiendo que los números de la tabla son enteros sin signo, ¿Qué números decimales
representan?
En los siguientes ejercicios se estudia la conversión de números decimales a binarios con y sin
signo.
a 2147483647diez
b 1000diez
2.7.6 Convierta los negativos de los números de la tabla en una representación hexadecimal en
complemento a 2.