Corso di Laurea in Informatica Architettura degli elaboratori a.a. 2014-15 Asm: suggerimenti (2) 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 2014-15 lAsm (suggerimenti 2) 2 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 • 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 2014-15 lAsm (suggerimenti 2) 3 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 2014-15 lAsm (suggerimenti 2) 4 Procedure • • • • • 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 2014-15 lAsm (suggerimenti 2) 5 Catena programmativa • “Non eludibile”: capire bene chi fa cosa nella catena programmativa • Direttive (.data) e istruzioni eseguibili (.text) • 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 2014-15 lAsm (suggerimenti 2) 6 Syscall • 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 2014-15 lAsm (suggerimenti 2) 7