Lucidi suggerimenti - e-Learning
Transcript
Lucidi suggerimenti - e-Learning
Corso di Laurea in Informatica Architettura degli elaboratori a.a. 2013-14 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 simulatore (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 i simulatore 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 2013-14 lAsm (suggerimenti 2) 2 Istruzioni base e pseudoistruzioni • Non eludibile : • 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 • 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 2013-14 Asm (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 2013-14 Asm (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 2013-14 Asm (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 2013-14 Asm (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 2013-14 Asm (suggerimenti 2) 7