AGATE
All Good Acronyms Taken, Evidently
What is it?
AGATE is... hard to describe. We represent compiled programs using
dynamic grammars, and by generating sentences using the grammar, we
are essentially building an execution trace of the program. Instructions
correspond to terminal symbols in the grammar, and we execute instructions
as the execution trace is generated. This has some interesting side
effects:
- Control flow in the program can be done using only the grammar
mechanism. No explicit control flow instructions are needed.
- The "operating system" kernel is a nanokernel which just
generates sentences from the grammar. The kernel can perform
nonpreemptive multitasking, and unlike other nonpreemptive
systems, cannot lose control of the system if a
program misbehaves.
- We can have multiple processes, each with its own grammar. Inter-process
communication (semaphores and messages) is accomplished solely
through the grammar mechanism too.
- Code decompression is a natural by-product of this approach.
Note that this translation into dynamic grammars is done at a low level,
so the user never sees the grammar at all.
Demo
A demonstration of AGATE's mechanism is available.
People
Publications