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