Browse Source

add basic CodeObject, Opcode, and Opnames

master
Brett Langdon 10 years ago
parent
commit
5ce9501a55
3 changed files with 255 additions and 0 deletions
  1. +8
    -0
      bytecode/codeobject.go
  2. +127
    -0
      bytecode/opcode.go
  3. +120
    -0
      bytecode/opname.go

+ 8
- 0
bytecode/codeobject.go View File

@ -0,0 +1,8 @@
package bytecode
type CodeObject struct {
}
func NewCodeObject() *CodeObject {
return &CodeObject{}
}

+ 127
- 0
bytecode/opcode.go View File

@ -0,0 +1,127 @@
package bytecode
type Opcode int
const (
POP_TOP Opcode = iota
ROT_TWO
ROT_THREE
DUP_TOP
DUP_TOP_TWO
NOP
UNARY_POSITIVE
UNARY_NEGATIVE
UNARY_NOT
UNARY_INVERT
BINARY_MATRIX_MULTIPLY
INPLACE_MATRIX_MULTIPLY
BINARY_POWER
BINARY_MULTIPLY
BINARY_MODULO
BINARY_ADD
BINARY_SUBTRACT
BINARY_SUBSCR
BINARY_FLOOR_DIVIDE
BINARY_TRUE_DIVIDE
INPLACE_FLOOR_DIVIDE
INPLACE_TRUE_DIVIDE
GET_AITER
GET_ANEXT
BEFORE_ASYNC_WITH
INPLACE_ADD
INPLACE_SUBTRACT
INPLACE_MULTIPLY
INPLACE_MODULO
STORE_SUBSCR
DELETE_SUBSCR
BINARY_LSHIFT
BINARY_RSHIFT
BINARY_AND
BINARY_XOR
BINARY_OR
INPLACE_POWER
GET_ITER
GET_YIELD_FROM_ITER
PRINT_EXPR
LOAD_BUILD_CLASS
YIELD_FROM
GET_AWAITABLE
INPLACE_LSHIFT
INPLACE_RSHIFT
INPLACE_AND
INPLACE_XOR
INPLACE_OR
BREAK_LOOP
WITH_CLEANUP_START
WITH_CLEANUP_FINISH
RETURN_VALUE
IMPORT_STAR
YIELD_VALUE
POP_BLOCK
END_FINALLY
POP_EXCEPT
HAVE_ARGUMENT
STORE_NAME
DELETE_NAME
UNPACK_SEQUENCE
FOR_ITER
UNPACK_EX
STORE_ATTR
DELETE_ATTR
STORE_GLOBAL
DELETE_GLOBAL
LOAD_CONST
LOAD_NAME
BUILD_TUPLE
BUILD_LIST
BUILD_SET
BUILD_MAP
LOAD_ATTR
COMPARE_OP
IMPORT_NAME
IMPORT_FROM
JUMP_FORWARD
JUMP_IF_FALSE_OR_POP
JUMP_IF_TRUE_OR_POP
JUMP_ABSOLUTE
POP_JUMP_IF_FALSE
POP_JUMP_IF_TRUE
LOAD_GLOBAL
CONTINUE_LOOP
SETUP_LOOP
SETUP_EXCEPT
SETUP_FINALLY
LOAD_FAST
STORE_FAST
DELETE_FAST
RAISE_VARARGS
CALL_FUNCTION
MAKE_FUNCTION
BUILD_SLICE
MAKE_CLOSURE
LOAD_CLOSURE
LOAD_DEREF
STORE_DEREF
DELETE_DEREF
CALL_FUNCTION_VAR
CALL_FUNCTION_KW
CALL_FUNCTION_VAR_KW
SETUP_WITH
EXTENDED_ARG
LIST_APPEND
SET_ADD
MAP_ADD
LOAD_CLASSDEREF
BUILD_LIST_UNPACK
BUILD_MAP_UNPACK
BUILD_MAP_UNPACK_WITH_CALL
BUILD_TUPLE_UNPACK
BUILD_SET_UNPACK
SETUP_ASYNC_WITH
/* EXCEPT_HANDLER is a special, implicit block type which is created when
entering an except handler. It is not an opcode but we define it here
as we want it to be available to both frameobject.c and ceval.c, while
remaining private.*/
EXCEPT_HANDLER = 257
)

+ 120
- 0
bytecode/opname.go View File

@ -0,0 +1,120 @@
package bytecode
var Opnames = [...]string{
POP_TOP: "POP_TOP",
ROT_TWO: "ROT_TWO",
ROT_THREE: "ROT_THREE",
DUP_TOP: "DUP_TOP",
DUP_TOP_TWO: "DUP_TOP_TWO",
NOP: "NOP",
UNARY_POSITIVE: "UNARY_POSITIVE",
UNARY_NEGATIVE: "UNARY_NEGATIVE",
UNARY_NOT: "UNARY_NOT",
UNARY_INVERT: "UNARY_INVERT",
BINARY_MATRIX_MULTIPLY: "BINARY_MATRIX_MULTIPLY",
INPLACE_MATRIX_MULTIPLY: "INPLACE_MATRIX_MULTIPLY",
BINARY_POWER: "BINARY_POWER",
BINARY_MULTIPLY: "BINARY_MULTIPLY",
BINARY_MODULO: "BINARY_MODULO",
BINARY_ADD: "BINARY_ADD",
BINARY_SUBTRACT: "BINARY_SUBTRACT",
BINARY_SUBSCR: "BINARY_SUBSCR",
BINARY_FLOOR_DIVIDE: "BINARY_FLOOR_DIVIDE",
BINARY_TRUE_DIVIDE: "BINARY_TRUE_DIVIDE",
INPLACE_FLOOR_DIVIDE: "INPLACE_FLOOR_DIVIDE",
INPLACE_TRUE_DIVIDE: "INPLACE_TRUE_DIVIDE",
GET_AITER: "GET_AITER",
GET_ANEXT: "GET_ANEXT",
BEFORE_ASYNC_WITH: "BEFORE_ASYNC_WITH",
INPLACE_ADD: "INPLACE_ADD",
INPLACE_SUBTRACT: "INPLACE_SUBTRACT",
INPLACE_MULTIPLY: "INPLACE_MULTIPLY",
INPLACE_MODULO: "INPLACE_MODULO",
STORE_SUBSCR: "STORE_SUBSCR",
DELETE_SUBSCR: "DELETE_SUBSCR",
BINARY_LSHIFT: "BINARY_LSHIFT",
BINARY_RSHIFT: "BINARY_RSHIFT",
BINARY_AND: "BINARY_AND",
BINARY_XOR: "BINARY_XOR",
BINARY_OR: "BINARY_OR",
INPLACE_POWER: "INPLACE_POWER",
GET_ITER: "GET_ITER",
GET_YIELD_FROM_ITER: "GET_YIELD_FROM_ITER",
PRINT_EXPR: "PRINT_EXPR",
LOAD_BUILD_CLASS: "LOAD_BUILD_CLASS",
YIELD_FROM: "YIELD_FROM",
GET_AWAITABLE: "GET_AWAITABLE",
INPLACE_LSHIFT: "INPLACE_LSHIFT",
INPLACE_RSHIFT: "INPLACE_RSHIFT",
INPLACE_AND: "INPLACE_AND",
INPLACE_XOR: "INPLACE_XOR",
INPLACE_OR: "INPLACE_OR",
BREAK_LOOP: "BREAK_LOOP",
WITH_CLEANUP_START: "WITH_CLEANUP_START",
WITH_CLEANUP_FINISH: "WITH_CLEANUP_FINISH",
RETURN_VALUE: "RETURN_VALUE",
IMPORT_STAR: "IMPORT_STAR",
YIELD_VALUE: "YIELD_VALUE",
POP_BLOCK: "POP_BLOCK",
END_FINALLY: "END_FINALLY",
POP_EXCEPT: "POP_EXCEPT",
HAVE_ARGUMENT: "HAVE_ARGUMENT",
STORE_NAME: "STORE_NAME",
DELETE_NAME: "DELETE_NAME",
UNPACK_SEQUENCE: "UNPACK_SEQUENCE",
FOR_ITER: "FOR_ITER",
UNPACK_EX: "UNPACK_EX",
STORE_ATTR: "STORE_ATTR",
DELETE_ATTR: "DELETE_ATTR",
STORE_GLOBAL: "STORE_GLOBAL",
DELETE_GLOBAL: "DELETE_GLOBAL",
LOAD_CONST: "LOAD_CONST",
LOAD_NAME: "LOAD_NAME",
BUILD_TUPLE: "BUILD_TUPLE",
BUILD_LIST: "BUILD_LIST",
BUILD_SET: "BUILD_SET",
BUILD_MAP: "BUILD_MAP",
LOAD_ATTR: "LOAD_ATTR",
COMPARE_OP: "COMPARE_OP",
IMPORT_NAME: "IMPORT_NAME",
IMPORT_FROM: "IMPORT_FROM",
JUMP_FORWARD: "JUMP_FORWARD",
JUMP_IF_FALSE_OR_POP: "JUMP_IF_FALSE_OR_POP",
JUMP_IF_TRUE_OR_POP: "JUMP_IF_TRUE_OR_POP",
JUMP_ABSOLUTE: "JUMP_ABSOLUTE",
POP_JUMP_IF_FALSE: "POP_JUMP_IF_FALSE",
POP_JUMP_IF_TRUE: "POP_JUMP_IF_TRUE",
LOAD_GLOBAL: "LOAD_GLOBAL",
CONTINUE_LOOP: "CONTINUE_LOOP",
SETUP_LOOP: "SETUP_LOOP",
SETUP_EXCEPT: "SETUP_EXCEPT",
SETUP_FINALLY: "SETUP_FINALLY",
LOAD_FAST: "LOAD_FAST",
STORE_FAST: "STORE_FAST",
DELETE_FAST: "DELETE_FAST",
RAISE_VARARGS: "RAISE_VARARGS",
CALL_FUNCTION: "CALL_FUNCTION",
MAKE_FUNCTION: "MAKE_FUNCTION",
BUILD_SLICE: "BUILD_SLICE",
MAKE_CLOSURE: "MAKE_CLOSURE",
LOAD_CLOSURE: "LOAD_CLOSURE",
LOAD_DEREF: "LOAD_DEREF",
STORE_DEREF: "STORE_DEREF",
DELETE_DEREF: "DELETE_DEREF",
CALL_FUNCTION_VAR: "CALL_FUNCTION_VAR",
CALL_FUNCTION_KW: "CALL_FUNCTION_KW",
CALL_FUNCTION_VAR_KW: "CALL_FUNCTION_VAR_KW",
SETUP_WITH: "SETUP_WITH",
EXTENDED_ARG: "EXTENDED_ARG",
LIST_APPEND: "LIST_APPEND",
SET_ADD: "SET_ADD",
MAP_ADD: "MAP_ADD",
LOAD_CLASSDEREF: "LOAD_CLASSDEREF",
BUILD_LIST_UNPACK: "BUILD_LIST_UNPACK",
BUILD_MAP_UNPACK: "BUILD_MAP_UNPACK",
BUILD_MAP_UNPACK_WITH_CALL: "BUILD_MAP_UNPACK_WITH_CALL",
BUILD_TUPLE_UNPACK: "BUILD_TUPLE_UNPACK",
BUILD_SET_UNPACK: "BUILD_SET_UNPACK",
SETUP_ASYNC_WITH: "SETUP_ASYNC_WITH",
EXCEPT_HANDLER: "EXCEPT_HANDLER",
}

Loading…
Cancel
Save