Está en la página 1de 2

POLITECNICO GRANCOLOMBIANO

FACULTAD DE INGENIERIA Y CIENCIAS


BASICAS
ARQUITECTURA DEL COMPUTADOR
TALLER 1: MIPS – CONDICIONALES Y CICLOS

FECHAS DE ENTREGA: 12 DE SEPTIEMBRE


TRABAJO EN GRUPOS DE 3 PERSONAS

1. Para los siguientes fragmentos de código, realice el código respectivo en ensamblador

int a=4 int a=4;


int b=5;
for(int i=0; i<a; i++) {
D[i] = a+i; for(int i=0; i<a; i++) {
} for(j=0; j<b; j++) {
D[i+j] = i+j+a+b;
}
}
Asuma que la variable a está en $s0 Asuma que la variable a está en $s0
y la b en $s1, realice el siguiente y la b en $s1, realice el siguiente
código. código.

if(a < 5){ switch(a)


b = 0; {
} case 0: b = 0; break;
else if(a < 0){ case 1: b = 10; break;
b = 10; default: b = 15; break;
} }
else{
b = 15;
}

2. Convierta los siguientes códigos ensamblador MIPS a código C:

addi $t1, $0, 50 addi $t1, $0, 50


LOOP: lw $s1, 0($s0) LOOP: lw $s1, 0($s0)
add $s2, $s2, $s1 add $s2, $s2, $s1
lw $s1, 4($s0) lw $s1, 4($s0)
add $s2, $s2, $s1 add $s2, $s2, $s1
addi $s0, $s0, 8 addi $s0, $s0, 8
subi $t1, $t1, 1 subi $t1, $t1, 1
bne $t1, $0, LOOP bne $t1, $0, LOOP
addi $t0, $s6, 4 add f, g, h
add $t1, $s6, $0 add f, i, f
sw $t1, 0($t0)
lw $t0, 0($t0)
add $s0, $t1, $t0

1
POLITECNICO GRANCOLOMBIANO
FACULTAD DE INGENIERIA Y CIENCIAS
BASICAS
ARQUITECTURA DEL COMPUTADOR
TALLER 1: MIPS – CONDICIONALES Y CICLOS

3.1. Cuál es el código en C de las siguientes instrucciones MIPS. Asuma que las variables
f, g, h, i y j están en los registros $s0, $s1, $s2, $s3 y $s4. Asuma que la dirección del
registro A y B están en $s6 y $s7.

sll $t0, $s0, 2 # $t0 = f * 4


add $t0, $s6, $t0 # $t0 = &A[f]
sll $t1, $s1, 2 # $t1 = g * 4
add $t1, $s7, $t1 # $t1 = &B[g]
lw $s0, 0($t0) # f = A[f]
addi $t2, $t0, 4
lw $t0, 0($t2)
add $t0, $t0, $s0
sw $t0, 0($t1)

3.2. ¿Es posible reducir el código anterior con menos instrucciones MIPS?

4. Convierta las siguientes instrucciones a código hexadecimal:


• add $t0, $s6, $t7
• slt $t0, $t1, $t2
• lw $s1, 0($s0)
• addi $t1, $0, $0
• not $t1, $t2
• sw $t4, 12($s1)

5. Convierta las siguientes funciones a código ensamblador MIPS:

int addit( int a, int b ){ int positive( int a, int b ) {


return a+b; if ( addit(a, b) > 0 )
} return 1;
else
return 0;
}
int leaf_function(int x) { int my_global = 100; main() {
return x + 1; int z;
} my_global += 1;
z =
leaf_function(my_global);
}