SlideShare a Scribd company logo
MIPS & SPIM




                              MIPS & SPIM
              Modulo del Corso di Architettura degli Elaboratori


                                Nicola Paoletti

                              Universit` di Camerino
                                        a
                           Scuola di Scienze e Tecnologie

                                5 Aprile 2011
                                AA 2010/2011
MIPS & SPIM




Lezioni 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.
MIPS & SPIM
  Codifica istruzioni MIPS




Riepilogo




      1   Codifica istruzioni MIPS
            Formati di istruzione
            R-format
            I-format
            J-format
MIPS & SPIM
  Codifica istruzioni MIPS




Come 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)
MIPS & SPIM
  Codifica istruzioni MIPS
    Formati di istruzione


Riepilogo




      1   Codifica istruzioni MIPS
            Formati di istruzione
            R-format
            I-format
            J-format
MIPS & SPIM
  Codifica istruzioni MIPS
    Formati di istruzione


R-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.
MIPS & SPIM
  Codifica istruzioni MIPS
    Formati di istruzione


I-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.
MIPS & SPIM
  Codifica istruzioni MIPS
    Formati di istruzione


I-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
MIPS & SPIM
  Codifica istruzioni MIPS
    Formati di istruzione


I-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.
MIPS & SPIM
  Codifica istruzioni MIPS
    Formati di istruzione


J-format




                                  op     address
                                 6 bit    26 bit

      Address specifica l’indirizzo dell’istruzione a cui saltare.
MIPS & SPIM
  Codifica istruzioni MIPS
    Formati di istruzione


Una 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)
MIPS & SPIM
  Codifica istruzioni MIPS
    Formati di istruzione


noop




      noop
        Alto livello:
        Assembly:           noop
        Macchina:           0x0
MIPS & SPIM
  Codifica istruzioni MIPS
    R-format


Riepilogo




      1   Codifica istruzioni MIPS
            Formati di istruzione
            R-format
            I-format
            J-format
MIPS & SPIM
  Codifica istruzioni MIPS
    R-format


Addition




      add
        Alto livello:       $d = $s + $t
        Assembly:           add $d, $s, $t
        Macchina:           0x0 $s $t $d     0x0   0x20
MIPS & SPIM
  Codifica istruzioni MIPS
    R-format


Subtraction




      sub
        Alto livello:       $d = $s - $t
        Assembly:           sub $d, $s, $t
        Macchina:           0x0 $s $t $d     0x0   0x22
MIPS & SPIM
  Codifica istruzioni MIPS
    R-format


Multiplication

      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.
MIPS & SPIM
  Codifica istruzioni MIPS
    R-format


Bitwise and




      and
        Alto livello:       $d = $s & $t
        Assembly:           and $d, $s, $t
        Macchina:           0x0 $s $t $d     0x0   0x24
MIPS & SPIM
  Codifica istruzioni MIPS
    R-format


Bitwise or




      or
        Alto livello:       $d = $s | $t
        Assembly:           or $d, $s, $t
        Macchina:           0x0 $s $t $d    0x0   0x25
MIPS & SPIM
  Codifica istruzioni MIPS
    R-format


Exclusive or




      xor
        Alto livello:       $d = $s ^ $t
        Assembly:           xor $d, $s, $t
        Macchina:           0x0 $s $t $d     0x0   0x26
MIPS & SPIM
  Codifica istruzioni MIPS
    R-format


Set on less than




      slt
        Alto livello:       $d=($s < $t)
        Assembly:           slt $d, $s, $t
        Macchina:           0x0 $s $t $d     0x0   0x2A
MIPS & SPIM
  Codifica istruzioni MIPS
    I-format


Riepilogo




      1   Codifica istruzioni MIPS
            Formati di istruzione
            R-format
            I-format
            J-format
MIPS & SPIM
  Codifica istruzioni MIPS
    I-format


Add immediate




      addi
        Alto livello:       $t = $s + C
        Assembly:           addi $t, $s, C
        Macchina:           0x8 $s $t C
MIPS & SPIM
  Codifica istruzioni MIPS
    I-format


Load 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
MIPS & SPIM
  Codifica istruzioni MIPS
    I-format


Load 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
MIPS & SPIM
  Codifica istruzioni MIPS
    I-format


Load 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
MIPS & SPIM
  Codifica istruzioni MIPS
    I-format


Load 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
MIPS & SPIM
  Codifica istruzioni MIPS
    I-format


Load word (2/2)




      Example
      Codice MIPS per caricare in $t la sesta word in memoria, con
      offset=0xBAC014
MIPS & SPIM
  Codifica istruzioni MIPS
    I-format


Load 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)
MIPS & SPIM
  Codifica istruzioni MIPS
    I-format


Store 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
MIPS & SPIM
  Codifica istruzioni MIPS
    I-format


Store 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)
MIPS & SPIM
  Codifica istruzioni MIPS
    I-format


Branch 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
MIPS & SPIM
  Codifica istruzioni MIPS
    I-format


Branch 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
MIPS & SPIM
  Codifica istruzioni MIPS
    J-format


Riepilogo




      1   Codifica istruzioni MIPS
            Formati di istruzione
            R-format
            I-format
            J-format
MIPS & SPIM
  Codifica istruzioni MIPS
    J-format


Unconditional jump


      jump
        Alto livello:       goto C
        Assembly:           j C
        Macchina:           0x2 C

      Example
      # goto L1

                    j L1
                    ...
          L1:       ...
MIPS & SPIM
  Codifica istruzioni MIPS
    J-format


Esercizi (1/2)




      Massimo
      Scrivere una procedura MIPS per il possibile codice dell’istruzione
      max $v0, $a0, $a1.
MIPS & SPIM
  Codifica istruzioni MIPS
    J-format


Esercizi (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
MIPS & SPIM
  Codifica istruzioni MIPS
    J-format


Esercizi (2/2)




      Minimo
      Scrivere una procedura MIPS per il possibile codice dell’istruzione
      min $v0, $a0, $a1.
MIPS & SPIM
  Codifica istruzioni MIPS
    J-format


Esercizi (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

More Related Content

Similar to Lezione3 - MIPS & SPIM Unicam

Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio cughetta
 
13 - Programmazione: Compendio C - C++
13 - Programmazione: Compendio C - C++13 - Programmazione: Compendio C - C++
13 - Programmazione: Compendio C - C++Majong DevJfu
 
Guida Alle Reti
Guida Alle RetiGuida Alle Reti
Guida Alle Reti
massimotto65
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
Pasquale Paola
 
Anatomia di un'istruzione in Arduino Pt.2
Anatomia di un'istruzione in Arduino Pt.2Anatomia di un'istruzione in Arduino Pt.2
Anatomia di un'istruzione in Arduino Pt.2
µhack
 
php: back to basics
php: back to basicsphp: back to basics
php: back to basics
Fabio Mora
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
Alberto Minetti
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
Daniele Mondello
 
TypeScript, ovvero JavaScript che "non si rompe"
TypeScript, ovvero JavaScript che "non si rompe"TypeScript, ovvero JavaScript che "non si rompe"
TypeScript, ovvero JavaScript che "non si rompe"
BENTOSA
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)STELITANO
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)STELITANO
 
Ecdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICTEcdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICT
Nino Lopez
 
Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)STELITANO
 

Similar to Lezione3 - MIPS & SPIM Unicam (13)

Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio c
 
13 - Programmazione: Compendio C - C++
13 - Programmazione: Compendio C - C++13 - Programmazione: Compendio C - C++
13 - Programmazione: Compendio C - C++
 
Guida Alle Reti
Guida Alle RetiGuida Alle Reti
Guida Alle Reti
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 
Anatomia di un'istruzione in Arduino Pt.2
Anatomia di un'istruzione in Arduino Pt.2Anatomia di un'istruzione in Arduino Pt.2
Anatomia di un'istruzione in Arduino Pt.2
 
php: back to basics
php: back to basicsphp: back to basics
php: back to basics
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
 
TypeScript, ovvero JavaScript che "non si rompe"
TypeScript, ovvero JavaScript che "non si rompe"TypeScript, ovvero JavaScript che "non si rompe"
TypeScript, ovvero JavaScript che "non si rompe"
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)
 
Ecdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICTEcdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICT
 
Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)
 

Lezione3 - MIPS & SPIM Unicam

  • 1. MIPS & SPIM MIPS & SPIM Modulo del Corso di Architettura degli Elaboratori Nicola Paoletti Universit` di Camerino a Scuola di Scienze e Tecnologie 5 Aprile 2011 AA 2010/2011
  • 2. MIPS & SPIM Lezioni 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. MIPS & SPIM Codifica istruzioni MIPS Riepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  • 4. MIPS & SPIM Codifica istruzioni MIPS Come 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. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzione Riepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  • 6. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzione R-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. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzione I-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. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzione I-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. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzione I-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. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzione J-format op address 6 bit 26 bit Address specifica l’indirizzo dell’istruzione a cui saltare.
  • 11. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzione Una 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. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzione noop noop Alto livello: Assembly: noop Macchina: 0x0
  • 13. MIPS & SPIM Codifica istruzioni MIPS R-format Riepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  • 14. MIPS & SPIM Codifica istruzioni MIPS R-format Addition add Alto livello: $d = $s + $t Assembly: add $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x20
  • 15. MIPS & SPIM Codifica istruzioni MIPS R-format Subtraction sub Alto livello: $d = $s - $t Assembly: sub $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x22
  • 16. MIPS & SPIM Codifica istruzioni MIPS R-format Multiplication 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. MIPS & SPIM Codifica istruzioni MIPS R-format Bitwise and and Alto livello: $d = $s & $t Assembly: and $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x24
  • 18. MIPS & SPIM Codifica istruzioni MIPS R-format Bitwise or or Alto livello: $d = $s | $t Assembly: or $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x25
  • 19. MIPS & SPIM Codifica istruzioni MIPS R-format Exclusive or xor Alto livello: $d = $s ^ $t Assembly: xor $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x26
  • 20. MIPS & SPIM Codifica istruzioni MIPS R-format Set on less than slt Alto livello: $d=($s < $t) Assembly: slt $d, $s, $t Macchina: 0x0 $s $t $d 0x0 0x2A
  • 21. MIPS & SPIM Codifica istruzioni MIPS I-format Riepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  • 22. MIPS & SPIM Codifica istruzioni MIPS I-format Add immediate addi Alto livello: $t = $s + C Assembly: addi $t, $s, C Macchina: 0x8 $s $t C
  • 23. MIPS & SPIM Codifica istruzioni MIPS I-format Load 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. MIPS & SPIM Codifica istruzioni MIPS I-format Load 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. MIPS & SPIM Codifica istruzioni MIPS I-format Load 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. MIPS & SPIM Codifica istruzioni MIPS I-format Load 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. MIPS & SPIM Codifica istruzioni MIPS I-format Load word (2/2) Example Codice MIPS per caricare in $t la sesta word in memoria, con offset=0xBAC014
  • 28. MIPS & SPIM Codifica istruzioni MIPS I-format Load 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. MIPS & SPIM Codifica istruzioni MIPS I-format Store 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. MIPS & SPIM Codifica istruzioni MIPS I-format Store 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. MIPS & SPIM Codifica istruzioni MIPS I-format Branch 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. MIPS & SPIM Codifica istruzioni MIPS I-format Branch 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. MIPS & SPIM Codifica istruzioni MIPS J-format Riepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  • 34. MIPS & SPIM Codifica istruzioni MIPS J-format Unconditional jump jump Alto livello: goto C Assembly: j C Macchina: 0x2 C Example # goto L1 j L1 ... L1: ...
  • 35. MIPS & SPIM Codifica istruzioni MIPS J-format Esercizi (1/2) Massimo Scrivere una procedura MIPS per il possibile codice dell’istruzione max $v0, $a0, $a1.
  • 36. MIPS & SPIM Codifica istruzioni MIPS J-format Esercizi (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. MIPS & SPIM Codifica istruzioni MIPS J-format Esercizi (2/2) Minimo Scrivere una procedura MIPS per il possibile codice dell’istruzione min $v0, $a0, $a1.
  • 38. MIPS & SPIM Codifica istruzioni MIPS J-format Esercizi (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