Corso di Laurea in Informatica Architettura degli elaboratori a.a. 2014-15 ISA e Asm: esempi e suggerimenti Obiettivi e suggerimenti • Capire come sono codificate le istruzioni a livello macchina e come possono essere rappresentate • Una istruzione macchina è sempre di 32 bit (1 Word) rappresentati spesso in esadecimale • Per capire che istruzione è e cosa fa: 1. 2. 3. • Convertire in binario Guardare il codice operativo (opcode) (primo field dell’istruzione, bit 31:26), che consente di capire di che tipo di istruzione si tratta e quindi come i bit successivi vadano raggruppati in field Guardare i singoli field, capirne il significato e capire in dettaglio cosa fa l’istruzione Come si fa? Suggerimenti: • • • Usare la tabella Fig. A.10.2 dell’Appendice A del Patterson-Hennessy (Appendice B in edizioni più recenti rispetto a quella disponibile sul sito) La tabella è piuttosto complicata. Concentrarsi sulla prima colonna con intestazione op(31:26) e, se serve, sulla sesta con intestazione func(5:0). Le altre colonne sono relative a istruzioni “strane” che non saranno oggetto di esame (ma non è una cattiva idea guardarne qualcuna...) Cercare in Appendice A l’istruzione, ricavando il formato e il significato A.A 2014-15 ISA (esempi e suggerimenti) 2 Esempio 1 (istruzione R-type) • • • • • • • • Istruzione hex: 0x010a4822 Binario: 00000001000010100100100000100010 opcode: 000000 ovvero 0x00 ovvero 0 Dalla tabella (Fig. A.10.2, colonna 1): si capisce che è una istruzione di tipo R funct: 100010 ovvero 0x22 ovvero 34 Dalla tabella, colonna 6: istruzione “sub” Cercare “sub” in Appendice: Subtract Quindi i campi successivi a opcode sono: • L’istruzione: • Formati asm: • • • • • • • • primo registro sorgente (5 bit) 01000 ovvero 0x08 ovvero 8 secondo registro sorgente (5 bit) 01010 ovvero 0x0a ovvero 10 registro destinazione (5 bit) 01001 ovvero 0x09 ovvero 9 il campo shamt non è rilevante per questa istruzione sottrae il contenuto del registro 10 dal contenuto del registro 8 mette il risultato nel registro 9 sub $9, $8, $10 sub $t1, $t0, $t2 (vedere Fig. A.6.1) A.A 2014-15 ISA (esempi e suggerimenti) 3 Esempio 2 (istruzione I-type) • • • • • Istruzione hex: 0xad0a0000 Binario: 10101101000010100000000000000000 opcode: 101011 ovvero 0x2b ovvero 43 Dalla tabella (Fig. A.10.2, colonna 1): istruzione “sw” Cercare “sw” in Appendice: Store word, da cui si capisce che: • è una istruzione che fa riferimento a memoria (formato I) • Quindi i campi successivi a opcode sono: • • • registro base (5 bit) 01000 ovvero 0x08 ovvero 8 registro sorgente (5 bit) 01010 ovvero 0x0a ovvero 10 offset (spiazzamento) rispetto al registro base (16 bit) 0000000000000000 • L’istruzione: • • memorizza il contenuto del registro 10 all’indirizzo ottenuto sommando offset e contenuto del registro base • Formati asm: • • sw $10, 0($8) sw $t2, 0($t0) (vedere Fig. A.6.1) A.A 2014-15 ISA (esempi e suggerimenti) 4