Manuale EduMIPS64

35
Manuale utente di EduMIPS64 di Andrea Spadaccini Traduzione italiana di Simona Ullo Versione 1, 15 Marzo 2007

description

Manuale per EduMIPS64.

Transcript of Manuale EduMIPS64

Page 1: 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

Page 2: Manuale EduMIPS64

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

Page 3: Manuale EduMIPS64

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

Page 4: Manuale EduMIPS64

7/17/2019 Manuale EduMIPS64

http://slidepdf.com/reader/full/manuale-edumips64 4/35

4.5 Eseguire EduMIPS64 . . . . . . . . . . . . . . . . . . . . . . . . . 34

4

Page 5: Manuale EduMIPS64

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

Page 6: Manuale EduMIPS64

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

Page 7: Manuale EduMIPS64

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

Page 8: Manuale EduMIPS64

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

Page 9: Manuale EduMIPS64

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

Page 10: Manuale EduMIPS64

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

Page 11: Manuale EduMIPS64

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

Page 12: Manuale EduMIPS64

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

Page 13: Manuale EduMIPS64

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

Page 14: Manuale EduMIPS64

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

Page 15: Manuale EduMIPS64

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

Page 16: Manuale EduMIPS64

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

Page 17: Manuale EduMIPS64

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

Page 18: Manuale EduMIPS64

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

Page 19: Manuale EduMIPS64

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

Page 20: Manuale EduMIPS64

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

Page 21: Manuale EduMIPS64

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

Page 22: Manuale EduMIPS64

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

Page 23: Manuale EduMIPS64

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

Page 24: Manuale EduMIPS64

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

Page 25: Manuale EduMIPS64

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

Page 26: Manuale EduMIPS64

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

Page 27: Manuale EduMIPS64

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

Page 28: Manuale EduMIPS64

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

Page 29: Manuale EduMIPS64

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

Page 30: Manuale EduMIPS64

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

Page 31: Manuale EduMIPS64

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

Page 32: Manuale EduMIPS64

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

Page 33: Manuale EduMIPS64

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

Page 34: Manuale EduMIPS64

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

Page 35: Manuale EduMIPS64

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.