Sto creando una macchina virtuale orientata allo stack e così ho iniziato a imparare Forth per una comprensione generale di come avrebbe funzionato. Quindi ho selezionato le operazioni essenziali di manipolazione dello stack che avrei dovuto implementare nella mia macchina virtuale:
drop ( a -- )
dup ( a -- a a )
swap ( a b -- b a )
rot ( a b c -- b c a )
Credo che le seguenti quattro operazioni di manipolazione dello stack possano essere utilizzate per simulare qualsiasi altra operazione di manipolazione dello stack. Ad esempio:
nip ( a b -- b ) swap drop
-rot ( a b c -- c a b ) rot rot
tuck ( a b -- b a b ) dup -rot
over ( a b -- a b a ) swap tuck
Detto ciò, volevo sapere se ho elencato tutte le operazioni fondamentali di manipolazione dello stack necessarie per manipolare lo stack in qualsiasi modo possibile.
Ci sono altre operazioni fondamentali di manipolazione dello stack che avrei bisogno di implementare, senza le quali la mia macchina virtuale non sarebbe completa con Turing?