Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636

    realizzare assemblatore e simulatore

    Ciao a tutti
    sono uno studente di ingegneria
    Devo realizzare un simulatore e non so veramente da dove iniziare
    Il mio esame consiste in questo:

    - scegliere una architettura (sono orientato verso il 6502 o 8086)
    - realizzare assemblatore (editor)
    - realizzare il simulatore
    1. disassembler
    2. break point
    3. verificare e modificare il contenuto di registri di memoria

    Vi prego di aiutarmi perchè non so da dove iniziare
    A presto
    j

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non tanto tempo addietro ho realizzato un simulatore per 6502 e, molto ma molto tempo fa, ho realizzato un assembler ...

    Non hai indicato con quale linguaggio devi realizzare il tutto (anche se penso sia il C) ma, se dici che non hai idea di come fare, mi sembra un progetto un po' troppo ambizioso ... non credi?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    Ciao
    ambizioso o meno..devo fare l'esame..questo è il punto.
    In C oppure in Java...da dove devo iniziare..cosa mi serve per iniziare?
    Il 6502 va bene..aiutami
    a presto
    j

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Moderazione

    Originariamente inviato da jurij7
    In C oppure in Java...
    Il linguaggio va indicato anche nel titolo, come da Regolamento.

    Qui l'ho aggiunto io. Tienilo a mente per il futuro.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da jurij7
    Ciao
    ambizioso o meno..devo fare l'esame..questo è il punto.
    Sì ... ma l'esame lo devi fare tu ... e sinceramente non mi sembra che tu sia messo bene se devi fare quello che hai detto e non hai idea da dove iniziare ...

    Sicuramente io non ti potro' aiutare piu' di tanto, perche' una cosa e' darti suggerimenti o dritte, un'altra e' fare tutto quanto al posto tuo ...

    In C oppure in Java...da dove devo iniziare..cosa mi serve per iniziare?
    Per quanto riguarda il C, ti serve un ambiente e un compilatore.

    Ti consiglio il Visual Express Edition 2005 da scaricare gratuitamente dal sito MS.

    E poi, ovviamente, ti servira' conoscere "in dettaglio", il modello della CPU che devi simulare ... ovvero devi sapere TUTTO della 6502 ...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    ok..si capisco..e so pure che sarà difficile!
    Però volevo sapere i passi da seguire per affrontare questo progetto
    Vorrei una specie di scaletta da seguire, cosa inizare a studiare, ecc
    Per esempio
    da dove parto per realizzare l'assemblatore (editor) ?
    Cosa devo fare per prima cosa ?
    Cosa mi serve per farlo, per esempio il Visual Express Edition 2005 mi serve per cosa ?
    Mi avevano consigliato di utilizzare Netbeans..ma non so cosa dovrei fare con questo.
    Inoltre l'assemblatore ed il simulatore devono essere con interfaccia grafica.
    Se tu hai materiale da dove studiare il processore..dimmi pure
    Ti ringrazio tantissimo
    j

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Beh ... scusa, ma mi sembri veramente parecchio indietro ...

    1) devi studiare tutto del processore in questione (6502, piu' semplice dell'808x) ... pensavo che lo conoscessi ...

    2) non sai a cosa serva Visual Express Edition 2005 ... e' un ambiente per scrivere/compilare/testare programmi in C ...

    3) penso quindi che tu non conosca il C ... lo devi imparare e molto bene ...

    NON si puo' fare una scaletta di cose che devi fare ... solo per il terzo punto ti ci vorra' un bel po' di tempo ... lo stesso per il primo ... quanto tempo hai?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    beh sinceramente è un esame che volevo abbinare agli altri nel senso che mentre facevo altri procedevo con questo contemporaneamente.
    Quindi parto con imparare il C..hai una guida da consigliarmi ?
    Hai qualcosa per capire il processore 6502 ?
    Cosa mi dici dell'interfaccia grafica..è un lavoro a parte da fare con qualche software grafico?
    Grazie ancora
    j

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Beh ... questo mi sembra abbastanza tosto come compito ... non ho ancora capito quanto tempo hai ... ma mi sa che te ne servira' tanto ...

    E' un compito abbastanza complesso per chi sa gia' tutte quelle cose preliminari che tu devi ancora imparare ...

    Per il C, non ho nulla in particolare, da consigliarti ... scarica il Visual Studio Express Edition 2005 e un qualsiasi libro in libreria (ce ne sono tantissimi ...)

    Per il processore 6502, sicuramente

    http://it.wikipedia.org/wiki/MOS_Technology_6502
    http://www.obelisk.demon.co.uk/6502/

    Per l'interfaccia grafica, dato che in C non e' tanto semplice, penso che riusciresti a fare tutto prima utilizzando il linguaggio C# (lo puoi trovare nel Visual Studio Express Edition 2005) ... anche per questo ci sono tanti libri di base in libreria ...

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Cercherò (per quello che posso ) di fare un po di chiarezza riguardo la simulazione del comportamento di un processore.

    Innanzitutto hai citato 2 processori: 6502 o 8086. La differenza tra i due è pressappoco la stessa che passa tra una Fiat Cinquecento e una Wolkswagen Golf ..... pertanto posso solo consigliarti di prendere in considerazione il 6502 che è decisamente più semplice.

    Tralasciamo un momento una eventuale interfaccia grafica del tuo simulatore e prendiamo in considerazione solamente i concetti, a livello prettamente tecnico, che si devono applicare per simulare un processore.

    Premetto che conosco molto bene i processori x86 ma non il 6502. Comunque la documentazione su quest'ultimo la trovi a partire da qui.

    È chiaro che dovrai leggere tutta la documentazione relativa alla architettura del processore: set di istruzioni, indirizzamento della memoria, registri, ALU, ecc....

    Da quello che leggo il 6502 è un processore a 8 bit con uno spazio di indirizzamento di 16 bit. Bene, nel tuo programma simulerai la memoria del processore con un bel array di 65536 bytes.

    Ha 5 registri: A, Y, X (tutti a 8 bit), PC (program counter a 16 bit), S (stack pointer a 8 bit) e infine P (status register a 8 bit). Nel tuo programma dovrai avere delle variabili della stessa dimensione dei registri. Potresti quindi avere, usando il linguaggio C:

    unsigned char A, Y, X, S, P;
    unsigned short PC;

    Devi poi chiaramente capire e comprendere bene tutte le istruzioni e come sono composti gli opcode. La esecuzione delle istruzioni è semplice. Il prossimo opcode da eseguire lo trovi andando nella memoria all'offset indicato dal PC. Lo leggi e stabilisci cosa fare.

    Ad esempio se trovi l'opcode 29h, questo indica una istruzione di AND tra il registro A e il valore "immediato" che segue l'opcode. Quindi se trovi la sequenza 29h 56h, dovrai fare A = A and 56h. Fai la operazione usando la istruzione di AND nel linguaggio di programmazione che hai scelto (sia per C che Java la AND si fa con l'operatore '&'), aggiorni il "tuo" registro A e aggiorni i flags nel registro P (in questo caso devi leggere cosa dice la documentazione, per la AND devi aggiornare i flag N e Z).
    Dopodiché incrementi il program counter di 2, infatti la AND con valore immediato è composta da 2 byte come detto sopra: opcode + valore immediato. E continui andando avanti nello stesso modo.

    Spero che questa breve introduzione ti possa far capire cosa si deve fare per "simulare" un processore anche se, viste le tue premesse, la vedo non dico impossibile ma decisamente molto dura!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.