Your SlideShare is downloading. ×
Lezione3 - MIPS & SPIM Unicam
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Lezione3 - MIPS & SPIM Unicam

906
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
906
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
60
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. 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. MIPS & SPIM Codifica istruzioni MIPSRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  • 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. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzioneRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  • 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. 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. 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. 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. 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. 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. MIPS & SPIM Codifica istruzioni MIPS Formati di istruzionenoop noop Alto livello: Assembly: noop Macchina: 0x0
  • 13. MIPS & SPIM Codifica istruzioni MIPS R-formatRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  • 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. 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. 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. 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. 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. 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. 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. MIPS & SPIM Codifica istruzioni MIPS I-formatRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. MIPS & SPIM Codifica istruzioni MIPS J-formatRiepilogo 1 Codifica istruzioni MIPS Formati di istruzione R-format I-format J-format
  • 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. 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. 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. 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. 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