Estoy creando una máquina virtual orientada a la pila, así que comencé a aprender Forth para una comprensión general sobre cómo funcionaría. Luego seleccioné las operaciones esenciales de manipulación de la pila que necesitaría implementar en mi máquina virtual:
drop ( a -- )
dup ( a -- a a )
swap ( a b -- b a )
rot ( a b c -- b c a )
Creo que las siguientes cuatro operaciones de manipulación de la pila se pueden utilizar para simular cualquier otra operación de manipulación de la pila. Por ejemplo:
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
Dicho esto, sin embargo, quería saber si he enumerado todas las operaciones fundamentales de manipulación de la pila necesarias para manipular la pila de alguna manera posible.
¿Hay más operaciones fundamentales de manipulación de pila que necesitaría implementar, sin las cuales mi máquina virtual no estaría completa?
rot rot
como una alternativa para -rot
? ¿Qué sucede cuando hay más de 3 artículos en la pila? ¿No tendrías que hacerlo rot
tan a menudo como los Length-1
tiempos para lograrlo -rot
?
dup
, swap
y rot
yo uso pick ( a_n ... a_0 n -- a_n ... a_0 a_n)
y en su roll ( a_n ... a_0 n i )
lugar. Si i
es negativo, roll
desplaza los elementos hacia la izquierda; más a la derecha.