Architettura SPIM.key - Università degli Studi di Ferrara

Architettura degli elaboratori!
!
Utilizzo di SPIM
12/3/14
Dr. Francesco Giacomini e Dr. Matteo Manzali
Università degli Studi di Ferrara
SPIM
•
SPIM è un simulatore che esegue programmi per le architetture
R2000 e R3000
•
Può leggere ed eseguire programmi scritti in linguaggio assembly
MIPS
•
Permette di analizzare il funzionamento dei programmi con
funzionalità di debugger (breakpoints, step by step, etc…)
•
E’ disponibile su diversi sistemi operativi (Windows, OSX, Linux)
•
Si può scaricare dalla seguente pagina: http://sourceforge.net/
projects/spimsimulator/files/
Dr. Francesco Giacomini e Dr. Manzali Matteo - Università degli Studi di Ferrara
!2
Panoramica
Dr. Francesco Giacomini e Dr. Manzali Matteo - Università degli Studi di Ferrara
!3
Istruzioni
Dr. Francesco Giacomini e Dr. Manzali Matteo - Università degli Studi di Ferrara
!4
Registri
Dr. Francesco Giacomini e Dr. Manzali Matteo - Università degli Studi di Ferrara
!5
Messaggi
Dr. Francesco Giacomini e Dr. Manzali Matteo - Università degli Studi di Ferrara
!6
Tutorial
•
Creare, con un editor di testo, un file contenente il seguente
codice:
main:
addi $t0, $zero, 2
addi $t1, $zero, 3
add $t2, $t0, $t1
!
•
Salvatelo dove preferite con estensione .s o .asm o .a
Dr. Francesco Giacomini e Dr. Manzali Matteo - Università degli Studi di Ferrara
!7
Tutorial
•
Aprite con SPIM il file appena salvato
•
Nella finestra delle istruzioni vedrete l’assembly appena caricato:
!
!
!
!
•
Istruzione jal: jump and link (chiamata di funzione)
Dr. Francesco Giacomini e Dr. Manzali Matteo - Università degli Studi di Ferrara
!8
Tutorial
•
Per poter osservare l’esecuzione del programma istruzione per
istruzione, inserite un breakpoint all’inizio del main
•
Cliccate col tasto destro del mouse sulla riga di codice in cui
volete che l’esecuzione si fermi, nel nostro caso l’istruzione è:
jal 0x00400024 [main]
•
Scegliete la voce “Set Breakpoint”
•
Dovreste vedere un identificativo che indica il breakboint sulla riga
dell’istruzione scelta
Dr. Francesco Giacomini e Dr. Manzali Matteo - Università degli Studi di Ferrara
!9
Tutorial
•
Dovreste vedere un identificativo che indica il breakpoint sulla riga
dell’istruzione scelta:
Dr. Francesco Giacomini e Dr. Manzali Matteo - Università degli Studi di Ferrara
!10
Tutorial
•
Ora potete lanciare l’esecuzione del programma cliccando sul
tasto “Run” o tramite menù a tendina
•
Una volta che l’esecuzione raggiunge il breakpoint si ferma e vi
chiederà se preferite continuare, eseguire istruzione per istruzione
oppure abortire
•
Scegliete l’esecuzione istruzione per istruzione (“Single Step”)
Dr. Francesco Giacomini e Dr. Manzali Matteo - Università degli Studi di Ferrara
!11
Tutorial
•
Ora è stato effettuato il salto (istruzione jal)
•
Controllando i registri (quelli interessati da questo tutorial sono
$t0, $t1 e $t2) si può notare che non sono stati ancora modificati
•
Cliccate sul tasto Single Step (pulsante con le tre linee)
•
E’ appena stata eseguita l’operazione di somma tra il registro zero e il valore 2, il risultato compare nel registro t0:
Dr. Francesco Giacomini e Dr. Manzali Matteo - Università degli Studi di Ferrara
!12
Tutorial
•
Cliccate sul tasto Single Step altre due volte (in modo da eseguire
le restanti due operazioni caricate da file)
•
Ci si aspetta come risultato di trovare in t2 la somma di 2 (registro
t0) e 3 (registro t1):
Dr. Francesco Giacomini e Dr. Manzali Matteo - Università degli Studi di Ferrara
!13
Tutorial
•
Per rieseguire il programma (e resettare i registri) c’è un pulsante
chiamato “Clear Registers”
•
Cliccando su Clear Registers verrà comunque mantenuto in
memoria il programma caricato
•
Se invece si desidera caricare un nuovo programma è necessario
utilizzare il tasto “Reinitialize Simulator”, che porterà SPIM nel suo
stato di avvio
Dr. Francesco Giacomini e Dr. Manzali Matteo - Università degli Studi di Ferrara
!14