ARSIP, ARS++, A++, ACOMP, AVIM, Scheme, properly tail recursive,
full continuations



ARS++ is an implementaion of A++ with a rich set of primitive abstractions providing the functionality of Scheme and more. (The primary name is ARS++ but because some search engines have problems with special characters in keywords, an alternate name ARSIP was chosen, standing for 'ars in progress'.) The implementation is built on ARSAPI for C and includes a Compiler and an Interpreter for the compiled code.

The Compiler ACOMP is written in Scheme and generates code for a virtual machine called AVIM, which is modelled after the SECD-Machine invented by J. Landin.

ARS++ has the following features:

Virtual Machine AVIM:

The following two lists describe the registers of the virtual machine AVIM and the machine instructions that can be executed by AVIM.

AVIM Registers:

Machine Instructions:

LDCT: Load a constant into the S register.
LDVR: Load a variable into the S register.
LDVRI: Indirect addressing of variable.
LDFN: Load the definition of a function into the S register.
LOAD: Load instructions from a code file into the C register.
NIL: Mark the beginning of a list of arguments or a list of declarations of variables.
BIND: Bind the topmost two entries as a 'name value' pair and insert the pair into the open symbol table on the stack.
ARG: Definition of an argument for a following function call.
ADDF: Add a symbol table to the current environment.
DELF: Remove the youngest symbol table from the current environment.
DEF: Definition or modification of a variable in the current environment.
STVL: Store a value from the S register into a variable of the current environment.
POP: Remove the topmost value in the S register.
IF: Open a conditional construct.
ENDIF: Close a conditional construct.
EOX: End of expression.
CCALL: Call a function passing the current continuation as argument.
TCALL: Tail recursive call of a function.
ACALL: Apply a function to its arguments.
RTN: Return from function to caller.
HLT: Terminate program.

ARS++ is presented in detail in 'Programmierung pur'

Home | Lambda Calculus | ARS/A++ | ARSAPI | New Book on ARS | Demonstration Programs | Links
© 1999-2005 Georg P. Loczewski. All Rights Reserved.