laboratorio di architettura degli · pdf filelaboratorio di architettura degli elaboratori...

Download Laboratorio di Architettura degli · PDF fileLaboratorio di Architettura degli Elaboratori Dott. Massimo Tivoli Introduzione a MARS: interfaccia, struttura di un programma, gestione

If you can't read please download the document

Upload: haquynh

Post on 06-Feb-2018

225 views

Category:

Documents


2 download

TRANSCRIPT

  • Laboratorio di Architettura degli Elaboratori

    Dott. Massimo Tivoli

    Introduzione a MARS: interfaccia, struttura di un programma, gestione dellinput

  • Lassemblatore e simulatore MARS

    Permette di eseguire programmi assembler scritti per il processore MIPS.

    Pu essere scaricato dal sitohttp://courses.missouristate.edu/KenVollmar/MARS/

  • Download MARS

    Scaricherete un file .jar: Mars.jar

    Per eseguirlo vi serve Java J2SE 1.4.2 (o versioni successive) SDK installato sul vostro computer java -jar Mars.jar (nella directory dove si trova Mars.jar)

  • Linterfaccia grafica di MARS

    Lassemblatore e simulatore MARS si presenta organizzato in tre pannelli, che sono:

    1) Il Pannello delleditor

    - editing del programma assembly

    - display del segmento di testo, di dati e dello stack

    (comprese le labels definite nel programma)

    2) Il pannello dei registri della CPU e della FPU

    - display dei registri generali

    - display dei registri del co-processore matematico

    3) Il pannello dei messaggi

    - messaggi di output di MARS

    - messaggi di output del programma assembly (console

    del programma)

  • MARS (continua)

  • MARS

  • Il display dei registri

    Mostra lo stato di tutti i registri della CPU e della FPU del MIPS.

    Di default, il contenuto e lindirizzo dei registri codificato in esadecimale (lo si pu visualizzare anche in decimale).

    Il contenuto aggiornato ogni volta che il programma interrompe la sua esecuzione, ovvero quando il programma

    termina;

    produce un errore;

    raggiunge un breakpoint definito dallutente.

  • Registri e MARS

    Memoria

    ALU

    R0(r0)

    R1(at)

    MAR

    MBR

    R31(ra)

    MEMORIA

    CONTROLLO

    CPU

    altriregistri

  • Il segmento di testo

    Mostra la porzione di memoria in cui memorizzato il programma da eseguire (a partire dalla locazione 0x0040000).

    Tale programma costituito dal codice utente (ci sarebbe una parte di codice di sistema che si occupa della gestione della riga di comando e della terminazione, ma viene nascosta allutente).

    Una generica riga di questo segmento ha il seguente formato:

    [0x00400004] 0x8fa40000 lw $4,0($29) 89: lw $a0,0($sp)

    Indirizzo dellistruzione Codifica dellistruzionein linguaggio macchina

    (lo vedremo nella prossima lezione)

    Codifica dellistruzionein linguaggio assembler

    Descrizione mnemonica dellistruzione

    Numero di riga del programma contenente listruzione

  • Segmento di dati e stack

    Mostra lo stato della memoria riservata ai dati statici (segmento di dato) e dinamici (stack) del programma.

    Per facilitarne la lettura, ogni riga di tali segmenti mostra il contenuto (in esadecimale) di 8 word consecutive in memoria (1 word = 4 byte = 4 locazioni di memoria)

    Queste word sono ordinate in maniera crescente da sinistra verso destra.

    Ogni word, poich il MIPS indirizza la memoria con il singolo byte, rappresenta a sua volta 4 locazioni consecutive che sono invece ordinate da destra verso sinistra.

  • ovvero (per semplicit consideriamo 4 word consecutive):

    corrisponde a:

    Word 0 Word 1 Word 2 Word 3

    Word 3

    Word 1

    Word 0

    0x7FFFEF5F

    Word 2

    0x7FFFEF510x7FFFEF50

    0x7FFFEF60

    .

    .

    .

    0x7FFFEF50 + 1610 =0x7FFFEF50 + 0x10 =0x7FFFEF60

    0x000x000x000x000x000x000x000x000xDE0xEF0xFF0x7F0xB50xEF0xFF0x7F

  • Esempio:Determinare lindirizzo dei byte di memoria evidenziati in rosso nella figura sottostante.

    a) [0x10000000] 0x00000000 0x00000000 0x00000000 0x00000000b) [0x10000010] 0x00000000 0x00000000 0x00000000 0x00000000

    Risposta:a) 0x10000005;b) non si tratta di un indirizzo di memoria valido (i dati stanno

    a met tra 0x10000010 e 0x10000011).

  • Struttura di un programma MARS

    .data

    .text

    .globl main

    main:

    Facoltativo

  • Gestione dellinput in MARS (continua)

    Una volta assemblato il programma tramite il menuRun Assemble

    il programma viene caricato in memoria ed pronto per lesecuzione che pu avvenire passo-passo o in modo completo

    In questo stato di sospensione (o tra unpasso e laltro dellesecuzione), facendodoppio-clck sul contenuto di una qualsiasiword nel segmento dati o di un qualsiasi registro(apparte $zero, $ra, e pc) possibile inserire direttamente valori per,rispettivamente, locazioni di memoria e registri

  • Gestione dellinput in MARS (continua)

    E inoltre possibile usare il segmento .data per inserire valori in memoria (a partire dalla locazione 0x10010000) secondo il seguente schema:

    .data

    label: Facoltativo

    .tipo valoredove label un eventuale nome che si vuole associare alla locazione di memoria che si sta inizializzando mentre valore ne definisce il contenuto; tipo, infine, la dimensione con cui si vuole rappresentare valore (es.word (32 bit), half (16 bit), byte (8 bit)).

    .dataX: .word 65

    .dataX: .word A

    .dataX: .word 0x00000041

  • Gestione dellinput in MARS (continua).data

    X: .half 0xFFFFFFFF

    .dataY: .byte 0xFFFFFFFF

    .dataZ: .asciiz 0x00000041

    Errore!

    .dataK: .asciiz A

    .dataH: .asciiz A

    Errore!

    .dataQ: .asciiz ABCDEFGH

    XYK KQ Q Q

  • .data

    X: .word 14

    Y: .word 5

    .text

    .globl main

    main:

    lw $v0, X # oppure lw $2, X

    lw $v1, Y # oppure lw $3, Y

    j exit

    exit:

    Esempio:Caricare i valori numerici 14 e 5 rispettivamente nei registri R2 (v0) e R3 (v1) del simulatore MARS.

  • Gestione dellinput in MARS (continua)

    MARS fornisce anche una modalit di inserimento dati interattiva usando alcune chiamate di sistema e

    - la finestra di dialogo MIPS Keyboard Inputcome console per linput

    - la tab Run I/O nel pannello dei messaggi comeconsole di output

    Per invocare una chiamata di sistema sufficiente utilizzare il comando syscall.

    Prima di utilizzare tale comando, per, necessario specificare tutti i parametri richiesti dalla particolare chiamata di sistema che si vuole utilizzare.

  • Chiamata di sistema Codice Parametri

    Print_string 4$a0 (i.e., $4 o R4)

    contiene lindirizzo della stringa da stampare

    Read_int 5$v0 (i.e., $2 o R2)

    conterr il risultato della lettura da tastiera

    Prima di utilizzare una qualsiasi chiamata di sistema necessario porre nel registro $v0 il relativo codice.

    Alcune chiamate di sistema

    LHelp di MARS mostra la documentazione anche per tuttele altre system calls (e per i vari comandi, etc.) consultarlo ditanto in tanto risulta essere molto comodo per la scrittura diprogrammi assembly, nonch istruttivo

  • .data

    Stringa: .asciiz Inserisci un numero:

    .text

    .globl main

    main:

    li $v0,4 # codice per la chiamata di sistema Print_string

    la $a0,Stringa

    syscall

    li $v0,5 # codice per la chiamata di sistema Read_int

    syscall

    Esempio: Lettura di un intero da tastiera.

  • File: ReadNumber.asm

  • Gestione dellinput in MARS (continua)

    Attivando la seguente opzione dalla barra dei men:

    Settings Program arguments provided to MIPS program

    appare una casella di testo (Program Arguments) tramite la quale possibile inserire direttamente i parametri della riga di comando del programma assembly

    vedremo la gestione dei parametri sulla rigadi comando pi avanti nel corso

  • Gestione dellinput in MARS

    Infine, MARS fornisce unulteriore modalit di inserimento dati:

    Input formattato in memoria

    Anche questa modalit di input la vedremo nelle prossime lezioni

  • Per approfondimenti

    - Andare alla pagina del corso sulla mia web pagehttp://www.di.univaq.it/tivoli/index.php?pageId=labarch

    - alcuni documenti su MARS

    - alcuni manuali sul MIPS

    - alcuni esempi svolti in MARS

    - Consultare anche la pagina di MARS e lHelp di MARS- http://courses.missouristate.edu/KenVollmar/MARS/

    http://www.di.univaq.it/tivoli/index.php?pageId=labarch