|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
ambiente di svilluppo C
Devo scrivere un assemblatore e un simulatore dell'8086. Il mio prof dice che non vale la pena usare il C++ perchè secondo lui è come sparare ad una farfalla con un cannone...devo usare il C. Ho UltraEdit-32, posso configurarlo al meglio per farlo funzionare il sinergia con un compilatore C? Quale compilatore mi consigliate?
Se qualcuno di voi ha fatto questo progetto come esame può darmi qualche dritta e/o links utili? Grazie mille ragà |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Che intendi per assemblatore ?
Il simulatore non è difficilissimo...è abbastanza meccanico e palloso... |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
Quote:
non mi dire che è una lunga serie di IF..... |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Dopo tutto si tratta di : 1) riconoscere l'istruzione (fase di fetch) 2) caricare gli operatori (se ci sono si vede dalla codifica opcode) (fase di load) 3) fare l'operazione implicata dall'istruzione e eventuale lettura/scrittura in memoria o nei registri (fase di execute e di store) La struttura di memoria è molto semplice....il simulatore si deve tenere 2 buffer di memoria da 64Kbyte ciuascuno...uno per il segmento codice (il codice deve venire subito caricato in memoria, così fa ogni sistema operativo) e uno per i dati... Un'altra struttura deve contenere i vari registri del processore virtuale... La parte più lunga è lo studio di come viene formato il codice operativo e di come vengono codificati gli operatori...il + complesso dovrebbe essere il mov...pensare che alle superiori la sapevo a memoria... |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Mi ero dimenticato lo stack segment...altri 64 kb...
Chiaramente se uno vuole aggiungere un supporto all'emulazione più ampio deve permettere il cambio di segmento in runtime...e la condivisione di segmento (come avviene nel modello di memoria Tiny...un solo segmento da 64kb per stack e dati)... Quindi diciamo che allocando un buffer di 1 Mb per la memoria di sistema si può fare tutto... Poi se si vuole andare oltre si può prevedere il riconoscimento delle più semplici interruzioni software...per gestire qualche rudimento di I\O... |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
ehm...
io dovrei cominciare con studiare l'architettura dell'8086 cmq l'assemblatore deve operare in 2 passaggi e mi sa tanto che avete ragione: sarà una lunga case... Il prof non vuole che il sorgente venga caricato tutto in memoria perchè si presume che ad assemblare sia una macchina con poca RAM. Il simulatore deve tener conto delle istruzioni elementari di I/O (deve saper gestire tastiera e schermo) e non deve simulare il microcodice delle istruzioni. Posso contare sul vostro aiuto? Riguardo l'editor e il compilatore C da usare che mi dite? |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Allora non ho capito...
Cosa intendi per assemblatore e simulatore ? |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
mi spiego meglio:
dobbiamo realizzare un programma che legge un sorgente assembler per processore 8086 e lo traduce in linguaggio macchina. Successivamente questo programmino in linguaggio macchina deve essere caricato ed eseguito da un altro programma fatto da noi che deve simulare l'esecuzione dell'8086, senza gestire interrupt e routine del sistema operativo (chiaramente) ma gestendo l'I/O della tastiera e del monitor.
Dovrei avere il compilatore C++ della Borland, che scaricai diversi mesi fa dal suo sito, pensi sia buono? Grazie |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Mi manca ancora un punto...il simulatore hai detto che cimula solo i/o...ma le istruzioni in linguaggio macchina del programma assemblato chi le esegue ? Come fai ad interfacciare il simulatore con il programma assemblato ?
Il compilatore Borland va benissimo... |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
il simulatore simula ANCHE I/O, le uniche cose che non bisogna simulare sono gli interrupt
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ok...allora sottoscrivo tutto quello che ti ho detto prima...
Per caricare tutto il programma in memoria...intendevo dire che il simulatore deve caricare tutto il programma in memoria... Per il simulatore alloca 1 Mbyte...che in effetti è tutto lo spazio fisico indirizzabile da un 8086... |
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
cionci in un post di qualche tempo fa lessi che per un esame avevi scritto un compilatore: per quale linguaggio? quanto tempo ci hai messo?
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Era un compilatore C++ un po' ristrestto...
Funzioni con passaggio di parametri, solo interi con aritmetica di base...input e output di base...scope locale o globale delle variabili... Ci ho emsso circa 2 mesi (lavorandoci una decina di ore settimanali)...ed eravamo in due... Un assemblatore è molto + semplice...il compilatore deve fare anche un parsing completo...deve riconoscere blocchi a + livelli e roba del genere...l'albero derivato dal parsing può avere una profondità anche notevole... Su un assemblatore tutte le istruzioni stanno allo stesso livello e come figli hanno i parametri che sono al + due... Un simulatore lo abbiamo fatto per una CPU didattica...pensa che era scritto in assembler Assemblatori non ne ho fatti...ma in pratica dovrebbe fare un primo passaggio per sostituire le etichette con gli indirizzi relativi di memoria delle variabili, per indicizzare il codice (associando ad ogni istruzione la sua lunghezza e la posizione nel segmento) e sostituire le etichette di salto con l'indirizzo di salto all'interno del segmento...poi il secondo passaggio deve fare la traduzione vera e propria... |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
architettura 8086
mi date dei links per l'architettura dell'8086? mi serve materiale il più approfondito possibile
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
ftp://download.intel.com/support/con...ral/231455.pdf
In fondo a questo documento c'è il codice operativo di ogni istruzione... |
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
Grazie cionci, sei sempre molto disponibile
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Niente
|
|
|
|
|
|
#20 |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
ripesco il topic
Sto vedendo un pò di realizzare la procedura che deve analizzare il sorgente su disco per assemblarlo. Secondo voi è più conveniente leggere una riga alla volta (con quale istruzione?), metterla in una stringa e farci tutti i controlli, oppure leggere un char alla volta e controllare al momento se EOF, \n, " ", ect..?
Sto da 3 ore sulla seconda soluzione ma mi sembra quasi impossibile. Se potete, mi date una mano? |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:10.



















