Está en la página 1de 4

Politécnico Grancolombiano

Arquitectura del computador


Gabriel Avila

Fernanda Moreno Méndez


David Segura Rodriguez
Jorge Prada

Taller MIPS

1. Realizar código en MIPS de los fragmentos de código.

addi $s0, $zero, 4


add $s1, $zero, $zero
#Se supone que el registro D está en
la dirección $s2

loop:
slt $t0, $ s1, $s0
beq $t0, $zero, Done
mult $s0, $s1
mflo $t1
sw $t1, $t1($s2)
j loop
Done:

addi $s0, $zero, 4 #s0 = a


addi $s1, $zero, 5 #s1 = b
add $s2, $zero, $zero #s2 = i
add $s3, $zero, $zero #s3 = j
#Se supone que el registro D está en
la dirección $s4

Loop1:
slt $t0, $s2, $s0
beq $t0, $zero, Done
Loop2:
slt $t0, $s3, $s1
beq $t0, $zero, Loop1

mult $s2, $s1


mflo $t1

add $t1, $t1, $s3


add $t2, $s2, $s3
sw $t2, $t1($s4)

addi $s2, $s2, 1


addi $s3, $s3, 1
j Loop2
Done:
Se asume que la variable as está en
$s0, y b en $s1.

slti $t0, $s0, 5


beq $t0, $zero, elseIf
addi $s1, $zero, 0
j Done

elseIf:
slt $t0, $s0, $zero
beq $t0, $zero,else
addi $t1, $zero, 10
add $s1, $t1, $zero
j Done

else:
addi $t1, $zero, 15
add $s1, $t1, $zero
j Done
Done:

Se asume que la variable a está en


$s0, y b en $s1.

bne $s0, $zero, Case1


addi $s1, $zero, 0
j Done

Case1:
addi $t1, $zero, 1 ​#temporal = 1
bne $s0, $t1, default
addi $s1, $zero, 10
j Done

default:
addi $s1, $zero, 15
j Done

Done:

2. Convertir los siguientes códigos ensamblador a código.

int t1 = 50;
int s1, s2 = 0;
while(t1!=0){
s1 = A[0];
s2 +=s1;
s1 = A[1];
s2 += s1;
s3 += &A[2];
t1--;
}

int t0, t1, t3, s0 = 0;


int s6 = 2; ​//se asume el valor

t0 = s6 +4;
t1 = s6;
A[0] = t1;
t3 = A[0];
s0 = t1 + t3;

int f = 0, g = 2, h = 3, i = 1; ​//se
suponen valores
f= g+h+i;

3. 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.

int t0 = f*4;
t0+= &A[f];
int t1 = g*4;
t1+= B[g];
f = A[f];
int t2 = t0 +4;
t0 += t2+f;
t1 = t0;

3.1. ¿Es posible reducir el código anterior con menos instrucciones MIPS?
No (​ no se entendió muy bien lo que quería hacer el código)

4. Convertir las siguientes instrucciones a código hexadecimal.

● add $t0, $s6, $t7:

op Code 0 22 15 8 0 32

Binario 000000 1011 0111 01000 00000 100000


0 1

Hexadecimal 0 2 12 15 4 0 2 0

● slt $t0, $t1, $t2

op Code 0 10 11 9 0 82

Binario 000000 01010 01011 01001 00000 101010

Hexadecimal 0 1 4 11 4 8 2 10

● lw $s1, 0($s0)
op Code 35 16 17 0 0 0

Binario 100011 10000 10001 00000 00000 000000

Hexadecimal 8 14 1 1 0 0 0 0

● addi $t1, $0, $0

op Code 8 16 9 0 0 0

Binario 001000 10000 01001 00000 00000 000000

Hexadecimal 2 2 0 9 0 0 0 0

● not $t1, $t2

//No se encontró la operación not.

● sw $t4, 12($s1)

op Code 43 17 12 12

Binario 101011 10001 01100 00000 00000 001100

Hexadecimal 10 14 2 12 0 0 0 12