TardoFreak ha scritto:hai di sicuro un registro che punta all' istruzione da interpretare (chiamiamolo program counter)
Certo
TardoFreak ha scritto:ed uno stack software per le chiamate a subroutines
Non so se è quello che intendi, comunque ho semplicemente un'array che contiene gli indirizzi a cui deve andare il program counter quando trova un'istruzione 'jump'. Prima di eseguire il programma, l'interprete fa una scansione di tutto il bytecode e cerca i 'label', aggiungendoli all'array.
TardoFreak ha scritto:Nulla ti vieta di avere più program counter (uno per ogni task) e far interpretare un' istruzione al primo task, poi un' istruzione al secondo ... e così via.
Lo so, non è questo il problema, infatti precedentemente ho scritto che se avessi tutti i programmi caricati in RAM non sarebbe un problema, ma il problema è leggere dalla SD due programmi contemporaneamente.
Comunque una mezza idea di come fare mi sta venendo, ho in mente di creare un array bidimensionale per il buffer, in cui la prima dimensione rappresenta il programma, e la seconda l'indirizzo del buffer.
Mi metterò tra un po' a trafficare
Prima però devo sistemare il discorso dei label che dicevo prima, non mi piace che prima di eseguire ogni programma l'interprete faccia la scansione di tutto il bytecode per cercarli, penso che inserirò gli indirizzi dei label nel file eseguibile durante la compilazione, in modo che l'interprete gli carichi subito.