Il simulatore SPIM SPIM



Похожие документы
Le costanti Le modalità di indirizzamento L assembly del MIPS

L ambiente di simulazione SPIM

Calcolatori Elettronici A a.a. 2008/2009

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

Assembly III SPIM: un ambiente di simulazione MIPS

Laboratorio di Architettura degli Elaboratori

MIPS Instruction Set 2

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

ARCHITETTURA DEGLI ELABORATORI II - LABORATORIO

Calcolatori Elettronici Parte X: l'assemblatore as88

Linguaggio Assembler MIPS

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

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

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

ToolChain: Come Generare Applicazioni in Linguaggio Macchina

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

costruttori e distruttori

CALCOLATORI ELETTRONICI II

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

Architettura del calcolatore

CPU. Maurizio Palesi

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

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

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler

CALCOLATORI ELETTRONICI 29 giugno 2010

Linguaggio Assembler MIPS

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

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica

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

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Università degli Studi di Roma La Sapienza

Protezione. Protezione. Protezione. Obiettivi della protezione

Corso di Laurea in Matematica. Seminario C/C++ Lorenzo Dusty Costa. Università degli Studi di Milano Dipartimento di Matematica

3) Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde?

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

Integer Java Virtual Machine (IJVM)

Funzioni. Il modello console. Interfaccia in modalità console

Ing. Paolo Domenici PREFAZIONE

Esempio di moltiplicazione come somma e spostamento

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

Manuale per il Farmacista

Introduzione al Linguaggio C

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Corso di Visual Basic (Parte 8)

Architettura degli elaboratori (A)

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

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

Installazione e caratteristiche generali 1

Le procedure ricorsive Come eseguire un programma. Architettura degli Elaboratori e delle Reti, Turno I

Assembly. Motivazioni. Programmazione Assembly

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Lab 11 Gestione file di testo"

ESERCIZIO 1 1. Traccia 1. Analisi 2. Codifica programma 7. frame nel seguente modo: il primo byte dice la lunghezza complessiva del frame,

PIANO DI LAVORO DEI DOCENTI

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

SPECIFICHE E LIMITI DI EXCEL

ESERCIZIO 1 Riferimento: PROCESSORE PIPELINE e CAMPI REGISTRI INTER-STADIO

Sottosistema di Ingresso/Uscita (I/O)

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico pagina 1


(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Dipartimento Politiche Sociali e della Salute OSSERVATORIO SOCIALE SULLA CONCERTAZIONE TERRITORIALE. Manuale del software Utente Lettore Vers. 4.

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

Il Software. Il software del PC. Il BIOS

ESERCIZIO 1 Riferimento: PROCESSORE PIPELINE e CAMPI REGISTRI INTER-STADIO

Compilatore risorse display grafico LCD serie IEC-line

CALCOLATORI ELETTRONICI 15 aprile 2014

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

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Variabili e tipi di dato

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Funzioni in C. Violetta Lonati

Транскрипт:

Il simulatore SPIM Architetture dei Calcolatori (lettere A-I) SPIM SPIM: un simulatore per eseguire programmi assembler scritti per processori MIPS32 Download e materiale relativo alla pagina Web http://www.cs.wisc.edu/~larus/spim.html (versione 7.1) Piattaforme: Sistemi Linux e Unix spim (a riga di comando), xspim (interfaccia grafica) Microsoft Windows (Windows 98, NT, 2000, XP) PCspim (interfaccia grafica) SPIM accetta un programma scritto in linguaggio assembler, completo di direttive e pseudoistruzioni SPIM dispone di un debugger che consente di inserire breakpoint e di eseguire a singoli passi Valeria Cardellini 1

Presenta 4 pannelli Interfaccia grafica Register display Registri generali Registri floating-point a precisione doppia Registri floating-point a precisione singola Segmento text Visualizza istruzioni sia di programma sia di sistema (caricate automaticamente quando parte SPIM) [0x00400000] 0x8fa40000 lw $4, 0($29) ; 140: lw $a0, 0($sp) Indirizzo esadecimale dell istruzione in memoria Codifica dell istruzione in esadecimale Descrizione mnemonica dell istruzione La linea dal file assembler Valeria Cardellini 2 Interfaccia grafica (2) Segmenti dati e stack Dati in memoria e nello stack Messaggi Per eseguire il programma Go Esegue l intero programma Single step Esegue una singola istruzione Multiple step Esegue un numero multiplo di istruzioni (specificato dall utente) Breakpoint Per bloccare l esecuzione del programma immediatamente prima dell esecuzione di una determinata istruzione Valeria Cardellini 3

Direttive Le direttive forniscono all assemblatore delle indicazioni sul contenuto di un file (istruzioni, strutture dati, ) Sintatticamente, le direttive iniziano con il carattere..data Gli elementi successivi alla direttiva sono memorizzati nel segmento dati Prima delle direttive è possibile specificare delle etichette, corrispondenti agli indirizzi di memoria in cui verranno allocati i dati Principali direttive per l allocazione 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) Valeria Cardellini 4 Direttive (2).space n Alloca uno spazio di n byte nel segmento dati.align n Allinea il dato successivo a blocchi di 2 n byte.globl sym Dichiara sym come etichetta globale (ad essa è possibile fare riferimento da altri file).text <addr> Memorizza gli elementi successivi nel segmento testo dell utente, a partire dall indirizzo addr (questi elementi possono essere solo istruzioni o parole) Valeria Cardellini 5

Direttive: esempio # Somma valori in un array.data array:.word 1,2,3,4,5,6,7,8,9,10 # dichiarazione array # array rappresenta l indirizzo del primo elemento.text.globl main main: li $s0,10 la $s1, array add $s2, $zero, $zero add $t2, $zero, $zero # load immediate (pseudoistruzione) # load address (pseudoistruzione) # contatore ciclo # somma loop: lw $t1, 0($s1) # accesso all 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 Valeria Cardellini 6 System call Sono disponibili delle chiamate di sistema (system call) predefinite che implementano particolari servizi (ad es. stampa a video) Ogni system call ha: Codice (da caricare in $v0) Argomenti (opzionali, da caricare in $a0-$a3) Valori di ritorno (opzionali, in $v0) print_int Stampa sulla console il numero intero passato come argomento print_string Stampa sulla console la stringa passata come argomento, terminandola con il carattere Null read_int Legge una linea in ingresso fino al carattere a capo incluso I caratteri che seguono il numero sono ignorati Valeria Cardellini 7

System call (2) read_string Legge una stringa di caratteri di lunghezza $a1, scrivendoli in un buffer ($a0) e terminando la stringa con il carattere Null Se ci sono meno caratteri, li legge fino al carattere a capo incluso e termina con il carattere Null sbrk Restituisce il puntatore (indirizzo) ad un blocco di memoria exit Termina l esecuzione del programma Per richiedere un servizio ad una occorre: Caricare il codice della nel registro $v0 Caricare gli argomenti nei registri $a0-$a3 Eseguire L eventuale valore di ritorno è caricato nel registro $v0 Valeria Cardellini 8 System call: esempio # Programma che stampa: la risposta è 5.data str:.asciiz la risposta è.text li $v0, 4 la $a0, str li $v0, 1 li $a0, 5 li $v0, 10 # $v0 caricato con codice di print_string # $a0 caricato con indirizzo della stringa # stampa della stringa # $v0 caricato con codice di print_int # $a0 caricato con intero da stampare # $v0 caricato con codice di exit Valeria Cardellini 9