Opcodes
The Guardian VM supports 40+ opcodes:
- Stack: PUSH_INT, PUSH_FLOAT, PUSH_BOOL, PUSH_STRING, POP, DUP, SWAP
- Arithmetic: ADD, SUB, MUL, DIV, MOD
- Control Flow: JMP, JMP_IF, JMP_IF_NOT, CALL, RET
- Variables: STORE, LOAD
- Print: PRINT, PRINTLN, SPACE, NEWLINE
- Arrays: MAKE_ARRAY, ARRAY_GET, ARRAY_SET
- Dictionaries: MAKE_DICT, DICT_GET, DICT_SET
- Molecules: MAKE_MOLECULE, STORE_ATOM, GET_ATOM
Running Bytecode
vm::VM vm;
vm.load(bytecode);
vm.run();
Code Generation
vm::CodeGen codegen;
codegen.pushInt(42);
codegen.pushString("Hello");
codegen.print();
codegen.halt();
auto bytecode = codegen.getBytecode();