Estou criando uma máquina virtual orientada a pilha e, então, comecei a aprender a Forth para uma compreensão geral sobre como ela funcionaria. Em seguida, selecionei as operações essenciais de manipulação de pilha que precisaria implementar na minha máquina virtual:
drop ( a -- )
dup ( a -- a a )
swap ( a b -- b a )
rot ( a b c -- b c a )
Acredito que as quatro operações de manipulação de pilha a seguir possam ser usadas para simular qualquer outra operação de manipulação de pilha. Por exemplo:
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
Dito isto, porém, eu queria saber se listei todas as operações fundamentais de manipulação de pilha necessárias para manipular a pilha de qualquer maneira possível.
Existem operações de manipulação de pilha mais fundamentais que eu precisaria implementar, sem as quais minha máquina virtual não estaria completa com Turing?
rot rotcomo uma alternativa para -rot? O que acontece quando há mais de 3 itens na pilha? Você não precisaria rottantas Length-1vezes quantas vezes conseguir -rot?
dup, swape roteu uso pick ( a_n ... a_0 n -- a_n ... a_0 a_n)e em roll ( a_n ... a_0 n i )vez disso. Se ifor negativo, rolldesloca os elementos para a esquerda; mais para a direita.