Manuale EduMIPS64
-
Upload
angelo-giuseppe-spinosa -
Category
Documents
-
view
50 -
download
0
description
Transcript of Manuale EduMIPS64
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 1/35
Manuale utente di EduMIPS64
di Andrea Spadaccini
Traduzione italiana di Simona Ullo
Versione 1, 15 Marzo 2007
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 2/35
Indice
1 Introduzione 7
2 Formato dei file sorgenti 8
2.1 Sezioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.1 La sezione .data . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.2 La sezione .code . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.3 Il comando #include . . . . . . . . . . . . . . . . . . . . . 12
3 Il repertorio delle istruzioni 13
3.1 Istruzioni ALU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Istruzioni Load/Store . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 Istruzioni di controllo del flusso . . . . . . . . . . . . . . . . . . . 20
3.4 L’istruzione SYSCALL . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4.1 SYSCALL 0 - exit() . . . . . . . . . . . . . . . . . . . . . 22
3.4.2 SYSCALL 1 - open() . . . . . . . . . . . . . . . . . . . . . 22
3.4.3 SYSCALL 2 - close() . . . . . . . . . . . . . . . . . . . . 23
3.4.4 SYSCALL 3 - read() . . . . . . . . . . . . . . . . . . . . . 23
3.4.5 SYSCALL 4 - write() . . . . . . . . . . . . . . . . . . . . 24
3.4.6 SYSCALL 5 - printf() . . . . . . . . . . . . . . . . . . . 24
3.5 Altre istruzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 3/35
3.5.1 BREAK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5.2 NOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5.3 TRAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5.4 HALT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4 L’interfaccia utente 27
4.1 La barra del menu . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1.1 File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1.2 Esegui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.1.3 Configura . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1.4 Strumenti . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1.5 Finestra . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.1.6 Aiuto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2 Finestre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2.1 Cicli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2.2 Registri . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2.3 Statistiche . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2.4 Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2.5 Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2.6 Codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2.7 Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3 Finestre di dialogo . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3.1 Impostazioni . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3.2 Dinero Frontend . . . . . . . . . . . . . . . . . . . . . . . 33
4.3.3 Aiuto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.4 Opzioni da linea di comando . . . . . . . . . . . . . . . . . . . . . 34
3
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 4/35
4.5 Eseguire EduMIPS64 . . . . . . . . . . . . . . . . . . . . . . . . . 34
4
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 5/35
Elenco delle tabelle
2.1 Basic data types . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2 Stato della memoria per il listato 2.2 . . . . . . . . . . . . . . . . 10
2.3 Sequenze di escape . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 6/35
Listings
2.1 Esempio di codice EduMIPS64 . . . . . . . . . . . . . . . . . . . . 82.2 Byte adiacenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 7/35
Capitolo 1
Introduzione
La prima sezione riguarda il formato dei file sorgente accettato dal simulatore,
descrivendo i tipi di dato e le direttive, oltre ai parametri da linea di comando.
Nella seconda sezione e presentata una panoramica del set di istruzioni MIPS64
utilizzato da EduMIPS64, con tutti i parametri richiesti e le indicazioni per il loro
utilizzo. La terza sezione e una descrizione dell’interfaccia utente di EduMIPS64,
che espone lo scopo di ciascuna finestra e di ciascun menu, insieme ad una de-
scrizione delle finestre di configurazione, del Dinero frontend, del manuale e delle
opzioni da linea di comando. Questo manuale si riferisce ad EduMIPS64 versione
0.4.
7
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 8/35
Capitolo 2
Formato dei file sorgenti
EduMIPS64 si propone di seguire le convenzioni usate negli altri simulatori
MIPS64 e DLX, in modo tale da non creare confusione riguardante la sintassi per
i vecchi utenti.
2.1 Sezioni
All’interno di un file sorgente sono presenti due sezioni: quella dedicata ai dati
e quella in cui e contenuto il code, introdotte rispettivamente dalle direttive .data
e .code. Nel listato 2.1 e possibile vedere un semplice programma EduMIPS64.
Per distinguere le varie parti di ciascuna linea di codice, puo essere utilizzata
una qualunque combinazione di spazi e tabulazioni.
; Q u e st o e ’ u n c o mm e nt o
.data
label: . word 15 ; Questo e’ un commento in linea
. code
daddi r1 , r0 , 0
syscall 0
Listing 2.1: Esempio di codice EduMIPS64
I commenti possono essere introdotti utilizzando il carattere “;” qualsiasi cosa
8
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 9/35
venga scritta successivamente ad esso verra ignorata. Un commento puo quindi
essere usato “inline” (dopo una direttiva) oppure in una riga a se stante.
Le etichette possono essere usate nel codice per fare riferimento ad una cella
di memoria o ad un’istruzione. Esse sono case insensitive. Per ciascuna linea di
codice puo essere utilizzata un’unica etichetta. Quest’ultima puo essere inserita
una o piu righe al di sopra dell’effettiva dichiarazione del dato o dell’istruzione,
facendo in modo che non ci sia nulla, eccetto commenti e linee vuote, tra l’etichetta
stessa e la dichiarazione.
2.1.1 La sezione
La sezione data contiene i comandi che specificano il modo in cui la memoria
deve essere riempita prima dell’inizio dell’esecuzione del programma. La forma
generale di un comando .data e:
[etichetta:]
valore1 [, valore2 [, ...]]
EduMIPS64 supporta diversi tipi di dato, che sono descritti nella tabella 2.1.
Tipo Direttiva Bit richiestiByte .byte 8Half word .word16 16Word .word32 32Double Word .word o .word64 64
Tabella 2.1: Basic data types
Dati di tipo doubleword possono essere introdotti sia dalla direttiva .word che
dalla direttiva .word64.
Esiste una differenza sostanziale tra la dichiarazione di una lista di dati utiliz-
zando un’unica direttiva oppure direttive multiple dello stesso tipo. EduMIPS64
9
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 10/35
inizia la scrittura a partire dalla successiva double word a 64 bit non appena trova
un identificatore del tipo di dato, in tal modo la prima istruzione .byte del lista-
to 2.2 inserira i numeri 1, 2, 3 e 4 nello spazio di 4 byte, occupando 32 bit, mentre
il codice delle successive quattro righe inserira ciascun numero in una differente
cella di memoria, occupando 32 byte, come specificato nella tabella 2.2.
. data
. byte 1 , 2 , 3 , 4
. byte 1
. byte 2
. byte 3
. byte 4
Listing 2.2: Byte adiacenti
Nella tabella 2.2, la memoria e rappresentata utilizzando celle di dimensione
pari ad 1 byte e ciascuna riga e lunga 64 bit. L’indirizzo posto alla sinistra di
ogni riga della tabella e riferito alla cella di memoria piu a destra, che possiede
l’indirizzo piu basso rispetto alle otto celle in ciascuna linea.
0 0 0 0 0 4 3 2 18 0 0 0 0 0 0 0 1
16 0 0 0 0 0 0 0 224 0 0 0 0 0 0 0 336 0 0 0 0 0 0 0 4
Tabella 2.2: Stato della memoria per il listato 2.2
Ci sono alcune direttive speciali che devono essere discusse: .space, .ascii e
.asciiz. La direttiva .space e usata per lasciare dello spazio vuoto in memoria.
Essa accetta un intero come parametro, che indica il numero di byte che devono
essere lasciati liberi. Tale direttiva e utile quando e necessario conservare dello
spazio in memoria per i risultati dei propri calcoli.
10
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 11/35
La direttiva .ascii accetta stringhe contenenti un qualunque carattere ASCII,
ed alcune “sequenze di escape”, simili a quelle presenti nel linguaggio C, che sono
descritte nella tabella 2.3, ed inserisce tali stringhe in memoria.
La direttiva .asciiz si comporta esattamente come il comando .ascii, con
la differenza che essa pone automaticamente alla fine della stringa un byte nullo.
Sequenza di escape Significato Codifica ASCII\0 Byte nullo 0
\t Tabulazione orizzontale 9\n Nuova linea 10\“ Apici doppi 34\\ Backslash 92
Tabella 2.3: Sequenze di escape
2.1.2 La sezione
La sezione code contiene comandi che specificano come la memoria debbaessere riempita quando il programma verra eseguito. La forma generale di un
comando .code e:
[etichette:]
[param1 [, param2 [, param3]]]
puo essere indicata anche con la direttiva .text.
Il numero e il tipo di parametri dipendono dall’istruzione stessa.
Le istruzioni possono accettare tre tipi di parametri:
• Registri un parametro di tipo registro e indicato da una “r” maiuscola o
minuscola, o da un carattere “$”, a fianco del numero di registro (tra 0 e
31). Ad esempio, le scritture “r4”, “R4” e “$4” identificano tutt’e tre il
quarto registro;
11
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 12/35
• Valori immediati un valore immediato puo essere un numero o un’etichet-
ta; il numero puo essere specificato in base 10 o in base 16. I numeri in
base 10 sono inseriti semplicemente scrivendo il numero utilizzando l’usuale
notazione decimale; i numeri in base 16 si inseriscono aggiungendo all’inizio
del numero il prefisso “0x”;
• Indirizzi un indirizzo e composto da un valore immediato seguito dal nome
di un registro tra parentesi. Il valore del registro sara utilizzato come offset.
La dimensione dei valori immediati e limitata al numero di bit disponibili nella
codifica associata all’istruzione.
Le istruzioni che possono essere utilizzate in questa sezione saranno discusse
nella sezione 3
2.1.3 Il comando
I sorgenti possono includere il comando
nomefile, che ha l’effetto
di inserire, al posto della riga contenente questo comando, il contenuto del file
nomefile. Questo comando e utile se si vogliono includere delle funzioni esterne,
ed e dotato di un algoritmo di rilevamento dei cicli, che impedisce di eseguire
inclusioni circolari tipo “#include A.s” nel file B.s e “#include B.s” nel file
A.s.
12
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 13/35
Capitolo 3
Il repertorio delle istruzioni
In questa sezione verra illustrato il repertorio delle istruzioni MIPS64 ri-
conosciute da EduMIPS64. E possibile effettuare due differenti classificazioni:
una basata sulla funzionalita delle istruzioni e l’altra basata sul tipo di parametri.
La prima classificazione suddivide le istruzioni in tre categorie: istruzioni ALU,
istruzioni Load/Store, istruzioni di controllo del flusso. I prossimi tre paragrafi
descriveranno ciascuna categoria e le istruzioni che vi appartengono.
Il quarto paragrafo descrivera le istruzioni che non rientrano in nessuna delle
tre categorie sopraelencate.
3.1 Istruzioni ALU
L’unita logico-aritmetica (ALU) fa parte dell’unita esecutiva di una CPU ed
assume il ruolo di esecuzione di operazioni logiche ed aritmetiche. Il gruppo
di istruzioni ALU conterra quindi quelle istruzioni che effettuano questo tipo di
operazioni.
Le istruzioni ALU possono essere suddivise in due gruppi: tipo R e tipo I.
Quattro di esse utilizzano due registri speciali: LO e HI. Tali registri sono
13
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 14/35
interni alla CPU ed e possibile accedere al loro valore mediante le istruzioni MFLO
e MFHI.
Ecco la lista delle istruzioni ALU di tipo R.
• AND rd, rs, rt
Esegue un AND bit a bit tra rs ed rt, e pone il risultato in rd.
• DADD rd, rs, rt
Somma il contenuto dei registri rs ed rt, considerandoli come valori con
segno, e pone il risultato in rd.
• DADDU rd, rs, rt
Somma il contenuto dei registri rs ed rt, considerandoli come valori senza
segno, e pone il risultato in rd.
• DDIV rs, rt
Esegue la divisione tra rs ed rt, ponendo il quoziente in LO ed il resto in HI.
• DMULT rs, rt
Esegue il prodotto tra rs ed rt, ponendo il risultato in LO.
• DSLL rd, rt, sa
Effettua uno shift verso sinistra di rt, del numero di bit indicati nel valore
immediato sa, e pone il risultato in rd. I bit liberi vengono posti a zero.
• DSLLV rd, rs, rt
Effettua uno shift verso sinistra di rs, del numero di bit specificato in rt, e
pone il risultato in rd. I bit liberi vengono posti a zero.
14
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 15/35
• DSRA rd, rs, sa
Effettua uno shift verso destra di rs, del numero di bit specificato nel valore
immediato sa, e pone il risultato in rd. I bit liberi vengono posti a zero se
il bit piu a sinistra di rs e zero, altrimenti vengono posti a uno.
• DSRAV rd, rs, rt
Effettua uno shift verso destra di rs, del numero di bit specificato in rt, e
pone il risultato in rd. I bit liberi vengono posti a zero se il bit piu a sinistra
di rs e zero, altrimenti vengono posti a uno.
• DSRL rd, rs, sa
Effettua uno shift verso destra di rs, del numero di bit specificato nel valore
immediato sa, e pone il risultato in rd. I bit liberi vengono posti a zero.
• DSRLV rd, rs, rt
Effettua uno shift verso destra di rs, del numero di bit specificato in rt, e
pone il risultato in rd. I bit liberi vengono posti a zero.
• DSUB rd, rs, rt
Sottrae il valore di rt ad rs, considerandoli come valori con segno, e pone il
risultato in rd.
• DSUBU rd, rs, rt
Sottrae il valore di rt ad rs, considerandoli come valori senza segno, e pone
il risultato in rd.
• MFLO rd
Copia il contenuto del registro speciale LO in rd.
15
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 16/35
• MFHI rd
Copia il contenuto del registro speciale HI in rd.
• MOVN rd, rs, rt
Se rt e diverso da zero, copia il contenuto di rs in rd.
• MOVZ rd, rs, rt
Se rt e uguale a zero, copia il contenuto di rs in rd.
• OR rd, rs, rt
Esegue un OR bit a bit tra rs ed rt, e pone il risultato in rd.
• SLT rd, rs, rt
Pone il valore di rd ad 1 se il valore contenuto in rs e minore di quello con-
tenuto in rt, altrimenti pone rd a 0. Questa istruzione esegue un confronto
con segno.
• SLTU rd, rs, rt
Pone il valore di rd ad 1 se il valore contenuto in rs e minore di quello con-
tenuto in rt, altrimenti pone rd a 0. Questa istruzione esegue un confronto
senza segno.
• XOR rd, rs, rt
Esegue un OR esclusivo (XOR) bit a bit tra rs ed rt, e pone il risultato in
rd.
Ecco la lista delle istruzioni ALU di tipo I.
• ANDI rt, rs, immediato
Esegue un AND bit a bit tra rs ed il valore immediato, ponendo il risultato
in rt.
16
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 17/35
• DADDI rt, rs, immediato
Effettua la somma tra rs ed il valore immediato, ponendo il risultato in rt.
Questa istruzione considera gli operandi come valori con segno.
• DADDUI rt, rs, immediato
Effettua la somma tra rs ed il valore immediato, ponendo il risultato in rt.
Questa istruzione considera gli operandi come valori senza segno.
• LUI rt, immediato
Carica la costante definita dal valore immediato nella meta superiore dei 32
bit inferiori di rt, effettuando l’estensione del segno sui 32 bit superiori del
registro.
• ORI rt, rs, immediato
Effettua l’OR bit a bit tra rs ed il valore immediato, ponendo il risultato in
rt.
• SLTI rt, rs, immediato
Pone il valore di rt ad 1 se il valore di rs e minore di quello dell’immediato,
altrimenti pone rt a 0. Questa operazione effettua un confronto con segno.
• SLTUI rt, rs, immediato
Pone il valore di rt ad 1 se il valore di rs e minore di quello dell’immediato,
altrimenti pone rt a 0. Questa operazione effettua un confronto senza segno.
• XORI rt, rs, immediato
Effettua l’OR esclusivo bit a bit tra rs ed il valore immediato, ponendo il
risultato in rt.
17
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 18/35
3.2 Istruzioni Load/Store
Questa categoria contiene tutte le istruzioni che effettuano trasferimenti di
dati tra i registri e la memoria. Ognuna di esse e espressa nella forma:
[etichetta:] rt, offset(base)
In base all’utilizzo di un’istruzione load oppure store, rt rappresentera di vol-
ta in volta il registro sorgente o destinazione; offset e un’etichetta o un valore
immediato e base e un registro. L’indirizzo e ottenuto sommando al valore del
registrobase il valore immediato di offset.
L’indirizzo specificato deve essere allineato in base al tipo di dato che si sta
trattando. Le istruzioni di caricamento che terminano con “U” considerano il
contenuto del registro rt come un valore senza segno.
Ecco la lista delle istruzioni di caricamento (LOAD):
• LB rt, offset(base)
Carica il contenuto della cella di memoria all’indirizzo specificato da offset
e base nel registro rt, considerando tale valore come byte con segno.
• LBU rt, offset(base)
Carica il contenuto della cella di memoria all’indirizzo specificato da offset
e base nel registro rt, considerando tale valore come byte senza segno.
• LD rt, offset(base)
Carica il contenuto della cella di memoria all’indirizzo specificato da offset
e base nel registro rt, considerando tale valore come una double word.
18
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 19/35
• LH rt, offset(base)
Carica il contenuto della cella di memoria all’indirizzo specificato da offset e
base nel registro rt, considerando tale valore come una half word con segno.
• LHU rt, offset(base)
Carica il contenuto della cella di memoria all’indirizzo specificato da offset
e base nel registro rt, considerando tale valore come una half word senza
segno.
• LW rt, offset(base)
Carica il contenuto della cella di memoria all’indirizzo specificato da offset
e base nel registro rt, considerando tale valore come una word con segno.
• LWU rt, offset(base)
Carica il contenuto della cella di memoria all’indirizzo specificato da offset
e base nel registro rt, considerando tale valore come una word senza segno.
Ecco la lista delle istruzioni di memorizzazione (STORE):
• SB rt, offset(base)
Memorizza il contenuto del registro rt nella cella di memoria specificata da
offset e base, considerando tale valore come un byte.
• SD rt, offset(base)
Memorizza il contenuto del registro rt nella cella di memoria specificata da
offset e base, considerando tale valore come una double word.
• SH rt, offset(base)
Memorizza il contenuto del registro rt nella cella di memoria specificata da
offset e base, considerando tale valore come una half word.
19
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 20/35
• SW rt, offset(base)
Memorizza il contenuto del registro rt nella cella di memoria specificata da
offset e base, considerando tale valore come una word.
3.3 Istruzioni di controllo del flusso
Le istruzioni di controllo del flusso sono utilizzate per alterare l’ordine delle
istruzioni prelevate dalla CPU nella fase di fetch. E possibile fare una distinzionetra tali istruzioni: tipo R, tipo I e tipo J.
Tali istruzioni eseguono il salto alla fase di Instruction Decode (ID), ogni qual
volta viene effettuato un fetch inutile. In tal caso, due istruzioni vengono ri-
mosse dalla pipeline, ed il contatore degli stalli dovuti ai salti effettuati viene
incrementato di due unita.
Ecco la lista delle istruzioni di controllo del flusso di tipo R:
• JALR rs
Pone il contenuto di rs nel program counter, e salva in R31 l’indirizzo
dell’istruzione che segue l’istruzione JALR, che rappresenta il valore di
ritorno.
• JR rs
Pone il contenuto di rs nel program counter.
Ed ecco le istruzioni di controllo del flusso di tipo I:
• BEQ rs, rt, offset
Salta ad offset se rs e uguale ad rt.
• BEQZ rs, offset
Salta ad offset se rs e uguale a zero.
20
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 21/35
WARNING: Questa e un’istruzione deprecated, che non appartiene al
repertorio delle istruzioni MIPS64, ma e stata inclusa nel set di istruzioni
per mantenere la compatibilita con altri simulatori.
• BNE rs, rt, offset
Salta ad offset se rs non e uguale ad rt.
• BNEZ rs
Salta ad offset se rs non e uguale a zero.
WARNING: Questa e un’istruzione deprecated, che non appartiene al
repertorio delle istruzioni MIPS64, ma e stata inclusa nel set di istruzioni
per mantenere la compatibilita con altri simulatori.
Ecco la lista delle istruzioni di controllo del flusso di tipo J:
• J target
Pone il valore immediato nel program counter
• JAL target
Pone il valore immediato nel program counter, e salta in R31 l’indirizzo
dell’istruzione che segue l’istruzione JAL, che rappresenta il valore di ritorno.
3.4 L’istruzione
L’istruzione SYSCALL offre al programmatore un’interfaccia simile a quella
offerta da un sistema operativo, rendendo disponibili sei differenti chiamate di
sistema (system call).
Le system call richiedono che l’indirizzo dei loro parametri sia memorizzato
nel registro R14, e pongono il loro valore di ritorno nel registro R1. Tali system
call sono il piu possibile fedeli alla convenzione POSIX.
21
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 22/35
3.4.1
SYSCALL 0 non richiede alcun parametro ne ritorna nulla, semplicemente
ferma il simulatore.
E opportuno notare che se il simulatore non trova SYSCALL 0 nel codice
sorgente, o una qualsiasi istruzione equivalente (HALT TRAP 0), terminera
automaticamente alla fine del sorgente.
3.4.2
SYSCALL 1 richiede due parametri: una stringa (che termini con valore zero)
che indica il percorso del file che deve essere aperto, ed una double word contenente
un intero che indica i parametri che devono essere usati per specificare come aprire
il file.
Tale intero puo essere costruito sommando i parametri che si vogliono utiliz-
zare, scelti dalla seguente lista:
• O RDONLY (0x01) Apre il file in modalita di sola lettura;
• O WRONLY (0x02) Apre il file in modalita di sola scrittura;
• O RDWR (0x03) Apre il file in modalita di lettura/scrittura;
• O CREAT (0x04) Crea il file se non esiste;
• O APPEND (0x08) In modalita di scrittura, aggiunge il testo alla fine del file;
• O TRUNC (0x08) In modalita di scrittura, cancella il contenuto del file al
momento della sua apertura.
22
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 23/35
E obbligatorio specificare una delle prime tre modalita. La quarta e la quinta
sono esclusive, non e possibile specificare O APPEND se si specifica O TRUNC
(e viceversa).
E possibile specificare una combinazione di modalita semplicemente sommando
i valori interi ad esse associati. Ad esempio, se si vuole aprire un file in modalita
di sola scrittura ed aggiungere il testo alla fine del file, si dovr a specificare la
modalita 2 + 8 = 10.
Il valore di ritorno delle chiamate di sistema e il nuovo descrittore del file (file
descriptor) associato al file, che potra essere utilizzato con le altre chiamate di
sistema. Qualora si verifichi un errore, il valore di ritorno sara -1.
3.4.3
SYSCALL 2 richiede solo un parametro, il file descriptor del file che deve essere
chiuso.Qualora l’operazione termini con successo, SYSCALL 2 ritornera 0, altrimenti
-1. Possibili cause di errore sono il tentativo di chiudere un file inesistente, o di
chiudere i file descriptor 0, 1 o 2, che sono associati rispettivamente allo standard
input, allo standard output ed allo standard error.
3.4.4
SYSCALL 3 richiede tre parametri: il file descriptor da cui leggere, l’indirizzo
nel quale i dati letti dovranno essere copiati, il numero di byte da leggere.
Se il primo parametro e 1, il simulatore permettera all’utente di inserire un
valore mediante un’apposita finestra di dialogo. Se la lunghezza del valore immesso
e maggiore del numero di byte che devono essere letti, il simulatore mostrera
nuovamente la finestra.
23
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 24/35
La chiamata di sistema ritorna il numero di byte effettivamente letti, o -1
se l’operazione di lettura fallisce. Possibili cause di errore sono il tentativo di
leggere da un file inesistente, o di leggere dai file descriptor 1 (standard output)
o 2 (standard error), oppure il tentativo di leggere da un file di sola scrittura.
3.4.5
SYSCALL 4 richiede tre parametri: il file descriptor su cui scrivere, l’indirizzo
dal quale i dati dovranno essere letti, il numero di byte da scrivere.
Se il primo parametro e 2 o 3, il simulatore mostrera la finestra di input/output
dove scrivera i dati letti.
Questa chiamata di sistema ritorna il numero di byte che sono stati scritti, o
-1 se l’operazione di scrittura fallisce. Possibili cause di errore sono il tentativo
di scrivere su un file inesistente, o sul file descriptor 0 (standard input), oppure il
tentativo di scrivere su un file di sola lettura.
3.4.6
SYSCALL 5 richiede un numero variabile di parametri, il primo e la cosiddetta
“format string” o stringa di formato. Nella stringa di formato possono essere
inseriti alcuni segnaposto, descritti nella seguente lista:
• %s indica un parametro stringa;
• %i indica un parametro intero;
• %d si comporta come %i;
• %% indica %
24
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 25/35
Per ciascuno dei segnaposto %s, %d o %i la SYSCALL 5 si aspetta un parametro,
partendo dall’indirizzo del precedente.
Quando la SYSCALL trova un segnaposto per un parametro intero, si aspetta
che il corrispondente parametro sia un valore intero, quando trova un segnapos-
to per un parametro stringa, si aspetta come parametro l’indirizzo della stringa
stessa.
Il risultato visualizzato nella finestra di input/output, ed il numero di byte
scritti posto in R1.
Qualora si verifichi un errore, R1 avr valore -1.
3.5 Altre istruzioni
In questa sezione sono descritte istruzioni che non rientrano nelle precedenti
categorie.
3.5.1
L’istruzione BREAK solleva un’eccezione che ha l’effetto di fermare l’ese-
cuzione se il simulatore e in esecuzione. Puo essere utilizzata per il debugging.
3.5.2
L’istruzione NOP non fa nulla, ed e utilizzata per creare pause nel codice
sorgente.
3.5.3
L’istruzione TRAP e deprecated, rappresenta un’alternativa all’istruzione SYSCALL.
25
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 26/35
3.5.4
L’istruzione HALT e deprecated, rappresenta un’alternativa all’istruzione SYSCALL
0, che ferma il simulatore.
26
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 27/35
Capitolo 4
L’interfaccia utente
L’interfaccia grafica EduMIPS64 e ispirata a quella di WinMIPS64. Infatti, la
finestra principale e identica, eccetto che per qualche menu.
La finestra principale di EduMIPS64 e caratterizzata da sei frame, che mostra-
no i differenti aspetti della simulazione. E inoltre presente una barra di stato, che
ha il duplice scopo di mostrare il contenuto delle celle di memoria e dei registri
quando vengono selezionati e di notificare all’utente che il simulatore e in ese-
cuzione quando la simulazione e stata avviata ma la modalita verbose non e stata
attivata. Maggiori dettagli sono descritti nelle sezioni a seguire.
4.1 La barra del menu
La barra del menu contiene sei opzioni:
4.1.1 File
Il menu File contiene comandi per l’apertura dei file, per resettare o fermare
il simulatore e per scrivere i trace file.
• Apri... Apre una finestra che consente all’utente di scegliere un file sorgente
da aprire.
27
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 28/35
• Apri recente Mostra la lista dei file recentemente aperti dal simulatore,
dalla quale l’utente puo scegliere il file da aprire.
• Resetta Inizializza nuovamente il simulatore, mantenendo aperto il file che
era stato caricato ma facendone ripartire l’esecuzione.
• Scrivi Tracefile Dinero... Scrive i dati di accesso alla memoria in un file,
nel formato xdin.
• Esci Chiude il simulatore.
La voce del menu Scrivi Tracefile Dinero... e disponibile solo quando un
file sorgente e stato completamente eseguito ed e stata gia raggiunta la fine
dell’esecuzione.
4.1.2 Esegui
Il menu Esegui contiene voci riguardanti il flusso di esecuzione della simu-
lazione.
• Ciclo singolo Esegue un singolo passo di simulazione.
• Completa Inizia l’esecuzione, fermandosi quando il simulatore raggiunge
una SYSCALL 0 (o equivalente) o un’istruzione di BREAK, oppure quando
l’utente seleziona la voce Stop del menu (o preme F9).
• Cicli multipli Esegue un certo numero di passi di simulazione, tale valore
puo essere configurato attraverso la finestra di configurazione. Vedere la
sezione 4.3.1 per ulteriori dettagli.
• Ferma Ferma l’esecuzione quando il simulatore e in modalita “Completa”
o “Cicli multipli”, come descritto precedentemente.
28
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 29/35
Il menu e disponibile solo quando e stato caricato un file sorgente e non e ancora
stato raggiunto il termine della simulazione. La voce Stop del menu disponibile
solo in modalita “Completa” o “Cicli multipli” mode.
4.1.3 Configura
Il menu Configura fornisce l’opportunita di personalizzare l’aspetto ed il fun-
zionamento di EduMIPS64.
• Impostazioni... Apre la finestra di configurazione, descritta nella sezione 4.3.1
• Selezione lingua Consente di modificare la lingua usata dall’interfaccia
utente. Attualmente sono supportate solo inglese ed italiano. Questa modi-
fica riguarda ogni aspetto dell’interfaccia grafica, dal titolo delle finestre al
manuale in linea ed i messaggi di errore o le notifiche.
The Impostazioni... non e disponibile quando il simulatore e in modalita
“Completa” o “Cicli multipli”, a causa di possibili race conditions.
4.1.4 Strumenti
Questo menu contiene solo una voce, utilizzata per aprire la finestra del Dinero
frontend.
• Dinero Frontend... Apre la finestra del Dinero Frontend. Vedi para-grafo 4.3.2.
Questo menu non e disponibile finche non e stata portata a termine l’esecuzione
del programma
29
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 30/35
4.1.5 Finestra
Questo menu contiene voci relative alle operazioni con le finestre.
• Tile Ordina le finestre visibili in modo tale che non vi siano pi u di tre
finestre in una riga, tentando di massimizzare lo spazio occupato da ciascuna
finestra.
Le altre voci del menu modificano semplicemente lo stato di ciascuna finestra,rendendola visibile o riducendola ad icona.
4.1.6 Aiuto
Questo menu contiene voci relative all’aiuto in linea.
• Manuale... Mostra la finestra di help. Vedi 4.3.3
• Informazioni su... Mostra una finestra contenente i nomi di coloro che
hanno collaborato al progetto, insieme ad i loro ruoli.
4.2 Finestre
L’interfaccia grafica e composta da sette finestre, sei delle quali sono visibili
per default, mentre una (la finestra di I/O) e nascosta.
4.2.1 Cicli
La finestra Cicli mostra l’evoluzione del flusso di esecuzione nel tempo, visua-
lizzando in ogni istante quali istruzioni sono nella pipeline, ed in quale stadio si
trovano.
30
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 31/35
4.2.2 Registri
La finestra Registri mostra il contenuto di ciascun registro. Mediante un click
col tasto sinistro del mouse e possibile vedere il loro valore decimale (con segno)
nella barra di stato, mentre con un doppio click verra aperta una finestra di dialogo
che consentira all’utente di cambiare il valore del registro
4.2.3 Statistiche
La finestra Statistiche mostra alcune statistiche riguardanti l’esecuzione del
programma.
4.2.4 Pipeline
La finestra Pipeline mostra lo stato attuale della pipeline, visualizzando cias-
cuna istruzione con il suo stadio. I differenti colori evidenziano i vari stadi della
pipeline stessa.
4.2.5 Memoria
La finestra Memoria mostra il contenuto delle celle di memoria, insieme alle
etichette ed i commenti, tratti dal codice sorgente. Il contenuto delle celle di
memoria, come per i registri, puo essere modificato con un doppio click, e mediante
un singolo click del mouse verra mostrato il loro valore decimale nella barra di
stato. La prima colonna mostra l’indirizzo esadecimale della cella di memoria, e la
seconda il valore della cella stessa. Le altre colonne mostrano invece informazioni
addizionali provenienti dal codice sorgente.
31
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 32/35
4.2.6 Codice
La finestra Codice visualizza le istruzioni caricate in memoria.. La prima colon-
na mostra l’indirizzo dell’istruzione, mentre la seconda mostra la rappresentazione
esadecimale dell’istruzione stessa. Le altre colonne mostrano infine informazioni
addizionali provenienti dal codice sorgente.
4.2.7 Input/Output
La finestra Input/Output fornisce un’interfaccia all’utente per la visualiz-
zazione dell’output creato dai programmi mediante le SYSCALL 4 e 5. Attual-
mente non e utilizzata per l’input di dati, ed al suo posto viene utilizzata una
finestra di dialogo che viene mostrata quando una SYSCALL 3 tenta di leggere
dallo standard input, ma future versioni includeranno una casella di testo per
l’input.
4.3 Finestre di dialogo
Le finestre di dialogo sono utilizzate da EduMIPS64 per interagire con l’utente
in vari modi. Ecco un riassunto delle piu importanti:
4.3.1 Impostazioni
Nella finestra di configurazione possono essere configurati vari aspetti del
simulatore.
La sezione “Impostazioni generali” consente di configurare il forwarding ed il
numero di passi da effettuare nella modalita Cicli multipli.
La sezione “Comportamento” permette di abilitare o disabilitare gli avvisi
durante la fase di parsing, l’opzione “sincronizza la GUI con la CPU nell’esecuzione
32
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 33/35
multi step”, quando abilitata, sincronizzera lo stato grafico delle finestre con lo
stato interno del simulatore. Cio implichera una simulazione piu lenta, ma con la
possibilita di avere un resoconto grafico esplicito di cio che sta avvenendo durante
la simulazione. L’opzione “intervallo tra i cicli”, qualora sia abilitata, influenzera
il numero di millisecondi che il simulatore dovra attendere prima di cominciare
un nuovo ciclo. Tali opzioni hanno effetto solo quando la simulazione e avviata
utilizzando le opzioni “Completa” o “Cicli multipli” dal menu Esegui.
Le ultime due opzioni stabiliscono il comportamento del simulatore quando si
verifica un’eccezione sincrona. E importante notare che se le eccezioni sincrone
sono mascherate, non succedera nulla, anche se l’opzione “Termina se si verifica
un’eccezione sincrona” e abilitata. Se le eccezioni non sono mascherate e tale
opzione e abilitata, apparira una finestra di dialogo, e la simulazione sara fermata
non appena tale finestra verra chiusa.
L’ultima sezione permette di modificare i colori associati ai diversi stadi della
pipeline. Abbastanza inutile, ma carino.
4.3.2 Dinero Frontend
La finestra di dialogo Dinero Frontend consente di avviare un processo DineroIV
con il trace file generato internamente mediante l’esecuzione del programma. Nel-
la prima casella di testo c’e il percorso dell’eseguibile DineroIV, e nella seconda
devono essere inseriti i parametri opportuni.
La sezione piu in basso contiene l’output del processo DineroIV, dal quale e
possibile prelevare i dati di cui si necessita.
33
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 34/35
4.3.3 Aiuto
La finestra di Aiuto contiene tre sezioni con qualche indicazione riguardo l’u-
tilizzo del simulatore. La prima e una breve introduzione ad EduMIPS64, la
seconda contiene informazioni riguardanti l’interfaccia grafica e la terza contiene
un riassunto delle istruzioni supportate.
4.4 Opzioni da linea di comandoSono disponibili tre opzioni da linea di comando. Esse sono descritte di seguito,
con il nome per esteso scritto tra parentesi. Nomi abbreviati e per esteso possono
essere utilizzati indifferentemente.
• -h (--help) mostra un messaggio di aiuto contenente la versione del sim-
ulatore ed un breve riassunto delle opzioni da linea di comando.
• -f (--file) filename Apre filename nel simulatore.
• -d (--debug) Accede alla modalita di debugging.
L’opzione --debug ha l’effetto di attivare la modalita di debugging. In tale
modalita e disponibile una nuova finestra, la finestra Debug, che mostra il resocon-
to delle attivita interne di EduMIPS64. Tale finestra non e utile per l’utente finale,
e stata infatti ideata per poter essere utilizzata dagli sviluppatori di EduMIPS64.
4.5 Eseguire EduMIPS64
Il file .jar di EduMIPS64 puo funzionare sia come file .jar eseguibile che
come applet, quindi puo essere eseguito in entrambi i modi, che richiedono il Java
Runtime Environment, versione 5 o successiva.
34
7/17/2019 Manuale EduMIPS64
http://slidepdf.com/reader/full/manuale-edumips64 35/35
Per eseguire il file come applicazione a se stante, l’eseguibile java deve essere
avviato nel seguente modo: java -jar edumips64-version.jar, dove la stringa
version deve essere sostituita con la versione attuale del simulatore. Su alcuni
sistemi, potrebbe essere possibile eseguire il programma semplicemente con un
click sul file .jar.
Per eseguire il file come applet deve essere utilizzato il tag <applet>. Il sito
web di EduMIPS64 presenta una pagina gia contenente l’applet, in modo tale che
chiunque possa eseguire il programma senza il problema dell’utilizzo da linea di
comando.