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
Scarica

Slides_14-15_ISA_Asm_Suggerimenti2