Cybiko Bytecode Interpreter

Internal Register Assignments

Internally, bytecode interpreter (i.e. vm_exec() function found in the bytecode.dl dynamic library) uses the following register assignments:

er0 virtual register R0 (accumulator/pointer for indirect loads),

er1 virtual register R1 (aux data register/pointer for indirect saves),

er2 'this' for the object/actor/struct being processed,

er3 scratch register,

er4 table of extension functions (caller-supplied),

er5 table of built-in opcodes,

er6 p-code instruction pointer (static data/code space),

er7 stack pointer.