SIMULATORE JPD132
v. 1.0 beta


Download versione 1.0 beta con sorgenti (305 kb)

Download versione 1.0 beta senza sorgenti (230 kb)

Scarica breve guida/presentazione (198 kb)

In caso di bug, per commenti o informazioni:
webmaster@lorenzoblanco.it
Presentazione

Il simulatore JPD132 è un'applicazione che permette di scrivere e testare programmi scritti in linguaggio assembly JPD132. Questo linguaggio non è altro che un'estensione dell'assembly PD32 (dettagliatamente illustrato nel libro: G.Cioffi, A.Jorno, T.Villani, Il processore PD32: architettura assembler e simulatore, Casa Editrice Ambrosiana, Milano, 1999) e quindi è totalmente compatibile con esso.

Caratteristiche linguaggio

Le caratteristiche dell'assembly JPD132 sono (in verde le novità rispetto al PD32):

  • metodi di indirizzamento: immediato, assoluto diretto, assoluto indiretto, diretto di registro, indiretto con registro, auto-incrementante, auto-decrementante, auto-incrementante indiretto, auto-decrementante indiretto, con registro indice, indiretto con registro indice (pre-indexed e post-indexed), auto-relativo.
  • direttive:

    ORG  
    CODE  
    DRIVER  
    END  
    DB, DW, DL  
    EQU  
    .DSB, .DSW, .DSL  
    .DCB, .DCW, .DCL  
       

  • istruzioni:

    HALT  
    NOP  
    RESET  
    MOVB, MOVW, MOVL  
    MOVFRSR  
    MOVTOSR  
    PUSH  
    POP  
    PUSHSR  
    POPSR  
    MVLB, MVLW, MVLL  
    EXGB, EXGW, EXGL  
    ADDB, ADDW, ADDL  
    ADCB, ADCW, ADCL  
    CMPB, CMPW, CMPL  
    NEGB, NEGW, NEGL  
    SUBB, SUBW, SUBL  
    SBBB, SBBW, SBBL  
    SMULB, SMULW, SMULL  
    UMULB, UMULW, UMULL  
    SDIVB, SDIVW, SDIVL  
    UDIVB, UDIVW, UDIVL  
    ANDB, ANDW, ANDL  
    ORB, ORW, ORL  
    XORB, XORW,XORL  
    NOTB, NOTW, NOTL  
    NANDB, NANDW, NANDL  
    NORB, NORW, NORL  
    ASLB, ASLW, ASLL  
    ASRB, ASRW, ASRL  
    LSLB, LSLW, LSLL  
    LSRB, LSRW, LSRL  
    RCLB, RCLW, RCLL  
    RCRB, RCRW, RCRL  
    ROLB, ROLW, ROLL  
    RORB, RORW, RORL  
    CLRc (c = C,N,Z,V,P,I)  
    SETc (c = C,N,Z,V,P,I)  
    JMP  
    JSR, JSR  
    RET  
    RTI  
    Jc (c = C,N,Z,V,P,I)  
    JNc (c = C,N,Z,V,P,I)  
    INB, INW, INL  
    OUTB, OUTW, OUTL  
    START  
    CLEAR  
    JR  
    JNR  
    SETIM  
    CLRIM  
    JIM  
    JNIM  

    ATTENZIONE:
    - a causa dei nuovi metodi di indirizzamento ammessi gli indirizzi per le periferiche sono limitati al range 0-63. Consequentemente è possibile iniziare a memorizzare il programma a partire dall'indirizzo 100H invece che 400H.
    - le direttive .DCB, .DCW e .DCL possono ricevere come argomenti anche delle espressioni aritmetiche (con gli operatori +,-,*,/ e le parentesi tonde) al cui interno possono essere utilizzate le label delle variabili e/o delle costanti (in entrambi i casi si specifica direttamente l'identificatore della label, senza il carattere '#'). Se si utilizzano delle variabili bisogna fare attenzione al fatto che le aree di memoria vengono memorizzate in memoria PRIMA dell'esecuzione del programma, quindi per il calcolo delle espressioni vengono utilizzati i valori iniziali delle variabili.
    - le istruzioni SDIVB, SDIVW, SDIVL, UDIVB, UDIVW, UDIVL operano la divisione intera, quindi ad esempio:

    10/5 = 11/5 = 2

Caratteristiche ambiente editor-simulazione

L'opzione "Verifica aggiornamenti" nel menù "Utilità" permette di aggiornare il programma all'ultima versione disponibile.

L'editor integrato dell'applicazione ha le seguenti caratteristiche:

  • indentazione automatica
  • gestione di diversi file contemporaneamente
  • possibilità di cambiare font, dimensione e stile del carattere
  • possibilità di specificare una directory di default dove salvare i file
  • possibilità di specificare del codice sorgente da caricare in ogni nuova finestra dell'editor
  • comandi per rendere maiuscolo/minuscolo il codice sorgente (ma non i commenti)
  • convertitore decimale/esadecimale/binario/ottale/codice ASCII
  • commento/decommento automatico del sorgente
il simulatore ha le seguenti caratteristiche:
  • modalità di esecuzione "tutto il programma" (con regolatore di velocità di calcolo)
  • modalità di esecuzione "un'istruzione alla volta"
  • possibilità di modificare direttamente i valori dei registri interni al processore, le singole celle di memoria centrale, lo Status register, il Program Counter
  • possibilità di salvare il contenuto della memoria centrale su file per poi ricaricarlo in una successiva simulazione (opzione utile se si vogliono testare diversi programmi sugli stessi dati)
  • indicatore di stima di efficienza (più il valore è alto, più tempo è necessario ad eseguire il programma). Il pulsante "Azz.effic." imposta a 0 il valore dell'indicatore
  • pulsante "Random.": setta ad 1 il flip-flop status di tutte le periferiche di input inserendo nel data buffer un valore casuale.





    Lorenzo Blanco 14/05/2003