Realizzazione Compilativa per VSL
Realizzazione compilativa della macchina astratta VSL (Very Simple Language) sulla macchina JAVA
La grammatica di VSL
Programma ::= Istr; | Istr;ProgrammaIstr ::= m[x] <-0 | m[x] <-1 | m[x] <-m[y] |
m[x] <-m[y]ANDm[z] |m[x] <-m[y]ORm[z] | if B then Istr
B ::= m[x]=0 | m[x]=1 | m[x]=m[y]
dove il significato delle istruzioni e' il seguente:
m[x] <- 0 (nella cella di memoria di indirizzo x poni 0)
m[x] <- 1 (nella cella di memoria di indirizzo x poni 1)
m[x] <- m[y]
(nella cella di memoria di indirizzo x poni il contenuto della cella di indirizzo y)
m[x] <- m[y]ANDm[z]
(nella cella di memoria di indirizzo x poni l'OR del contenuto della cella di indirizzo y con quello della cella z)
m[x] <- m[y]ORm[z]
(nella cella di memoria di indirizzo x poni l'OR del contenuto della cella di indirizzo y con quello della cella z)
Inoltre x, y e z possono avere come valori solo 0, 1, 2, 3.
Questo significa che la memoria per i dati associata al nostro linguaggio ha solo quattro celle. Inoltre queste celle della parte di memoria riservata ai dati sono formate da un unico bit (possiamo memorizza rci solo 0 oppure 1).
Ovviamente questo linguaggio ha una potenza computazionale ed espressiva estremamente limitata.