MIPS & SPIM                              MIPS & SPIM              Modulo del Corso di Architettura degli Elaboratori      ...
MIPS & SPIMLezioni precedenti              Lezione 1: linguaggio macchina/assembly/alto livello; RISC              vs CISC...
MIPS & SPIM  Codifica istruzioni MIPSRiepilogo      1   Codifica istruzioni MIPS            Formati di istruzione           ...
MIPS & SPIM  Codifica istruzioni MIPSCome traduciamo un’istruzione in linguaggio macchina?      Tre tipi di formati (32 bit...
MIPS & SPIM  Codifica istruzioni MIPS    Formati di istruzioneRiepilogo      1   Codifica istruzioni MIPS            Formati...
MIPS & SPIM  Codifica istruzioni MIPS    Formati di istruzioneR-format                             op      rs      rt      ...
MIPS & SPIM  Codifica istruzioni MIPS    Formati di istruzioneI-format (1/2)                             op      rs      rt...
MIPS & SPIM  Codifica istruzioni MIPS    Formati di istruzioneI-format (2/2)      Domanda:      Ricordandoci che la memoria...
MIPS & SPIM  Codifica istruzioni MIPS    Formati di istruzioneI-format (2/2)      Domanda:      Ricordandoci che la memoria...
MIPS & SPIM  Codifica istruzioni MIPS    Formati di istruzioneJ-format                                  op     address     ...
MIPS & SPIM  Codifica istruzioni MIPS    Formati di istruzioneUna vista d’insieme         Type                             ...
MIPS & SPIM  Codifica istruzioni MIPS    Formati di istruzionenoop      noop        Alto livello:        Assembly:         ...
MIPS & SPIM  Codifica istruzioni MIPS    R-formatRiepilogo      1   Codifica istruzioni MIPS            Formati di istruzion...
MIPS & SPIM  Codifica istruzioni MIPS    R-formatAddition      add        Alto livello:       $d = $s + $t        Assembly:...
MIPS & SPIM  Codifica istruzioni MIPS    R-formatSubtraction      sub        Alto livello:       $d = $s - $t        Assemb...
MIPS & SPIM  Codifica istruzioni MIPS    R-formatMultiplication      mult        Alto livello:       $LO = (($s * $t) << 32...
MIPS & SPIM  Codifica istruzioni MIPS    R-formatBitwise and      and        Alto livello:       $d = $s & $t        Assemb...
MIPS & SPIM  Codifica istruzioni MIPS    R-formatBitwise or      or        Alto livello:       $d = $s | $t        Assembly...
MIPS & SPIM  Codifica istruzioni MIPS    R-formatExclusive or      xor        Alto livello:       $d = $s ^ $t        Assem...
MIPS & SPIM  Codifica istruzioni MIPS    R-formatSet on less than      slt        Alto livello:       $d=($s < $t)        A...
MIPS & SPIM  Codifica istruzioni MIPS    I-formatRiepilogo      1   Codifica istruzioni MIPS            Formati di istruzion...
MIPS & SPIM  Codifica istruzioni MIPS    I-formatAdd immediate      addi        Alto livello:       $t = $s + C        Asse...
MIPS & SPIM  Codifica istruzioni MIPS    I-formatLoad word (1/2)      lw        Alto livello:       $t = MEM[$s + offset]  ...
MIPS & SPIM  Codifica istruzioni MIPS    I-formatLoad word (1/2)      lw        Alto livello:       $t = MEM[$s + offset]  ...
MIPS & SPIM  Codifica istruzioni MIPS    I-formatLoad word (1/2)      lw        Alto livello:       $t = MEM[$s + offset]  ...
MIPS & SPIM  Codifica istruzioni MIPS    I-formatLoad word (1/2)      lw        Alto livello:       $t = MEM[$s + offset]  ...
MIPS & SPIM  Codifica istruzioni MIPS    I-formatLoad word (2/2)      Example      Codice MIPS per caricare in $t la sesta ...
MIPS & SPIM  Codifica istruzioni MIPS    I-formatLoad word (2/2)      Example      Codice MIPS per caricare in $t la sesta ...
MIPS & SPIM  Codifica istruzioni MIPS    I-formatStore word      sw        Alto livello:       MEM[$s + offset] = $t       ...
MIPS & SPIM  Codifica istruzioni MIPS    I-formatStore word      sw        Alto livello:       MEM[$s + offset] = $t       ...
MIPS & SPIM  Codifica istruzioni MIPS    I-formatBranch on equal      beq        Alto livello:       if ($s == $t) goto C  ...
MIPS & SPIM  Codifica istruzioni MIPS    I-formatBranch on not equal      bne        Alto livello:       if ($s != $t) goto...
MIPS & SPIM  Codifica istruzioni MIPS    J-formatRiepilogo      1   Codifica istruzioni MIPS            Formati di istruzion...
MIPS & SPIM  Codifica istruzioni MIPS    J-formatUnconditional jump      jump        Alto livello:       goto C        Asse...
MIPS & SPIM  Codifica istruzioni MIPS    J-formatEsercizi (1/2)      Massimo      Scrivere una procedura MIPS per il possib...
MIPS & SPIM  Codifica istruzioni MIPS    J-formatEsercizi (1/2)      Massimo      Scrivere una procedura MIPS per il possib...
MIPS & SPIM  Codifica istruzioni MIPS    J-formatEsercizi (2/2)      Minimo      Scrivere una procedura MIPS per il possibi...
MIPS & SPIM  Codifica istruzioni MIPS    J-formatEsercizi (2/2)      Minimo      Scrivere una procedura MIPS per il possibi...
Upcoming SlideShare
Loading in …5
×

Lezione3 - MIPS & SPIM Unicam

1,187 views

Published on

Published in: Spiritual, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,187
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
63
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lezione3 - MIPS & SPIM Unicam

  1. 1. MIPS & SPIM MIPS & SPIM Modulo del Corso di Architettura degli Elaboratori Nicola Paoletti Universit` di Camerino a Scuola di Scienze e Tecnologie 29 Marzo 2011 AA 2010/2011
  2. 2. MIPS & SPIMLezioni precedenti Lezione 1: linguaggio macchina/assembly/alto livello; RISC vs CISC. Lezione 2: introduzione al MIPS Instruction Set; registri; istruzioni aritmetiche e di data transfer.
  3. 3. MIPS & SPIM Codifica istruzioni MIPSRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  4. 4. MIPS & SPIM Codifica istruzioni MIPSCome traduciamo un’istruzione in linguaggio macchina? Tre tipi di formati (32 bit): Formato R-type: per le istruzioni del tipo add, sub, mul, div, and, or, . . . (R-format: Registry-format) Formato I-type: per le istruzioni del tipo addi, lw, sw, . . . (I-format: Immediate-format) Formato J-type: per le istruzioni di jump (J-format: Jump-format)
  5. 5. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  6. 6. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneR-format op rs rt rd shamt funct 6 bit 5 bit 5 bit 5 bit 5 bit 6 bit op: opcode rs: primo registro sorgente rt: primo registro sorgente rd: registro di destinazione shamt: shift amount; =0 se non si tratta di un’istruzione di shift funct: funzione; i campi op e funct identificano la particolare funzione da eseguire.
  7. 7. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneI-format (1/2) op rs rt address 6 bit 5 bit 5 bit 16 bit In questo caso solo opcode identifica l’istruzione mnemonica. Si hanno 16 bit per indirizzare la memoria fisica.
  8. 8. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneI-format (2/2) Domanda: Ricordandoci che la memoria ` indirizzata byte per byte, con 16 bit e per specificare l’indirizzo, qual’` l’intervallo a cui possiamo accedere? e
  9. 9. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneI-format (2/2) Domanda: Ricordandoci che la memoria ` indirizzata byte per byte, con 16 bit e per specificare l’indirizzo, qual’` l’intervallo a cui possiamo accedere? e Dato un offset $s, dal byte $s al byte 216 − 1+ $s.
  10. 10. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneJ-format op address 6 bit 26 bit Address specifica l’indirizzo dell’istruzione a cui saltare.
  11. 11. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneUna vista d’insieme Type Format(Bits) R opcode(6) rs(5) rt(5) rd(5) shamt(5) funct(6) I opcode(6) rs(5) rt(5) immediate(16) J opcode(6) address(26)
  12. 12. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzionenoop noop Alto livello: Assembly: noop Macchina: 0x0
  13. 13. MIPS & SPIM Codifica istruzioni MIPS R-formatRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  14. 14. MIPS & SPIM Codifica istruzioni MIPS R-formatAddition add Alto livello: $d = $s + $t Assembly: add $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x20
  15. 15. MIPS & SPIM Codifica istruzioni MIPS R-formatSubtraction sub Alto livello: $d = $s - $t Assembly: sub $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x22
  16. 16. MIPS & SPIM Codifica istruzioni MIPS R-formatMultiplication mult Alto livello: $LO = (($s * $t) << 32)>>32 $HI = ($s * $t)>>32 Assembly: mult $s, $t Macchina: 0x0 $s $t 0x0 0x0 0x18 Moltiplica il contenuto dei due registri a 32 bit ($s e $t). Il risultato (64 bit) viene messo in due registri speciali: $LO: contiene i 32 bit meno significativi del risultato; si recupera attraverso l’istruzione mflo $s. $HI: contiene i 32 bit pi` significativi del risultato; si recupera u attraverso l’istruzione mfhi $s.
  17. 17. MIPS & SPIM Codifica istruzioni MIPS R-formatBitwise and and Alto livello: $d = $s & $t Assembly: and $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x24
  18. 18. MIPS & SPIM Codifica istruzioni MIPS R-formatBitwise or or Alto livello: $d = $s | $t Assembly: or $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x25
  19. 19. MIPS & SPIM Codifica istruzioni MIPS R-formatExclusive or xor Alto livello: $d = $s ^ $t Assembly: xor $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x26
  20. 20. MIPS & SPIM Codifica istruzioni MIPS R-formatSet on less than slt Alto livello: $d=($s < $t) Assembly: slt $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x2A
  21. 21. MIPS & SPIM Codifica istruzioni MIPS I-formatRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  22. 22. MIPS & SPIM Codifica istruzioni MIPS I-formatAdd immediate addi Alto livello: $t = $s + C Assembly: addi $t, $s, C Macchina: 0x8 $s $t C
  23. 23. MIPS & SPIM Codifica istruzioni MIPS I-formatLoad word (1/2) lw Alto livello: $t = MEM[$s + offset] Assembly: lw $t, offset($s) Macchina: 0x23 $s $t $s + offset Attenzione: La memoria ` indirizzata al singolo byte e Le word hanno lunghezza 32 bit = 4 byte Il valore di $s ` un multiplo di 4. e
  24. 24. MIPS & SPIM Codifica istruzioni MIPS I-formatLoad word (1/2) lw Alto livello: $t = MEM[$s + offset] Assembly: lw $t, offset($s) Macchina: 0x23 $s $t $s + offset Attenzione: La memoria ` indirizzata al singolo byte e Le word hanno lunghezza 32 bit = 4 byte Il valore di $s ` un multiplo di 4. e
  25. 25. MIPS & SPIM Codifica istruzioni MIPS I-formatLoad word (1/2) lw Alto livello: $t = MEM[$s + offset] Assembly: lw $t, offset($s) Macchina: 0x23 $s $t $s + offset Attenzione: La memoria ` indirizzata al singolo byte e Le word hanno lunghezza 32 bit = 4 byte Il valore di $s ` un multiplo di 4. e
  26. 26. MIPS & SPIM Codifica istruzioni MIPS I-formatLoad word (1/2) lw Alto livello: $t = MEM[$s + offset] Assembly: lw $t, offset($s) Macchina: 0x23 $s $t $s + offset Attenzione: La memoria ` indirizzata al singolo byte e Le word hanno lunghezza 32 bit = 4 byte Il valore di $s ` un multiplo di 4. e
  27. 27. MIPS & SPIM Codifica istruzioni MIPS I-formatLoad word (2/2) Example Codice MIPS per caricare in $t la sesta word in memoria, con offset=0xBAC014
  28. 28. MIPS & SPIM Codifica istruzioni MIPS I-formatLoad word (2/2) Example Codice MIPS per caricare in $t la sesta word in memoria, con offset=0xBAC014 addi $s, $0, 24 lw $t, 0xBAC014($s)
  29. 29. MIPS & SPIM Codifica istruzioni MIPS I-formatStore word sw Alto livello: MEM[$s + offset] = $t Assembly: sw $t, offset($s) Macchina: 0x2B $s $t $s + offset Example Codice MIPS per scrivere nella settima word in memoria con offset=0xBAC014 il valore di $t
  30. 30. MIPS & SPIM Codifica istruzioni MIPS I-formatStore word sw Alto livello: MEM[$s + offset] = $t Assembly: sw $t, offset($s) Macchina: 0x2B $s $t $s + offset Example Codice MIPS per scrivere nella settima word in memoria con offset=0xBAC014 il valore di $t addi $s, $0, 28 sw $t, 0xBAC014($s)
  31. 31. MIPS & SPIM Codifica istruzioni MIPS I-formatBranch on equal beq Alto livello: if ($s == $t) goto C Assembly: beq $s,$t, C Macchina: 0x4 $s $t C Example # se $s1 ` uguale a $s2, li sottraggo; altrimenti li e sommo. beq $s1, $s2, L1 add $t1, $s1, $s2 L1: sub $t1, $s1, $s2
  32. 32. MIPS & SPIM Codifica istruzioni MIPS I-formatBranch on not equal bne Alto livello: if ($s != $t) goto C Assembly: bne $s,$t, C Macchina: 0x5 $s $t C Example # se $s1 ` diverso a $s2, li sommo; altrimenti li e sottraggo. bne $s1, $s2, L1 sub $t1, $s1, $s2 L1: add $t1, $s1, $s2
  33. 33. MIPS & SPIM Codifica istruzioni MIPS J-formatRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  34. 34. MIPS & SPIM Codifica istruzioni MIPS J-formatUnconditional jump jump Alto livello: goto C Assembly: j C Macchina: 0x2 C Example # goto L1 j L1 ... L1: ...
  35. 35. MIPS & SPIM Codifica istruzioni MIPS J-formatEsercizi (1/2) Massimo Scrivere una procedura MIPS per il possibile codice dell’istruzione max $v0, $a0, $a1.
  36. 36. MIPS & SPIM Codifica istruzioni MIPS J-formatEsercizi (1/2) Massimo Scrivere una procedura MIPS per il possibile codice dell’istruzione max $v0, $a0, $a1. slt $t0, $a0, $a1 beq $t0, $0, L1 addi $v0, $a1, 0 L1: addi $v0, $a0, 0
  37. 37. MIPS & SPIM Codifica istruzioni MIPS J-formatEsercizi (2/2) Minimo Scrivere una procedura MIPS per il possibile codice dell’istruzione min $v0, $a0, $a1.
  38. 38. MIPS & SPIM Codifica istruzioni MIPS J-formatEsercizi (2/2) Minimo Scrivere una procedura MIPS per il possibile codice dell’istruzione min $v0, $a0, $a1. slt $t0, $a0, $a1 beq $t0, $0, L1 addi $v0, $a0, 0 L1: addi $v0, $a1, 0

×