O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Exercicios Resolvidos Série MIPS Embarcados

152 visualizações

Publicada em

Exercícios resolvidos da série de artigos MIPS que escrevo para o portal Embarcados.

Publicada em: Educação
  • Entre para ver os comentários

  • Seja a primeira pessoa a gostar disto

Exercicios Resolvidos Série MIPS Embarcados

  1. 1. MIPS: Resoluc¸˜ao dos exerc´ıcios propostos Elaine Cec´ılia Gatto 1 1 Portal Embarcados: www.embarcados.com.br elainececiliagatto@gmail.com 1. Artigo 7: IF Simples Verificar Tabelas 1, 2 e 3 C´odigo C: 1 if(x==y) go to L2 2 a[1] = b - c; 3 b = a[2] + c; 4 c = b + c[3] 5 L2: 6 a[4] = a[6] + a[5]; 2. Artigo 8: IF Composto 2.1. Resoluc¸˜ao do Exerc´ıcio 1 Verificar Figura 1 e Tabelas 4, 5 e 6 C´odigo C: 1 if(a==b){ 2 c = a + b; 3 a = b - c; 4 } else{ 5 b = a + c; 6 c = b - c; 7 } Considere: • BEQ: branch if equal ou desvie se igual. Se a == b desvie para else; • Se a n˜ao ´e diferente de b [lado esquerdo da figura BEQ], ent˜ao a s´o pode ser igual a b [lado direito da figura BNE]; • BNE: branch if not equal ou desvie se n˜ao igual. Se a != b desvie para else; • Se a n˜ao ´e igual a b [lado esquerdo da figura BNE], ent˜ao a s´o pode ser diferente de b [lado direito da figura BEQ]. • Se (a==b) entra no if e se (a!=b) entra no else. Por isso, vamos usar BNE. O desvio acontece quando (a!=b), caso contr´ario n˜ao tem desvio! Atente-se a este detalhe.
  2. 2. 2.2. Resoluc¸˜ao do Exerc´ıcio 2 Verificar Figura 2 e Tabelas 7, 8 e 9 C´odigo C: 1 if(a!=b){ 2 c = a - b; 3 a = b + c; 4 } else{ 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. Resoluc¸˜ao do Exerc´ıcio 3 Verificar Figura 3 e Tabelas 10, 11 e 12 C´odigo C: 1 if(a > b){ 2 c = a - b; 3 a = b + c; 4 } else { 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 fizermos 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. Resoluc¸˜ao do Exerc´ıcio 4 Verificar Figura 4 e Tabelas 13, 14 e 15 C´odigo C: 1 if(a > b){ 2 c = a - b; 3 a = b + c; 4 } else { 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 fizermos a seguinte comparac¸˜ao, vamos descobri que maior ´e igual a 0 e menor ´e igual a 1. Portanto, para
  3. 3. 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. Artigo 10: Operac¸˜oes L´ogicas Verificar Figura 5 e Tabelas 16, 17 e 18. 4. Artigo 11: Operac¸˜ao AND Verificar Figura 6 e Tabelas 19, 20 e 21. 5. Artigo 12: Operac¸˜ao OR Verificar Figura 7 e Tabelas 22, 23 e 24. 6. Artigo 13: Operac¸˜ao NOT Verificar Figura 8 e Tabelas 25, 26 e 27. 7. Artigo 16 Verificar 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) 10 ADD $t2, $t0, $t1 ADD $t2, $t0, $t1 11 SW $t2, 4($s0) SW $t2, 4($s0)
  4. 4. Table 2. Representac¸ ˜ao de M´aquina IF Simples Instr. End.Mem. op rs rt rd shamt funct 1 10.000 5 19 20 10028 2 10.004 0 17 18 8 0 34 3 10.008 43 8 16 1 4 10.012 35 8 16 2 5 10.016 0 9 18 17 0 32 6 10.020 35 10 18 3 7 10.024 0 17 10 18 0 32 8 10.028 35 8 16 6 9 10.032 35 9 16 5 10 10.036 0 8 9 10 0 32 11 10.040 43 10 16 4 Table 3. C´odigo de M´aquina IF Simples Instr. End.Mem. op rs rt rd shamt funct 1 10.000 000101 10011 10100 L2 2 10.004 000000 10001 10010 01000 00000 100010 3 10.008 101011 01000 10000 0000 0000 0000 0001 4 10.012 100011 01000 10000 0000 0000 0000 0010 5 10.016 000000 01001 10010 10001 00000 100000 6 10.020 100011 01010 10010 0000 0000 0000 0011 7 10.024 000000 10001 01010 10010 00000 100000 8 10.028 100011 01000 10000 0000 0000 0000 0110 9 10.032 100011 01001 10000 0000 0000 0000 0101 10 10.036 000000 01000 01001 01010 00000 100000 11 10.040 101011 01010 10000 0000 0000 0000 0100 Figure 1. BNE e BEQ Exerc´ıcio 1
  5. 5. 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 EXIT J EXIT 5 10016 ELSE: ADD $s1, $s0, $s2 ELSE: 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 10024 EXIT Table 6. C´odigo de M´aquina Exerc´ıcio 1 Instr. End.Mem. op rs rt rd shamt funct 1 10000 000101 10000 10001 0010 0111 0010 0000 2 10004 000000 10000 10001 10010 00000 100000 3 10008 000000 10001 10010 10000 00000 100010 4 10012 000010 0000 0000 0000 1001 1100 1010 00 5 10016 000000 10000 10010 10001 00000 100000 6 10020 000000 10001 10010 10010 00000 100010 7 10024 EXIT Figure 2. BNE e BEQ Exerc´ıcio 2
  6. 6. 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 EXIT J EXIT 5 10016 ELSE: SUB $s1, $s0, $s2 ELSE: 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 10024 EXIT Table 9. C´odigo de M´aquina Exerc´ıcio 2 Instr. End.Mem. op rs rt rd shamt funct 1 10000 000100 10000 10001 0010 0111 0010 0000 2 10004 000000 10000 10001 10010 00000 100000 3 10008 000000 10001 10010 10000 00000 100010 4 10012 000010 0000 0000 0000 1001 1100 1010 00 5 10016 000000 10000 10010 10001 00000 100000 6 10020 000000 10001 10010 10010 00000 100010 7 10024 EXIT 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 EXIT J EXIT 6 10020 ELSE: SUB $s1, $s0, $s2 ELSE: SUB $17, $16, $18 7 10024 ADD $s2, $s1, $s2 ADD $16, $17, $18 8 10028 EXIT EXIT
  7. 7. 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 10028 EXIT
  8. 8. Table 12. C´odigo de M´aquina Exerc´ıcio 3 Instr. End.Mem. op rs rt rd shamt funct 1 10000 000000 10000 10001 0010 0111 0010 0100 2 10004 000101 01000 00000 0010 0111 0010 0100 3 10008 000000 10000 10001 10010 00000 100010 4 10012 000000 10001 10010 10000 00000 100000 5 10016 000010 0000 0000 0000 1001 1100 1100 00 6 10020 000000 10000 10010 10001 00000 100010 7 10024 000000 10001 10010 10010 00000 100000 8 10028 EXIT Figure 4. BNE e BEQ Exerc´ıcio 4
  9. 9. 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 EXIT J EXIT 6 10020 ELSE: ADD $s1, $s0, $s2 ELSE: 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 10028 EXIT Table 15. C´odigo Exerc´ıcio 4 Instr. End.Mem. op rs rt rd shamt funct 1 10000 000000 10000 10001 0010 0111 0010 0100 2 10004 000100 01000 00000 0010 0111 0010 1100 3 10008 000000 10000 10001 10010 00000 100010 4 10012 000000 10001 10010 10000 00000 100000 5 10016 000010 0000 0000 0000 1001 1100 1011 00 6 10020 000000 10000 10010 10001 00000 100010 7 10024 000000 10001 10010 10010 00000 100000 8 10028 EXIT Figure 5. Calculando Deslocamentos Artigo 10
  10. 10. Table 16. Linguagem Artigo 10 Assembly M´aquina 1 SRL $t0, $s0, 8 SRL $8, $16, 8 2 SLL $t1, $s1, 4 SLL $9, $17, 4 Table 17. Representac¸ ˜ao Artigo 10 op rs rt rd shamt funct 1 0 0 16 8 8 2 2 0 0 17 9 4 0 Table 18. C´odigo Artigo 10 op rs rt rd shamt funct 1 000000 000000 010010 001000 001000 000010 2 000000 000000 010001 001001 000100 000000 Figure 6. Calculando AND Artigo 11 Table 19. Linguagem Artigo 11 Assembly M´aquina 1 AND $t0, $t1, $t2 AND $8, $9, $10 Table 20. Representac¸ ˜ao Artigo 11 op rs rt rd shamt funct 1 0 9 10 8 0 36 Table 21. C´odigo Artigo 11 op rs rt rd shamt funct 1 000000 001001 001010 001000 000000 100100 Table 22. Linguagem Artigo 12 Assembly M´aquina 1 OR $t0, $t1, $t2 OR $8, $9, $10
  11. 11. Figure 7. Calculando OR Artigo 12 Table 23. Representac¸ ˜ao Artigo 12 op rs rt rd shamt funct 1 0 9 10 8 0 37 Table 24. C´odigo Artigo 12 op rs rt rd shamt funct 1 000000 001001 001010 001000 000000 100101 Figure 8. Calculando NOT Artigo 13 Table 25. Linguagem Artigo 13 Assembly M´aquina 1 NOT $t0, $t1, $zero NOT $8, $9, $0 Table 26. Representac¸ ˜ao Artigo 13 op rs rt rd shamt funct 1 0 9 0 8 0 39
  12. 12. Table 27. C´odigo Artigo 13 op rs rt rd shamt funct 1 000000 001001 00000 001000 000000 100111 Table 28. Linguagem Artigo 16 Instr. End.Mem. Assembly M´aquina 1 10000 SLL $t1, $s3, $2 SLL $8, $19, $2 2 10004 ADD $t0, $t1, $s2 ADD $9, $9, $17 3 10008 LW $t2, 0($1) LW $10, 0($9) 4 10012 ADD $s0, $s1, $t2 ADD $16, $17, $10 Table 29. Representac¸ ˜ao Artigo 16 Instr. End.Mem. op rs rt rd shamt funct 1 10000 0 19 9 2 0 0 2 10004 0 17 9 0 0 32 3 10008 35 9 0 18 4 10012 0 10 16 16 0 32 Table 30. C´odigo Artigo 16 Instr. End.Mem. op rs rt rd shamt funct 1 10000 000000 010011 001001 000010 000000 000000 2 10004 000000 010001 001001 000000 000000 100000 3 10008 100011 001001 000000 0000 0000 0000 000000 4 10012 000000 001010 010000 010000 000000 100000

×