data stack: used for arguments in functions and arithmetic operations call stack: remembers in what class execution is in right now example: root /\ main /\ print (func) database stack: contains maps which contain all local variables in the current class variables map: stores all global variables instruction set: 0x00 add add the 2 numbers on the data stack and pushes the result onto the data stack 0x01 sub subtract the 2 numbers on the data stack and pushes the result onto the data stack 0x02 mul multiply the 2 numbers located on the data stack and pushes the result onto the data stack 0x03 div divide the 2 numbers located on the data stack and pushes the result onto the data stack 0x04 indget index using getindex in the class ontop of the data stack 0x05 indset set index using setindex in the class ontop of the data stack 0x06 goup goes out of the current attribute 0x07 godown goes into an attribute of the current selected class 0x08 goroot goes to the root of the program 0x09 call call a function (also works for module classes), the function must be first on the data stack, the operand says how many arguments are given to function which in turn decides how many things are poped off the stack 0x0A load loads the specified attribute from the current class into the data stack 0x0B save saves the top of the data stack into the specified attribute of the current class 0x0C loadg loads the specified global variable into the data stack 0x0D saveg saves the top of the data stack into the specified global variable 0x0E loado loads operand on top of the data stack 0x0F copy copy top of the data stack onto specified attribute of current 0x10 ret exits out of the current function operand specifying: 0x00 = integer, 4 units 0x01 = float, 8 units split in 2, first 4 units are before comma, and rest are after comma 0x02 = string, units, with a terminating character at the end 0x03 = empty class