Ngaro es una máquina virtual portátil para una arquitectura de doble pila. El conjunto de instrucciones es esencialmente un subconjunto de Forth. Aunque limitado en su capacidad de interactuar con el sistema operativo subyacentes, debería ser suficiente para permitir una variedad de programas para ser escrito y ejecutar en él.
El paquete incluye alguna documentación básica, el código fuente completo, el compilador de la máquina a otro, y algunos pequeños ejemplos.
Uso:
imagename ./ngaro
El conjunto de instrucciones se mantiene minimalista. El conjunto exacto de instrucciones
cambios de vez en cuando, pero la siguiente lista se ha mantenido estable durante aproximadamente un
año. (Los tres últimos, que trata con el modelo E / S basada en puertos, son nuevos)
0 NOP No hace nada
1 LIT Empuje el valor de la siguiente celda a la pila
2 DUP Duplicar la parte superior
elemento de la pila
3 GOTA Gota del elemento superior
en la pila
4 SWAP Intercambio entre los dos primeros
elementos de la pila
5 Push Push el elemento superior en
la pila para la
pila de direcciones, la caída
TOS
6 POP Pop el elemento superior de
la dirección de la pila fuera
y lo puso en el
pila de datos
7 LLAMADA Llamada la dirección que
el siguiente literal
corresponde a
8 Salto Salto a la dirección
que la siguiente
corresponde literales
a
9; Retorno a la persona que llama,
utilizado con CALL
10> SALTAR salto condicional. Ella
compara TOS y NOS.
11 bits de desplazamiento a la derecha
25 0; Salir (y soltar) si
TOS es 0
26 1+ Incremento TOS por 1
27 1- TOS decremento de 1
28 EN Leer un puerto
29 OUT tienda a un puerto
Espere 30 espera para una basada en puerto-
solicitar para terminar
Si se encuentra un código de operación no compatible, el registro IP interal se establece en
el final de la memoria. La ejecución del código de la imagen se detendrá cuando esto sucede.
Unas pocas instrucciones hacen uso de una célula a la siguiente contiene direcciones o
valores. Estos son:
1 LIT
7 LLAMADA
8 SALTO
10> salto
11
¿Qué hay de nuevo en esta versión:.
- Esta versión trae versiones de todas las implementaciones y documentación actualizada sustancialmente actualizado
- En la actualidad hay 14 implementaciones escrito en Python, Ruby, Perl, Common Lisp, Asamblea x86, ANS Forth, JavaScript, retro, Lua, Java, C, C #, C #, y listo.
Comentarios que no se encuentran