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 rotcomo una alternativa para -rot? ¿Qué sucede cuando hay más de 3 artículos en la pila? ¿No tendrías que hacerlo rottan a menudo como los Length-1tiempos para lograrlo -rot?
dup, swapy rotyo 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 ies negativo, rolldesplaza los elementos hacia la izquierda; más a la derecha.