2009-07-08

architecture

6.27:

. there are 2 levels of extension:
c-coded, and adda-coded .

. c-coded ext's are c modules that get linked to addm;
this causes addm to need recompiling too,
but addm itself is a very small module
being used only for coordinating calls to many other ext' modules .

. adda-coded ext's are bytecode or wordcode data files
that addm can use as exe'able files .

. wordcode.files come from compiling adda.txt into
high-level function calls that addm can execute only slowly;
most of the calls are to functions provided by the adda library .
. bytecode.files come from having optimized wordcode.files
by translating them to addm's native instruction set .

. addx supports lisp-like functionality,
where a program can generate code that it can later use .
. on restricted platforms that don't provide
program control of c compilers and linkers,
all lisp-like functionality is done at the adda-coded level .
. in either case, adda provides a compile.operation,
which allows optimizing for {compile time, speed, space};
but on the restricted systems,
adda can be compiled only to addm`bytecode,
while on others, adda can be compiled to c code,
which essentially means being compiled to the platform's native code .