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
© Copyright 2025 ExpyDoc