Skip to content

Mat2/extended-ngaro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Extended Ngaro VM
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is a very low-level, but platform independent, vm written
in C. It evolved from Ngaro (see Retro Forth 10) and is binary
compatible with it.

It is uncommon mainly in tree aspects:

* New instructions can be generated at runtime (which extend
  the instruction set) from vm-code sequences.

* The vm encoding is extended though a native-code compiler
  with added support for stack and register operations. This 
  way optimized machine code can be generated in a platform 
  independent way.

* It's a accumulator/store design with efficient interpretation
  in mind.

Current status (version 0.1):

* The vm is usable and the compiler can be invoked from Ngaro
  with opcode 31 (ins). Compiled traces are executable with
  opcode 32 (aot) and tail branch locations can be computed
  with opcode 33 (cofs).

* A simple assembler and disassembler (retrospect) is included
  in the retro vm-image.

TO-DO for version 0.2:

* x86-64 and ARM back-ends.
* Documentation (ISA, compiler and optimation guides).

TO-DO for version 0.3:

* PowerPC and TMS320C64x back-ends.
* add port interfaces for block (via virtual images) and 
  serial devices (keyboard, mouse, etc), GPU, interrupts,
  multiprocessing.

Compilation:

* "make"

Remark:

The replicated-switch threading method performs better on my
Athlon64 3000x than the older token threading interpreter 
(see ngaro-fast [retro10.1]) and results in an equal 
performance on Celeron M and possibly Atom based cpu's.

For a maximum of performance use the AOT compiler, generate an
individual instruction set for your application and optimate
the microcode. The extended-instruction set allows very 
sophisticated optimation strategies !

About

High performance, dynamic vm for parallel processing and system programming

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages