Exercícios resolvidos de MIPS Portal Embarcados

elainececiliagatto 10 views 12 slides May 20, 2025
Slide 1
Slide 1 of 12
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12

About This Presentation

Exercicios de MIPS do portal embarcados resolvidos!


Slide Content

MIPS: Resoluc¸˜ao dos exerc´cios propostos
Elaine Cec´lia Gatto
1
1
Portal Embarcados: www.embarcados.com.br
[email protected]
1.
Vericar Tabelas 1, 2 e 3
C´odigo C:
1if(x==y) go to L2
2 a[1] = b - c;
3 b = a[2] + c;
4 c = b + c[3]
5L2:
6 a[4] = a[6] + a[5];
2.
2.1. ˜ao do Exerc´cio 1
Vericar Figura 1 e Tabelas 4, 5 e 6
C´odigo C:
1if(a==b){
2 c = a + b;
3 a = b - c;
4}{
5 b = a + c;
6 c = b - c;
7}
Considere:
•
• an˜ao´e diferente deb[lado esquerdo da gura BEQ], ent˜aoas´o pode ser igual
ab[lado direito da gura BNE];
• ˜ao igual. Se a != b desvie para else;
• an˜ao´e igual ab[lado esquerdo da gura BNE], ent˜aoas´o pode ser diferente
deb[lado direito da gura BEQ].
•
acontece quando (a!=b), caso contr´ario n˜ao tem desvio! Atente-se a este detalhe.

2.2. ˜ao do Exerc´cio 2
Vericar Figura 2 e Tabelas 7, 8 e 9
C´odigo C:
1if(a!=b){
2 c = a - b;
3 a = b + c;
4}{
5 b = a - c;
6 c = b + c;
7}
Considere: Se (a!=b) entra no if e se (a==b) entra no else. Por isso, vamos usar BEQ. O
desvio acontece quando (a==b), caso contr´ario n˜ao tem desvio! Atente-se a este detalhe.
2.3. ˜ao do Exerc´cio 3
Vericar Figura 3 e Tabelas 10, 11 e 12
C´odigo C:
1if(a > b){
2 c = a - b;
3 a = b + c;
4}
5 b = a - c;
6 c = b + c;
7}
De acordo com a instruc¸˜ao SLT, se o primeiro registrador for menor que o se-
gundo registrador, ent˜ao o terceiro registrador recebe o valor 1. Se zermos a seguinte
comparac¸˜ao, vamos descobri que maior´e igual a 0 e menor´e igual a 1. Portanto, para
entrar no ELSE, o valor de $t0 deve ser 1. Assim, quando $t0 for igual a um, acontece
o desvio. Quem testa isso´e a instruc¸˜ao BNE que realiza o desvio quando a desigualdade
entre dois valores´e verdadeira!
2.4. ˜ao do Exerc´cio 4
Vericar Figura 4 e Tabelas 13, 14 e 15
C´odigo C:
1if(a > b){
2 c = a - b;
3 a = b + c;
4}
5 b = a - c;
6 c = b + c;
7}
De acordo com a instruc¸˜ao SLT, se o primeiro registrador for menor que o se-
gundo registrador, ent˜ao o terceiro registrador recebe o valor 1. Se zermos a seguinte
comparac¸˜ao, vamos descobri que maior´e igual a 0 e menor´e igual a 1. Portanto, para

entrar no ELSE, o valor de $t0 deve ser 0. Assim, quando $t0 for igual a 1 acontece o
desvio. Quem testa isso´e a instruc¸˜ao BEQ que realiza o desvio quando a igualdade entre
dois valores´e verdadeira!
3. ˜oes L´ogicas
Vericar Figura 5 e Tabelas 16, 17 e 18.
4. ˜ao AND
Vericar Figura 6 e Tabelas 19, 20 e 21.
5. ˜ao OR
Vericar Figura 7 e Tabelas 22, 23 e 24.
6. ˜ao NOT
Vericar Figura 8 e Tabelas 25, 26 e 27.
7.
Vericar Tabelas 28, 29 e 30.
Table 1. Linguagem IF Simples
Inst.Assembly M´aquina
1 BEQ $s3, $s4, L2 BEQ $s3, $s4, L2
2 SUB $t0, $s1, $s2 SUB $t0, $s1, $s2
3 SW $t0, 1($s0) SW $t0, 1($s0)
4 LW $t1, 2($s0) LW $t1, 2($s0)
5 ADD $s1, $t1, $s2 ADD $s1, $t1, $s2
6 LW $t2, 3($s2) LW $t2, 3($s2)
7 ADD $s2, $s1, $t2 ADD $s2, $s1, $t2
8 L2: LW $t0, 6($s0)LW $t0, 6($s0)
9 LW $t1, 5($s0) LW $t1, 5($s0)
10ADD $t2, $t0, $t1 ADD $t2, $t0, $t1
11SW $t2, 4($s0) SW $t2, 4($s0)

Table 2. Representac¸˜ao de M´aquina IF Simples
Instr.End.Mem.op rs rt rd shamt funct
1 10.0005 19 20 10028
2 10.0040 17 18 8 0 34
3 10.00843 8 16 1
4 10.01235 8 16 2
5 10.0160 9 18 17 0 32
6 10.02035 10 18 3
7 10.0240 17 10 18 0 32
8 10.02835 8 16 6
9 10.03235 9 16 5
10 10.0360 8 9 10 0 32
11 10.04043 10 16 4
Table 3. C´odigo de M´aquina IF Simples
Instr.End.Mem. op rs rt rd shamt funct
1 10.000000101 10011 10100 L2
2 10.004000000 10001 10010 01000 00000 100010
3 10.008101011 01000 10000 0000 0000 0000 0001
4 10.012100011 01000 10000 0000 0000 0000 0010
5 10.016000000 01001 10010 10001 00000 100000
6 10.020100011 01010 10010 0000 0000 0000 0011
7 10.024000000 10001 01010 10010 00000 100000
8 10.028100011 01000 10000 0000 0000 0000 0110
9 10.032100011 01001 10000 0000 0000 0000 0101
10 10.036000000 01000 01001 01010 00000 100000
11 10.040101011 01010 10000 0000 0000 0000 0100
Figure 1. BNE e BEQ Exerc´cio 1

Table 4. Linguagem Exerc´cio 1
Instr.End.Mem. Assembly M´aquina
1 10000 BNE$s0, $s1,EXIT ELSE$16, $17,ELSE
2 10004 ADD $s2, $s0, $s1 ADD $18, $16, $17
3 10008 SUB $s0, $s1, $s2 SUB $16, $17, $18
4 10012 J J
5 10016ELSE: ADD $s1, $s0, $s2ELSE: ADD $17, $16, $18
6 10020 SUB $s2, $s1, $s2 SUB $18, $17, $183
7 10024 EXIT EXIT
Table 5. Representac¸˜ao Exerc´cio 1
Instr.End.Mem. op rs rt rd shamt funct
1 10000 5 16 17 10016
2 10004 0 16 17 18 0 32
3 10008 0 17 18 16 0 34
4 10012 2 10024
5 10016 0 16 18 17 0 32
6 10020 0 17 18 18 0 34
7 10024EXIT
Table 6. C´odigo de M´aquina Exerc´cio 1
Instr.End.Mem. op rs rt rd shamt funct
1 10000000101 10000 10001 0010 0111 0010 0000
2 10004000000 10000 10001 10010 00000 100000
3 10008000000 10001 10010 10000 00000 100010
4 10012000010 0000 0000 0000 1001 1100 1010 00
5 10016000000 10000 10010 10001 00000 100000
6 10020000000 10001 10010 10010 00000 100010
7 10024EXIT
Figure 2. BNE e BEQ Exerc´cio 2

Table 7. Linguagem Assembly Exerc´cio 2
Instr.End.Mem. Assembly M´aquina
1 10000 BEQ$s0, $s1,ELSE BEQ$16, $17,ELSE
2 10004 SUB $s2, $s0, $s1 SUB $18, $16, $17
3 10008 ADD $s0, $s1, $s2 ADD $16, $17, $18
4 10012 J J
5 10016ELSE: SUB $s1, $s0, $s2ELSE: SUB $17, $16, $18
6 10020 ADD $s2, $s1, $s2 ADD $18, $17, $18
7 10024 EXIT EXIT
Table 8. Representac¸˜ao Exerc´cio 2
Instr.End.Mem. op rs rt rd shamt funct
1 10000 4 16 17 10016
2 10004 0 16 17 18 0 32
3 10008 0 17 18 16 0 34
4 10012 2 10024
5 10016 0 16 18 17 0 32
6 10020 0 17 18 18 0 34
7 10024EXIT
Table 9. C´odigo de M´aquina Exerc´cio 2
Instr.End.Mem. op rs rt rd shamt funct
1 10000000100 10000 10001 0010 0111 0010 0000
2 10004000000 10000 10001 10010 00000 100000
3 10008000000 10001 10010 10000 00000 100010
4 10012000010 0000 0000 0000 1001 1100 1010 00
5 10016000000 10000 10010 10001 00000 100000
6 10020000000 10001 10010 10010 00000 100010
7 10024EXIT
Table 10. Linguagem Exerc´cio 3
Instr.End.Mem. Assembly M´aquina
1 10000 SLT $t0, $s0, $s1 SLT$8, $16, $17
2 10004 BNE$t0, $zero,ELSE BNE$8, $0, 10020
3 10008 SUB $s2, $s0, $s1 SUB$18, $16, $17
4 10012 ADD $s0, $s1, $S2 ADD$16, $17, $18
5 10016 J J
6 10020ELSE: SUB $s1, $s0, $s2ELSE: SUB$17, $16, $18
7 10024 ADD $s2, $s1, $s2 ADD$16, $17, $18
8 10028 EXIT EXIT

Figure 3. SLT e BNE Exerc´cio 3
Table 11. Representac¸˜ao Exerc´cio 3
Instr.End.Mem. op rs rt rd shamt funct
1 10000 0 16 17 8 0 42
2 10004 5 8 0 10020
3 10008 0 16 17 18 0 34
4 10012 0 17 18 16 0 32
5 10016 2 10028
6 10020 0 16 18 17 0 34
7 10024 0 17 18 18 0 32
8 10028EXIT

Table 12. C´odigo de M´aquina Exerc´cio 3
Instr.End.Mem. op rs rt rd shamt funct
1 10000000000 10000 10001 0010 0111 0010 0100
2 10004000101 01000 00000 0010 0111 0010 0100
3 10008000000 10000 10001 10010 00000 100010
4 10012000000 10001 10010 10000 00000 100000
5 10016000010 0000 0000 0000 1001 1100 1100 00
6 10020000000 10000 10010 10001 00000 100010
7 10024000000 10001 10010 10010 00000 100000
8 10028EXIT
Figure 4. BNE e BEQ Exerc´cio 4

Table 13. Linguagem Exerc´cio 4
Instr.End.Mem. Assembly M´aquina
1 10000 SLT $t0, $s0, $s1 SLT$8, $16, $17
2 10004 BEQ$t0, $zero,ELSE BEQ$8, $0, 10016
3 10008 ADD $s2, $s0, $s1 ADD$18, $16, $17
4 10012 SUB $s0, $s1, $S2 SUB$16, $17, $18
5 10016 J J
6 10020ELSE: ADD $s1, $s0, $s2ELSE: ADD$17, $16, $18
7 10024 SUB $s2, $s1, $s2 SUB$16, $17, $18
8 10028 EXIT EXIT
Table 14. Representac¸˜ao Exerc´cio 4
Instr.End.Mem. op rs rt rd shamt funct
1 10000 0 16 17 8 0 42
2 10004 4 8 0 10020
3 10008 0 16 17 18 0 34
4 10012 0 17 18 16 0 32
5 10016 2 10028
6 10020 0 16 18 17 0 34
7 10024 0 17 18 18 0 32
8 10028EXIT
Table 15. C´odigo Exerc´cio 4
Instr.End.Mem. op rs rt rd shamt funct
1 10000000000 10000 10001 0010 0111 0010 0100
2 10004000100 01000 00000 0010 0111 0010 1100
3 10008000000 10000 10001 10010 00000 100010
4 10012000000 10001 10010 10000 00000 100000
5 10016000010 0000 0000 0000 1001 1100 1011 00
6 10020000000 10000 10010 10001 00000 100010
7 10024000000 10001 10010 10010 00000 100000
8 10028EXIT
Figure 5. Calculando Deslocamentos Artigo 10

Table 16. Linguagem Artigo 10
Assembly M ´aquina
1 SRL$t0, $s0, 8SRL$8, $16, 8
2 SLL$t1, $s1, 4SLL$9, $17, 4
Table 17. Representac¸˜ao Artigo 10
op rs rt rd shamt funct
10 0 16 8 8 2
20 0 17 9 4 0
Table 18. C´odigo Artigo 10
op rs rt rd shamt funct
1000000 000000 010010 001000 001000 000010
2000000 000000 010001 001001 000100 000000
Figure 6. Calculando AND Artigo 11
Table 19. Linguagem Artigo 11
Assembly M´aquina
1AND$t0, $t1, $t2AND$8, $9, $10
Table 20. Representac¸˜ao Artigo 11
op rs rt rd shamt funct
10 9 10 8 0 36
Table 21. C´odigo Artigo 11
op rs rt rd shamt funct
1000000 001001 001010 001000 000000 100100
Table 22. Linguagem Artigo 12
Assembly M´aquina
1OR$t0, $t1, $t2OR$8, $9, $10

Figure 7. Calculando OR Artigo 12
Table 23. Representac¸˜ao Artigo 12
op rs rt rd shamt funct
10 9 10 8 0 37
Table 24. C´odigo Artigo 12
op rs rt rd shamt funct
1000000 001001 001010 001000 000000 100101
Figure 8. Calculando NOT Artigo 13
Table 25. Linguagem Artigo 13
Assembly M´aquina
1NOT$t0, $t1, $zeroNOT$8, $9, $0
Table 26. Representac¸˜ao Artigo 13
op rs rt rd shamt funct
10 9 0 8 0 39

Table 27. C´odigo Artigo 13
op rs rt rd shamt funct
1000000 001001 00000 001000 000000 100111
Table 28. Linguagem Artigo 16
Instr.End.Mem. Assembly M´aquina
1 10000SLL$t1, $s3, $2SLL $8, $19, $2
2 10004ADD$t0, $t1, $s2ADD $9, $9, $17
3 10008LW $t2, 0($1)LW $10, 0($9)
4 10012ADD$s0, $s1, $t2ADD$16, $17, $10
Table 29. Representac¸˜ao Artigo 16
Instr.End.Mem.op rs rt rd shamt funct
1 100000 19 9 2 0 0
2 100040 17 9 0 0 32
3 1000835 9 0 18
4 100120 10 16 16 0 32
Table 30. C´odigo Artigo 16
Instr.End.Mem. op rs rt rd shamt funct
1 10000000000 010011 001001 000010 000000 000000
2 10004000000 010001 001001 000000 000000 100000
3 10008100011 001001 000000 0000 0000 0000 000000
4 10012000000 001010 010000 010000 000000 100000