Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoAda Pellegrini Modificato 8 anni fa
1
Corso di Laurea in Informatica Architettura degli elaboratori a.a. 2015-16 ISA e Asm: esempi e suggerimenti
2
Appendice A o B? Appendice B Patterson- Hennessy Gli assemblatori, il linker e il simulatore SPIM Fondamentale per: Funzionalità della catena di programmazione Descriizone di funnzioni e formati delle istruzioni asm Imparate a usarla!!! Potrete usarla in sede di esame/compitino La troverete sul desktop Attenzione: nelle edizioni vecchie si chiama Appendice A Su Moodle la trovate come Appendice A In questi lucidi è chiamata Appendice A A.A 2015-16ISA - ASM (esempi e suggerimenti)2
3
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.Convertire in binario 2.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 3.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 2015-16ISA - ASM (esempi e suggerimenti)3
4
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: 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 L’istruzione: sottrae il contenuto del registro 10 dal contenuto del registro 8 mette il risultato nel registro 9 Formati asm: sub $9, $8, $10 sub $t1, $t0, $t2 (vedere Fig. A.6.1) A.A 2015-16ISA - ASM (esempi e suggerimenti)4
5
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 2015-16ISA - ASM (esempi e suggerimenti)5
6
Leggere e scrivere programmi “Non eludibile”: saper leggere semplici programmi (“cosa fa”) Per imparare a farlo: Prendere programmi già scritti (dal testo o dalle esercitazioni o dal materiale di Laboratorio) Farli girare usando un emulatore (SPIM o MARS) Guardare bene cosa succede (contenuti della memoria e dei registri) andando in step-by-step Provare a fare qualche variazione dei programmi NB: Molti esempi non fanno operazioni di I/O. Per capire cosa fanno, usare l’emulatore e, a fine esecuzione, guardare i contenuti delle variabili e/o dei registri che devono contenere il risultato. “Approfondimento”: saper scrivere un programma dato il problema da risolvere Provare a scrivere autonomamente qualche semplice programma NB: ai fini dell’esame: la parte non eludibile comprende la lettura di qualche semplice frammento di codice e la comprensione di “cosa fa”. E’ poco probabile riuscire a farlo se non si è provato a scrivere qualche programma!!! L’approfondimento riguarda la capacità di scrivere un programma in sede di esame (quindi risolvendo in tempo limitato un problema). A.A 2015-16ISA - ASM (esempi e suggerimenti)6
7
Istruzioni “base” e pseudoistruzioni “Non eludibile”: conoscere i tipi principali di istruzioni ISA e le corrispondenti rappresentazioni simboliche Asm (istruzioni “base”) Per le istruzioni logiche (and, or, shift etc) vedere esempi in Laboratorio Per le altre...guardare i programmi esempio “Non eludibile”: Differenza tra pseudoistruzioni e istruzioni “base” Chi traduce le pseudoistruzioni in istruzioni base “Non eludibile”: Saper trovare la definizione delle istruzioni in Appendice A (che potrete usare nei compitini e nell’esame) Suggerimento: quando si esegue un programma, guardare: le istruzioni sorgente le istruzioni base corrispondenti capire cosa fanno le istruzioni base che corrispondono a una pseudoistruzone (esempi: lw, sw...) è essenziale per capire esattamente cosa fa un programma e seguirne l’esecuzione step-by-step Approfondimento Esempi di possibili traduzioni da pseudo istruzioni a istruzioni base A.A 2015-16ISA - ASM (esempi e suggerimenti)7
8
Strutture di controllo “Non eludibile”: realizzazione di strutture di controllo in Asm Capitolo 2.7 del Patterson-Hennessy (ed. 4 o edizione italiana) Lucidi Esercitazioni Esercizi in Laboratorio di Programmazione Assembly...e provare a scrivere qualche semplicissimo programma, usando vari tipi di istruzioni branch etc. loop di vario genere if-then-else... Commento: in un linguaggio di alto livello, “if”, “then”, “else”, “while”, “for” etc. sono parole chiave del linguaggio con una semantica ben definita in un programma Asm possono comparire, ma sono semplicemente etichette che di per sé non hanno un significato specifico Es: una etichetta cui saltare può essere chiamata “then” o “pippo”...non cambia niente, se non la leggibilità del programma A.A 2015-16ISA - ASM (esempi e suggerimenti)8
9
Catena programmativa “Non eludibile”: capire bene chi fa cosa nella catena programmativa “Non eludibile”: Direttive (.data) e istruzioni eseguibili (.text) Appendice A Vedere esempi in Laboratorio (Inizializzazioni) Ogni volta che si esegue un programma, guardare: cosa c’è in memoria (Data segment) prima dell’esecuzione come cambiano i contenuti della memoria durante l’esecuzione A.A 2015-16ISA - ASM (esempi e suggerimenti)9
10
Procedure (II compitino) Come realizzare procedure in Asm Capitolo 2.8 del Patterson-Hennessy (ed. 4 o edizione italiana) Lucidi Esercitazione 4 Esercizi in Laboratorio di Programmazione Assembly Concetti base (“non eludibili”) Supporto hw per le procedure (jal) Convenzioni di uso dei registri per il passaggio parametri Esempi elementari di procedure non innestate Passaggio parametri “by value” e “by reference” (esempi sui vettori) Approfondimenti Uso dello stack Esempi elementari di procedure innestate Uso dello stack per il salvataggio di $ra Uso dello stack per il salvataggio dei registri Uso dello stack per variabili locali alla procedura A.A 2015-16ISA - ASM (esempi e suggerimenti)10
11
Syscall (II compitino) In un sistema reale esiste il Sistema Operativo...che è un programma (che lavora in modo privilegiato, etc.) un programma si scrive usando chiamate a funzioni di SO (“Syscall”) che realizzano specifici servizi (I/O, gestione memoria etc.) I simulatori MARS e SPIM forniscono alcune Syscall è come se sulla macchina MIPS simulata esistesse già un pezzetto di OS Un servizio di sistema si richiede in modo simile a una chiamata di procedura in $v0 si imposta quale servizio si vuole invocare vedere tabella delle Syscall: testo Appendice B (ex A) figura B.9.1, oppure help on-line di MARS si impostano eventuali altri argomenti di chiamata si scrive “syscall” Esempi: Laboratorio: Fibonacci, Ciclo.2 e altri) Approfondimenti syscall è una istruzione (codice macchina: 0x0000000c) che genera una eccezione (Patterson cap. 4.9) le eccezioni producono il “salto” a parti di OS che lavorano in modo privilegiato (“kernel mode”) Scrivere qualche programma che usa syscall per fare operazioni di I/O A.A 2015-16ISA - ASM (esempi e suggerimenti)11
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.