Ngaro é uma máquina virtual portátil para uma arquitetura dual-stack. O conjunto de instruções é essencialmente um subconjunto de Forth. Embora limitada na sua capacidade de interagir com o sistema operacional subjacente, que deve ser suficiente para permitir uma variedade de programas a serem gravados e funcionar nele.
O pacote inclui alguma documentação básica, o código fonte completo, o compilador diante da máquina, e alguns pequenos exemplos.
Uso:
imagename ./ngaro
O conjunto de instruções é mantido minimalista. O conjunto exato de instruções
mudanças ocasionalmente, mas a seguinte lista tem se mantido estável durante cerca de um
ano. (Os três últimos, lidando com o modelo I / O baseada em portas, são novos)
0 NOP Não faz nada
1 LIT Empurre o valor da seguinte célula à pilha
2 DUP Duplicate topo
item da pilha
3 GOTA o primeiro item
na pilha
4 de swap cambial os dois primeiros
itens na pilha
5 Push Push o primeiro item na
a pilha para o
pilha de endereços, drop
TOS
6 Pop o item superior de
o endereço empilhar off
e colocá-lo no
pilha de dados
7 ligação Ligue o endereço que
o seguinte literal
corresponde a
8 salto salto para o endereço
que a seguinte
corresponde literais
para
9; Retornar para o chamador,
usado com CHAMADA
10> salto salto condicional. Ele
compara TOS e NOS.
11 bits Shift direita
25 0; Exit (e soltar) se
TOS é 0
26 1+ Incremento TOS por 1
27 1- TOS Decremento por 1
28 em Ler um porto
29 OUT loja a uma porta
30 de esperar, esperar por um baseado em porta-
solicitar a terminar
Se um código de operação não suportado for encontrado, o registo IP interal está definido para
no final da memória. Execução do código de imagem irá parar quando isso acontece.
Algumas instruções de fazer uso de uma célula para a seguinte ou contêm endereços
valores. Estes são:
1 LIT
7 CHAMADA
8 SALTO
10> salto
11
O que é novo nesta versão:.
- Esta versão traz versões de todas as implementações e documentação substancialmente atualizado atualizado
- Existem agora 14 implementações escritos em Python, Ruby, Perl, Lisp comum, Assembleia x86, a ANS Forth, JavaScript, Retro, Lua, Java, C, C #, F #, e Ir.
Comentários não encontrado