Sunteți pe pagina 1din 5

Ejercicio 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 = 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]

2.1.2 ¿Cuántas instrucciones ensamblador de MIPS resultan de la traducción de las instrucciones


c?

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?

2.1.5 Si las variables f, g, h tienen valores 1, 2, 3 respectivamente, ¿Cuál es el valor final de f?

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]

2.2.2 ¿Cuántas instrucciones ensamblador de MIPS resultan de la traducción de las instrucciones


c?

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?

2.2.5 Si las variables f, g, h e i tienen valores 1, 2, 3 y 4 respectivamente, ¿Cuál es el valor final de


f?

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]

2.3.2 ¿Cuántas instrucciones ensamblador de MIPS resultan de la traducción de las instrucciones


c?

2.3.3 Si las variables f, g, h, i y j tienen valores 1, 2, 3, 4 y 5 respectivamente, ¿Cuál es el valor


final de f?

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]

2.4.2 ¿Cuántas instrucciones ensamblador de MIPS resultan de la traducción de las instrucciones


c?

2.4.3 ¿Cuántos registros diferentes es necesario utilizar?

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.

a add $s0, $s0, $s1


add $s0, $s0, $s2
add $s0, $s0, $s3
add $s0, $s0, $s4

b lw $s0, 4($s6)

2.4.4 ¿Cuál es la sentencia C equivalente para las instrucciones MIPS de la Tabla?

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

En los siguientes problemas se estudian las operaciones de memoria en el contexto de un


procesador MIPS. Los valores de un vector almacenado en memoria se muestran en la tabla.

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.

2.5.3 ¿Cuantas instrucciones ensamblador de MIPS son necesarias para el ordenamiento?

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]

2.6.2 ¿Cuántas instrucciones ensamblador de MIPS resultan de la traducción de las instrucciones


c?

2.6.3 ¿Cuántos registros diferentes es necesario utilizar?

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.

a add $s0, $s0, $s1


add $s0, $s3, $s2
add $s0, $s0, $s3

b addi $s6, $s6, -20


add $s6, $s6, $s1
lw $s0, 8($s6)

2.6.4 ¿Cuál es la sentencia C equivalente para las instrucciones MIPS de la Tabla?

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

Determine el valor en $s0 al terminar el código ensamblador.

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.

a 1010 1101 0001 0000 0000 0000 0000 0010dos


b 1111 1111 1111 1111 1011 0011 0101 0011dos

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?

2.7.3 ¿Qué números hexadecimales 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.4 Convierta los números de la tabla en una representación binaria en complemento a 2.

2.7.5 Convierta los números de la tabla en una representación hexadecimal en complemento a 2.

2.7.6 Convierta los negativos de los números de la tabla en una representación hexadecimal en
complemento a 2.

S-ar putea să vă placă și