|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2004
Messaggi: 124
|
Macchina virtuale
.. saluti!
In questi giorni mi sto dilettando nel creare una piccola macchina virtuale che interpreterà il simil-codice macchina che un linguaggio andrà a creare. L'idea che ho in testa, che poi è quella suggeritomi anche dal mio professore d'informatica, è questa: * una classe astratta (ad esempio Istruzione) cui tutte le mie istruzioni implementeranno contenente un metodo di tipo esegui(); * ogni istruzione è appunto una classe che eredita da quella astratta e va a reimplementare il metodo esegui(); * la classe principale, la macchina virtuale, che ha in ingresso un array di tipo Istruzione con tutti i comandi e che quindi fa una chiamata polimorfa al famoso esegui(); Un esempio di programma può essere questo: Codice:
class Esempio{
public static void main(String[] args){
Istruzione[] programma = {
new Input(),
new Incr(),
new Incr(),
new Output(),
new Alt()
};
Macchina machine = new Macchina(programma, 10);
machine.interpreta();
}
}
La domanda è: è questo il metodo migliore o è presente anche un altro più efficiente? Avete idee o proposte? Bisogna tener conto che farà il codice farà questi passaggi: linguaggio inventato -> linguaggio macchina inventato -> java -> virtual machine java -> codice macchina Insomma, si farà un bel giro .. e quello che cerco è appunto efficienza per non avere tanti colli di bottiglia. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Napoli (provincia)
Messaggi: 2372
|
Non sono un esperto, ma come metodo mi sembra ragionevole.
__________________
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:01.











Raffo™ (io, non la birra) |
|








