Architetture dei Calcolatori (Lettere. Installazione di SPIM. Interfaccia Grafica



Documenti analoghi
Calcolatori Elettronici

Il simulatore SPIM SPIM

[

Laboratorio di Architettura degli Elaboratori

L ambiente di simulazione SPIM

Le costanti Le modalità di indirizzamento L assembly del MIPS

Assembler di Spim. Assembler di SPIM. Struttura di un programma assembler. Direttive

Calcolatori Elettronici A a.a. 2008/2009

Lezione laboratorio SPIM

L ambiente di simulazione SPIM

Calcolatori Ele,ronici Lezione del 15/11/2012. Emiliano Casalicchio

Calcolatori Ele,ronici Lezione 6 17/11/2011. Emiliano Casalicchio

ARCHITETTURA DEGLI ELABORATORI II - LABORATORIO

MIPS Instruction Set 2

Il linguaggio assembly

26 April CHIAMATA A PROCEDURE PROCEDURE ANNIDATE PROCEDURA RICORSIVE I. Frosio

Assembly III SPIM: un ambiente di simulazione MIPS

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Modalità di indirizzamento

Calcolatori Elettronici Parte X: l'assemblatore as88

Università degli Studi di Roma La Sapienza Architettura degli elaboratori II

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali

System calls. Università degli Studi di Milano Corso di Laurea in Informatica, A.A Homepage del corso

System calls. Università degli Studi di Milano Corso di Laurea in Informatica, A.A Homepage del corso

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

Architettura del calcolatore

CALCOLATORI ELETTRONICI II

Appunti per il corso di Laboratorio di informatica: Architetture

Linguaggio Assembler MIPS

COMPILAZIONE DI UN APPLICAZIONE. 1) Compilare il file (o i file se più d uno) che contengono il testo del programma. compilatore

Dal sorgente all eseguibile I programmi Assembly

Università degli Studi di Roma La Sapienza

La macchina programmata Instruction Set Architecture (1)

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

Introduzione alla programmazione in C

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Java: Compilatore e Interprete

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino

Introduzione al linguaggio C Gli array

Assembly MIPS: gestione degli array strutture di controllo. A. Borghese, F. Pedersini Dipartimento di Informatica Università degli Studi di Milano

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

CPU. Maurizio Palesi

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO XI.2015

ToolChain: Come Generare Applicazioni in Linguaggio Macchina

L architettura del calcolatore (Prima parte)

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000

Esempio di moltiplicazione come somma e spostamento

System Calls, Register Spilling

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

Elementi di Architettura e Sistemi Operativi

Dispensa di Informatica I.1

Architettura degli elaboratori (A)

Funzioni in C. Violetta Lonati

LINGUAGGI DI PROGRAMMAZIONE

Programmare in Java. Olga Scotti

25 March : LABORATORIO 02 ISTRUZIONI DI LETTURA E SCRITTURA DELLA MEMORIA, ARRAY REGISTER SPILLING D I/O DIRETTIVE ASSEMBLY. I.

Integer Java Virtual Machine (IJVM)

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Il Processore: i registri

Progetto MIPS/SPIM. Descrizione. Questa tipologia di progetto consiste in

Linguaggio C. Fondamenti. Struttura di un programma.

Ing. Paolo Domenici PREFAZIONE

Von Neumann. John Von Neumann ( )

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Architettura hardware

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

INFORMATICA 1 L. Mezzalira

PIANO DI LAVORO DEI DOCENTI

Il microprocessore 8086

Architettura di tipo registro-registro (load/store)

Dal sorgente all eseguibile I programmi Assembly

FONDAMENTI di INFORMATICA L. Mezzalira

puntatori Lab. Calc. AA 2007/08 1

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput

ASSEMBLER 68K parte 1

Parte II.2 Elaboratore

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

MODELLO DLX IN UNISIM

Linguaggio Assembler MIPS

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Funzioni. Il modello console. Interfaccia in modalità console

Il protocollo MODBUS. Il protocollo MODBUS Pag. 1 di 11

Allocazione dinamica della memoria - riepilogo

Informazione analogica e digitale

Sistema operativo: Gestione della memoria

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Laboratorio di Architettura degli Elaboratori - A.A. 2012/13

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Calcolatori Elettronici

Architettura degli Elaboratori II - Laboratorio

Laboratorio di Informatica

Corso di Visual Basic (Parte 8)

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Rappresentazione dell informazione Codifica Binaria

Transcript:

SPIM Architetture dei Calcolatori (Lettere A-I) SPIM Ing.. Francesco Lo Presti Simulatore che esegue programmi assembler per architetture RISC MIPS R2000/R3000 Legge programmi in assembler MIPS e li traduce in linguaggio macchina Completo di Direttive e Pseudoistruzioni Esegue le istruzioni macchina Mostra il contenuto dei registri e della memoria Permette il debugging dei programi Fornisce servizi elementari OS-like, come I/O da console SPIM 2 Installazione di SPIM Interfaccia Grafica Codice e materiale sono disponibili all URL http://www.cs.wisc.edu/~larus/spim.html Oltre che sul sito del corso Installazione su Windows unzip il file PCSpim.zip Eseguire il programma setup.exe Il simulatore SPIM si presenta organizzato in due finestre visuali, una chiamata console che funge da terminale per le operazioni di input /output e l altra che mostra lo stato del processore MIPS e della memoria organizzata in quattro pannelli: Il display dei registri Il segmento di testo Il segmento di dati e dello stack Il pannello dei messaggi SPIM 3 SPIM 4

Il display dei registri Mostra lo stato di tutti i registri della CPU e della FPU del MIPS. Il contenuto dei registri è codificato in esadecimale ed è aggiornato ogni volta che il programma interrompe la sua esecuzione, ovvero quando il programma termina; produce un errore; raggiunge un breakpoint definito dall utente. SPIM 5 SPIM 6 Uso della memoria in SPIM Il segmento di testo sp-> gp-> 0x7fffffff 0x7fffeffc 0x10010000 0x10008000 0x10000000 riservata stack dati dinamici (heap) dati statici Segmento testo (istruzioni) Mostra la porzione di memoria in cui è memorizzato il programma da eseguire (a partire dalla locazione 0x0040000). Tale programma è costituito dal codice utente più una parte di codice di sistema che si occupa della gestione della riga di comando e della terminazione. Una generica riga di questo segmento ha il seguente formato: Numero di riga del programma contenente l istruzione [0x00400004] 0x8fa40000 lw $4,0($29); 89: lw $a0,0($sp) PC-> 0x00400000 riservata Indirizzo dell istruzione Codifica dell istruzione in linguaggio macchina Descrizione mnemonica dell istruzione Codifica dell istruzione in linguaggio assembler 0x00000000 SPIM 7 SPIM 8

Segmento di dati e stack SPIM: Comandi Mostra lo stato della memoria riservata ai dati (segmento dati) e allo stack del programma. Per facilitarne la lettura, ogni rigo di tali segmenti mostra il contenuto (in esadecimale) di 4 locazioni di memoria consecutive (1 locazione ~ 1 word ~ 4 byte ~ 1 registro) Queste locazioni sono ordinate in maniera crescente da sinistra verso destra. Ogni locazione, essendo questa una word e poiché il MIPS indirizza il singolo byte, rappresenta a sua volta 4 locazioni consecutive che sono invece ordinate da destra verso sinistra endianess dipende dall architettura Intel su cui gira PCSPIM SPIM 9 Apre un file sorgente File -> Open Esecuzione Programmi -> Set Value : per impostare il valore di registri/memoria Per far partire un programma impostare PC= 0x00400000 inizio segmento testo -> Go : esegue il programma caricato -> Break : interrompe l esecuzione -> Clear Registers e Reinitialize : reset registri/memoria per nuovi run -> Reload : Rilegge file sorgente -> Single Step/Multiple Step : per esecuzione passo/passo -> Breakpoints : imposta breakpoints Notes: Se Load trap file e impostato in Simulator -> Settings e presente anche il codice per la gestione delle eccezioni SPIM 10 Programmi di esempio SPIM disponibili Struttura di un programma SPIM I file di esempio includono 18 esempi di programmi MIPS in ordine di complessita crescente 1. add2numbersprog1 2. add2numbersprog2 3. storewords 4. swap2memorywords 5. branchjump 6. systemcalls 7. overflow 8. averageofbytes 9. printloop 10. sumofsquaresprog1 11. sumofsquaresprog2 12. sumofsquaresprog3 13. proccallsprog1 14. proccallsprog1modified 15. proccallsprog2 16. addfirst100 17. factorialnonrecursive 18. factorialrecursive SPIM 11 Formato tipico.globl main # user program code # user program data #code section #starting point: must be global #data section SPIM 12

Direttive Direttive Le direttive forniscono all assemblatore assemblatore delle indicazioni sul contenuto di un file (istruzioni, strutture dati, ) Sintatticamente, le direttive iniziano con il carattere. <addr> Memorizza gli elementi successivi nel segmento testo dell utente, a partire dall indirizzo addr (questi elementi possono essere solo istruzioni o parole) Gli elementi successivi alla direttiva sono memorizzati nel segmento dati.globl sym Dichiara sym come etichetta globale (ad essa è possibile fare riferimento da altri file) SPIM 13 Principali direttive per l allocazione l di dati inizializzati.word w1,, wn Memorizza gli n valori su 32 bit w1,, wn in parole consecutive.byte b1,, bn Memorizza gli n valori b1,, bn in byte consecutivi.asciiz str Memorizza la stringa str terminandola con il carattere Null (ascii str ha lo stesso effetto, ma non aggiunge Null).space n Alloca uno spazio di n byte nel segmento dati.align n Allinea il dato successivo a blocchi di 2 n byte SPIM 14 Etichette Direttive/Etichette: esempi Introduce un identificatore e lo associa al punto del programma (indirizzo)) a cui si riferisce Consiste di un identificatore seguito dal simbolo : Main, loop, Array Puo avere visibilita Locale: referenziabile solo all interno del file in cui e e definita Globale: referenziabile anche da altri file Richiede.globl Gli identificatori possono essere usati nelle istruzioni/dati per fare riferimento alla posizione di programma associata # Sommare le variabili x ed y.globl main lw $t1, x # legge x in $t1 lw $t2, y # legge y in $t2 add $t0, $t1, $t2 # calcola somma sw $t0, z # salva il risulato in z jr $ra # ritorna x:.word 5 y:.word 7 z:.word 0 # variabile x # variabile y # variabile z SPIM 15 SPIM 16

MIPS Assembler: Modalita di indirizzamento memoria per operazioni load/store Direttive/Etichette: esempi ISA MIPS supporta solo: c(rx) ) (lw( $t0, 4($s0)) L assembler MIPS supporta modalita d indirizzamento piu flessibili tramite pseudoistruzioni: Formato Indirizzo # Somma valori in un array.globl main li $s0,10 la $s1, array add $s2, $zero, $zero add $t2, $zero, $zero # load immediate (pseudoistruzione) # load address (pseudoistruzione) # contatore ciclo # somma=0 1. (registro) 2. Immediato 3. Immediato(registro) 4. Etichetta 5. Etichetta±immediato immediato 6. Etichetta±immediato(registro immediato(registro) 1. Contenuto registro 2. Valore immediato 3. Valore immediato+contenuto registro 4. Indirizzo etichetta 5. Indirizzo etichetta±valore immediato 6. Indirizzo etichetta±(valore immediato+contenuto registro) loop: array: lw $t1, 0($s1) # accesso all array array add $t2, $t1, $t2 # incremento somma addi $s1, $s1, 4 # $s1: indice del prossimo elemento addi $s2, $s2, 1 # incremento contatore ciclo bne $s2, $s0, loop # test termine ciclo jr $ra # ritorna.word 1,2,3,4,5,6,7,8,9,10 # dichiarazione array # array rappresenta l indirizzo l del primo elemento SPIM 17 SPIM 18 Chiamate di Sistema SPIM Codici Chiamate di Sistema SPIM Chiamete di Sistema: syscall Servizi OS-like Service print_int Code (put in $v0) 1 Arguments $a0=integer Result Invocazione Caricare il codice chiamata nel registro $v0 (vedi( tabella prossimo lucido) Caricare gli argomenti nei registri $a0,,, $a3 Eseguire l istruzione syscall La chiamata restituisce un valore nel registro $v0, o $f0 nel caso di risultati floating point print_float print_double print_string read_int read_float read_double read_string 2 3 4 5 6 7 8 $f12=float $f12=double $a0=addr addr.. of string $a0=buffer, $a1=length int in $v0 float in $f0 double in $f0 sbrk 9 $a0=amount addr in $v0 exit 10 SPIM 19 SPIM 20

Chiamate di Sistema: Esempio # Lettura intero da tastiera.globl main li $v0,4 la $a0, Stringa syscall li $v0,5 syscall jr $ra # codice per print_string # indirizzo stringa # chiamata di sistema # codice per read_int # chiamata di sistema # ritorna Stringa:.asciiz Inserisci un numero # Stringa da stampare SPIM 21