Template:LSO Bytecodes
Jump to navigation
Jump to search
| Name | Value | Description | arg0 size | arg1 size |
|---|---|---|---|---|
| NOOP | 0x00 | Does nothing | ||
| 0xC0 | Pop type.Right from the stack and send it to stdout. | type
| ||
| POP | 0x01 | Pops a dword from the stack. | ||
| POPS | 0x02 | Pops a dword from the stack and deallocates it from the heap as a string | ||
| POPL | 0x03 | Pops a dword from the stack and deallocates it from the heap as a list | ||
| POPV | 0x04 | Pops 3 dwords from the stack. | ||
| POPQ | 0x05 | Pops 4 dwords from the stack. | ||
| POPARG | 0x06 | Pops arg0 bytes from the stack. | dword
| |
| POPIP | 0x07 | Pop dword and set it to InstructionPointer | ||
| POPBP | 0x08 | Pop dword and set it to BasePointer | ||
| POPSP | 0x09 | Pop dword and set it to StackPointer | ||
| POPSLR | 0x0A | Pop dword and set it to the SleepRegister
| ||
| DUP | 0x20 | Copy dword from stack and push the copy onto the stack. | ||
| DUPS | 0x21 | Copy string from stack and push the copy onto the stack. | ||
| DUPL | 0x22 | Copy list from stack and push the copy onto the stack. | ||
| DUPV | 0x23 | Copy 3 dwrods from stack and push the copy onto the stack. | ||
| DUPQ | 0x24 | Copy 4 dwrods from stack and push the copy onto the stack.
| ||
| STORE | 0x30 | Copy a dword from the stack and store to local arg0 address. | dword | |
| STORES | 0x31 | Copy a string from the stack and store to local arg0 address. | dword | |
| STOREL | 0x32 | Copy a list from the stack and store to local arg0 address. | dword | |
| STOREV | 0x33 | Copy 3 dwords from the stack and store to local arg0 address. | dword | |
| STOREQ | 0x34 | Copy 4 dwords from the stack and store to local arg0 address. | dword
| |
| STOREG | 0x35 | Copy a dword from the stack and store to global arg0 address. | dword | |
| STOREGS | 0x36 | Copy a string from the stack and store to global arg0 address. | dword | |
| STOREGL | 0x37 | Copy a list from the stack and store to global arg0 address. | dword | |
| STOREGV | 0x38 | Copy 3 dwords from the stack and store to global arg0 address. | dword | |
| STOREGQ | 0x39 | Copy 4 dwords from the stack and store to global arg0 address. | dword
| |
| LOADP | 0x3A | Pop a dword from the stack and store to local arg0 address. | dword | |
| LOADSP | 0x3B | Pop a string from the stack and store to local arg0 address. | dword | |
| LOADLP | 0x3C | Pop a list from the stack and store to local arg0 address. | dword | |
| LOADVP | 0x3D | Pop 3 dwords from the stack and store to local arg0 address. | dword | |
| LOADQP | 0x3E | Pop 4 dwords from the stack and store to local arg0 address. | dword
| |
| LOADGP | 0x3F | Pop a dword from the stack and store to global arg0 address. | dword | |
| LOADGSP | 0x40 | Pop a string from the stack and store to global arg0 address. | dword | |
| LOADGLP | 0x41 | Pop a list from the stack and store to global arg0 address. | dword | |
| LOADGVP | 0x42 | Pop 3 dwords from the stack and store to global arg0 address. | dword | |
| LOADGQP | 0x43 | Pop 4 dwords from the stack and store to global arg0 address. | dword
| |
| PUSH | 0x50 | Push a dword from the local address arg0 to the stack. | dword | |
| PUSHS | 0x51 | Push a string from the local address arg0 to the stack. | dword | |
| PUSHL | 0x52 | Push a list from the local address arg0 to the stack. | dword | |
| PUSHV | 0x53 | Push 3 dwords from the local address arg0 to the stack. | dword | |
| PUSHQ | 0x54 | Push 4 dwords from the local address arg0 to the stack. | dword
| |
| PUSHG | 0x55 | Push a dword from the global address arg0 to the stack. | dword | |
| PUSHGS | 0x56 | Push a string from the global address arg0 to the stack. | dword | |
| PUSHGL | 0x57 | Push a list from the global address arg0 to the stack. | dword | |
| PUSHGV | 0x58 | Push 3 dwords from the global address arg0 to the stack. | dword | |
| PUSHGQ | 0x59 | Push 4 dwords from the global address arg0 to the stack. | dword
| |
| PUSHIP | 0x5A | Push InstructionPointer onto the stack | ||
| PUSHBP | 0x5B | Push BasePointer onto the stack | ||
| PUSHSP | 0x5C | Push StackPointer onto the stack
| ||
| PUSHARGB | 0x5D | Pop type <byte> from the stack and push into buffer for list (use to prepare list entries) | Type | |
| PUSHARGI | 0x5E | Push the following dword onto the stack (used for integer or float) | ||
| PUSHARGF | 0x5F | Push the following dword onto the stack (used for float) | ||
| PUSHARGS | 0x60 | Push the following null terminated string onto the stack (used for string or key) | ||
| PUSHARGV | 0x61 | Push the following 3 dwords onto the stack (used for vector) | ||
| PUSHARGQ | 0x62 | Push the following 4 dwords onto the stack (used for rotation/quaternion)
| ||
| PUSHE | 0x63 | Push a zero dword onto the stack | ||
| PUSHEV | 0x64 | Push 3 zero dwords onto the stack | ||
| PUSHEQ | 0x65 | Push 4 zero dwords onto the stack | ||
| PUSHARGE | 0x66 | Push arg0 zero bytes onto the stack. | dword
| |
| CAST | 0xA0 | Pop type.Left, convert Left to type.Right and push the result onto the stack. | type | |
| NEG | 0x80 | Pop type.Right, push result of (-Right) onto the stack. | type | |
| ADD | 0x70 | Pop type.Right then type.Left, push result of (Left + Right) onto the stack. | type | |
| SUB | 0x71 | Pop type.Right then type.Left, push result of (Left - Right) onto the stack. | type | |
| MUL | 0x72 | Pop type.Right then type.Left, push result of (Left * Right) onto the stack. | type | |
| DIV | 0x73 | Pop type.Right then type.Left, push result of (Left / Right) onto the stack. | type | |
| MOD | 0x74 | Pop type.Right then type.Left, push result of (Left % Right) onto the stack. | type | |
| EQ | 0x75 | Pop type.Right then type.Left, push result of (Left == Right) onto the stack. | type | |
| NEQ | 0x76 | Pop type.Right then type.Left, push result of (Left != Right) onto the stack. | type | |
| LEQ | 0x77 | Pop type.Right then type.Left, push result of (Left <= Right) onto the stack. | type | |
| GEQ | 0x78 | Pop type.Right then type.Left, push result of (Left >= Right) onto the stack. | type | |
| LESS | 0x79 | Pop type.Right then type.Left, push result of (Left < Right) onto the stack. | type | |
| GREATER | 0x7A | Pop type.Right then type.Left, push result of (Left > Right) onto the stack. | type | |
| BITAND | 0x7B | Pop dword (Right) then dword (Left), push result of (Left & Right) onto the stack. | ||
| BITOR | 0x7C | Pop dword (Right) then dword (Left), push result of (Left | Right) onto the stack. | ||
| BITXOR | 0x7D | Pop dword (Right) then dword (Left), push result of (Left ^ Right) onto the stack. | ||
| BOOLAND | 0x7E | Pop dword (Right) then dword (Left), push result of (Left && Right) onto the stack. | ||
| BOOLOR | 0x7F | Pop dword (Right) then dword (Left), push result of (Left || Right) onto the stack. | ||
| BITNOT | 0x81 | Pop dword (Right), push result of (~Right) onto the stack. | ||
| BOOLNOT | 0x82 | Pop dword (Right), push result of (!Right) onto the stack. | ||
| SHL | 0xE0 | Pop dword (Right) then dword (Left), push result of (Left << Right) onto the stack. | ||
| SHR | 0xE1 | Pop dword (Right) then dword (Left), push result of (Left >> Right) onto the stack.
| ||
| JUMP | 0x90 | Jump to offset arg0 local to this instruction. arg0 is signed. | dword | |
| JUMPIF | 0x91 | Pop type.Right, if Right is executes to true jump to offset arg1 local to this instruction. arg1 is signed. | type | dword |
| JUMPNIF | 0x92 | Pop type.Right, if Right is executes to false jump to offset arg1 local to this instruction. arg1 is signed. | type | dword
|
| STATE | 0x93 | Change state to arg0 and return (see RETURN) | dword | |
| RETURN | 0x95 | Revert the Instruction and Stack pointers.
| ||
| STACKTOS | 0xB0 | Pop arg0 bytes from the stack, store them as a string on the heap and push a string pointer onto the stack. | dword | |
| STACKTOL | 0xB1 | Pop arg0 objects from the stack, store them as a list on the heap and push a list pointer onto the stack. | dword
| |
| CALL | 0x94 | Execute user function arg0. | dword | |
| CALLLIB | 0xD0 | Execute built-in function arg0 | byte | |
| CALLLIB_TWO_BYTE | 0xD1 | Execute built-in function arg0 | word |