The Assembly Virtual Machine, or AVM, is a bytecode interpreter with Just-in-Time (JIT) and static translation capabilities that "execute" .APP portable applications. It is quite a complex piece of software, and the specification is still being developed.
The AVM itself is a full emulation of a Von Neumann-architecture computer, with a simulated Central Processing Unit (CPU), Random Access Memory (RAM), alongside the necessary controllers and periphery.
Note: It is yet to be decided if the execution model should be based on the single operand (Accumulator-based) or multiple operand (Register-to-Register/Memory-to-Memory) model(s), however the underlying hardware the AVM is executed on will influence the decision on which model to adopt.
The AVM also gives the option of memory protection, allowing instruction segments to be partitioned from data and stack segments. This feature is specified in the .APP configuration file, or can be over-ridden (see AVM Operation).
The following parameters can be passed to AVM when executing an application:
|<filename>||Filename of the application to execute||N/A|
|-m <n>||Size of memory heap (n Mb) to allocate||0|
|-p||Enforce memory protection||Not Enabled|
|-j||Utilize Just-In-Time runtime execution||Not Enabled|
|-t||Translate the application into a native binary||Not Enabled|