pub enum PythonInstruction {
Show 186 variants
CACHE,
BINARY_MODULO,
INPLACE_MODULO,
POP_TOP,
PUSH_NULL,
INTERPRETER_EXIT,
END_FOR,
END_SEND,
NOP,
UNARY_NEGATIVE,
UNARY_NOT,
UNARY_INVERT,
RESERVED,
BINARY_SLICE,
GET_LEN,
MATCH_MAPPING,
MATCH_SEQUENCE,
MATCH_KEYS,
PUSH_EXC_INFO,
CHECK_EXC_MATCH,
CHECK_EG_MATCH,
WITH_EXCEPT_START,
BEFORE_ASYNC_WITH,
BEFORE_WITH,
END_ASYNC_FOR,
CLEANUP_THROW,
GET_ITER,
GET_YIELD_FROM_ITER,
LOAD_BUILD_CLASS,
LOAD_ASSERTION_ERROR,
RETURN_GENERATOR,
SETUP_ANNOTATIONS,
LOAD_LOCALS,
POP_EXCEPT,
MAKE_CELL,
LOAD_CLOSURE,
COPY_FREE_VARS,
YIELD_VALUE,
RESUME,
INSTRUMENTED_END_FOR,
INSTRUMENTED_END_SEND,
INSTRUMENTED_INSTRUCTION,
INSTRUMENTED_LINE,
POP_BLOCK,
INSTRUMENTED_POP_JUMP_IF_FALSE,
INSTRUMENTED_POP_JUMP_IF_TRUE,
INSTRUMENTED_JUMP_FORWARD,
INSTRUMENTED_JUMP_BACKWARD,
INSTRUMENTED_RETURN_VALUE,
INSTRUMENTED_YIELD_VALUE,
INSTRUMENTED_END_ASYNC_FOR,
INSTRUMENTED_SETUP_FINALLY,
INSTRUMENTED_RESUME,
INSTRUMENTED_DELETE_SUBSCR,
INSTRUMENTED_STORE_SUBSCR,
INSTRUMENTED_CALL,
INSTRUMENTED_EXTENDED_ARG,
INSTRUMENTED_LIST_APPEND,
INSTRUMENTED_SET_ADD,
INSTRUMENTED_MAP_ADD,
INSTRUMENTED_FOR_ITER,
INSTRUMENTED_LOAD_SUPER_ATTR,
INSTRUMENTED_POP_JUMP_IF_NONE,
INSTRUMENTED_POP_JUMP_IF_NOT_NONE,
INSTRUMENTED_CALL_FUNCTION_EX,
INSTRUMENTED_RETURN_CONST,
ROT_TWO,
ROT_THREE,
DUP_TOP,
DUP_TOP_TWO,
ROT_FOUR,
UNARY_POSITIVE,
POP_FINALLY,
RETURN_VALUE,
SETUP_CLEANUP(u32),
SETUP_WITH(u32),
END_ASYNC_WITH,
WITH_CLEANUP_START,
WITH_CLEANUP_FINISH,
ASYNC_WITH_CLEANUP_START,
ASYNC_WITH_CLEANUP_FINISH,
GEN_START,
GET_AWAITABLE_CORO,
GET_AITER_CORO,
GET_ANEXT_CORO,
END_ASYNC_FOR_CORO,
SEND(u32),
POP_FRAME,
RETURN_CONST(u32),
SETUP_ASYNC_WITH(u32),
INPLACE_ADD(u32),
INPLACE_SUBTRACT(u32),
INPLACE_MULTIPLY(u32),
INPLACE_TRUE_DIVIDE(u32),
STORE_SUBSCR(u32),
DELETE_SUBSCR(u32),
STORE_MAP(u32),
CALL_FUNCTION_EX(u32),
FORMAT_VALUE(u32),
POP_JUMP_IF_FALSE(u32),
POP_JUMP_IF_TRUE(u32),
POP_JUMP_IF_NONE(u32),
POP_JUMP_IF_NOT_NONE(u32),
JUMP_IF_FALSE_OR_POP(u32),
JUMP_IF_TRUE_OR_POP(u32),
JUMP_FORWARD(u32),
JUMP_BACKWARD(u32),
LOAD_CONST(u32),
LOAD_NAME(u32),
STORE_NAME(u32),
DELETE_NAME(u32),
LOAD_FAST(u32),
STORE_FAST(u32),
DELETE_FAST(u32),
LOAD_GLOBAL(u32),
STORE_GLOBAL(u32),
DELETE_GLOBAL(u32),
LOAD_ATTR(u32),
STORE_ATTR(u32),
DELETE_ATTR(u32),
COMPARE_OP(u32),
BINARY_OP(u32),
IMPORT_NAME(u32),
IMPORT_FROM(u32),
FOR_ITER(u32),
GET_AWAITABLE(u32),
GET_AITER(u32),
GET_ANEXT(u32),
JUMP_IF_NOT_EXC_MATCH(u32),
SETUP_FINALLY(u32),
SETUP_EXCEPT(u32),
SETUP_LOOP(u32),
EXTENDED_ARG(u32),
LOAD_DEREF(u32),
STORE_DEREF(u32),
DELETE_DEREF(u32),
LOAD_CLASSDEREF(u32),
COPY_LOCAL(u32),
LOAD_SUPER_ATTR(u32),
MAKE_FUNCTION(u32),
CALL_FUNCTION(u32),
CALL_FUNCTION_KW(u32),
LOAD_METHOD(u32),
CALL_METHOD(u32),
BUILD_TUPLE(u32),
BUILD_LIST(u32),
BUILD_SET(u32),
BUILD_MAP(u32),
BUILD_CONST_KEY_MAP(u32),
BUILD_STRING(u32),
LIST_APPEND(u32),
SET_ADD(u32),
MAP_ADD(u32),
LIST_EXTEND(u32),
SET_UPDATE(u32),
DICT_UPDATE(u32),
DICT_MERGE(u32),
MATCH_CLASS(u32),
COPY_DICT_WITHOUT_KEYS(u32),
YIELD_FROM(u32),
CALL_FINALLY(u32),
CALL_INTRINSIC_1(u32),
CALL_INTRINSIC_2(u32),
KW_NAMES(u32),
JUMP(u32),
JUMP_NO_INTERRUPT(u32),
IS_OP(u32),
CONTAINS_OP(u32),
COPY(u32),
SWAP(u32),
UNPACK_SEQUENCE(u32),
UNPACK_EX(u32),
CALL(u32),
CALL_KW(u32),
LOAD_FROM_DICT_OR_DEREF(u32),
LOAD_SUPER_METHOD(u32),
LOAD_ZERO_SUPER_METHOD(u32),
STORE_FAST_MAYBE_NULL(u32),
RERAISE(u32),
BINARY_SUBSCR,
STORE_SLICE,
JUMP_ABSOLUTE(u32),
POP_JUMP_FORWARD_IF_NOT_NONE(u32),
POP_JUMP_FORWARD_IF_NONE(u32),
RAISE_VARARGS(u32),
UNKNOWN(u8, Option<u32>),
}Expand description
表示 Python 字节码指令。
Variants§
CACHE
缓存操作码。
BINARY_MODULO
二进制模运算。
INPLACE_MODULO
就地模运算。
POP_TOP
弹出栈顶元素。
PUSH_NULL
推送 None 到栈顶。
INTERPRETER_EXIT
解释器退出。
END_FOR
结束 for 循环。
END_SEND
结束 send 操作。
NOP
无操作。
UNARY_NEGATIVE
一元负号。
UNARY_NOT
逻辑非。
UNARY_INVERT
按位取反。
RESERVED
保留操作码。
BINARY_SLICE
二进制切片。
GET_LEN
获取长度。
MATCH_MAPPING
匹配映射。
MATCH_SEQUENCE
匹配序列。
MATCH_KEYS
匹配键。
PUSH_EXC_INFO
推送异常信息。
CHECK_EXC_MATCH
检查异常匹配。
CHECK_EG_MATCH
检查异常组匹配。
WITH_EXCEPT_START
带有异常处理的 with 语句开始。
BEFORE_ASYNC_WITH
异步 with 语句之前。
BEFORE_WITH
with 语句之前。
END_ASYNC_FOR
结束异步 for 循环。
CLEANUP_THROW
清理并抛出异常。
GET_ITER
获取迭代器。
GET_YIELD_FROM_ITER
获取 yield from 迭代器。
LOAD_BUILD_CLASS
加载 build_class。
LOAD_ASSERTION_ERROR
加载 AssertionError。
RETURN_GENERATOR
返回生成器。
SETUP_ANNOTATIONS
设置注解。
LOAD_LOCALS
加载局部变量。
POP_EXCEPT
弹出异常。
MAKE_CELL
创建 cell 对象。
LOAD_CLOSURE
加载闭包。
COPY_FREE_VARS
复制自由变量。
YIELD_VALUE
yield 值。
RESUME
恢复执行。
INSTRUMENTED_END_FOR
带有工具的 for 循环结束。
INSTRUMENTED_END_SEND
带有工具的 send 结束。
INSTRUMENTED_INSTRUCTION
带有工具的指令。
INSTRUMENTED_LINE
带有工具的行。
POP_BLOCK
弹出块。
INSTRUMENTED_POP_JUMP_IF_FALSE
带有工具的如果为假则跳转。
INSTRUMENTED_POP_JUMP_IF_TRUE
带有工具的如果为真则跳转。
INSTRUMENTED_JUMP_FORWARD
带有工具的向前跳转。
INSTRUMENTED_JUMP_BACKWARD
带有工具的向后跳转。
INSTRUMENTED_RETURN_VALUE
带有工具的返回值。
INSTRUMENTED_YIELD_VALUE
带有工具的 yield 值。
INSTRUMENTED_END_ASYNC_FOR
带有工具的异步 for 循环结束。
INSTRUMENTED_SETUP_FINALLY
带有工具的设置 finally 块。
INSTRUMENTED_RESUME
带有工具的恢复执行。
INSTRUMENTED_DELETE_SUBSCR
带有工具的删除下标。
INSTRUMENTED_STORE_SUBSCR
带有工具的存储下标。
INSTRUMENTED_CALL
带有工具的调用。
INSTRUMENTED_EXTENDED_ARG
带有工具的扩展参数。
INSTRUMENTED_LIST_APPEND
带有工具的列表追加。
INSTRUMENTED_SET_ADD
带有工具的集合添加。
INSTRUMENTED_MAP_ADD
带有工具的映射添加。
INSTRUMENTED_FOR_ITER
带有工具的 for 迭代器。
INSTRUMENTED_LOAD_SUPER_ATTR
带有工具的加载 super 属性。
INSTRUMENTED_POP_JUMP_IF_NONE
带有工具的如果为 None 则弹出并跳转。
INSTRUMENTED_POP_JUMP_IF_NOT_NONE
带有工具的如果不为 None 则弹出并跳转。
INSTRUMENTED_CALL_FUNCTION_EX
带有工具的调用函数。
INSTRUMENTED_RETURN_CONST
带有工具的返回常量。
ROT_TWO
旋转栈顶两个元素。
ROT_THREE
旋转栈顶三个元素。
DUP_TOP
复制栈顶元素。
DUP_TOP_TWO
复制栈顶两个元素。
ROT_FOUR
旋转栈顶四个元素。
UNARY_POSITIVE
一元正号。
POP_FINALLY
弹出 finally 块。
RETURN_VALUE
返回值。
SETUP_CLEANUP(u32)
设置清理。
SETUP_WITH(u32)
设置 with 语句。
END_ASYNC_WITH
结束异步 with 语句。
WITH_CLEANUP_START
with 语句清理开始。
WITH_CLEANUP_FINISH
with 语句清理完成。
ASYNC_WITH_CLEANUP_START
异步 with 语句清理开始。
ASYNC_WITH_CLEANUP_FINISH
异步 with 语句清理完成。
GEN_START
生成器开始。
GET_AWAITABLE_CORO
获取可等待协程。
GET_AITER_CORO
获取异步迭代器协程。
GET_ANEXT_CORO
获取异步 next 协程。
END_ASYNC_FOR_CORO
结束异步 for 协程。
SEND(u32)
发送值。
POP_FRAME
弹出栈帧。
RETURN_CONST(u32)
返回常量。
SETUP_ASYNC_WITH(u32)
设置异步 with 语句。
INPLACE_ADD(u32)
就地加法。
INPLACE_SUBTRACT(u32)
就地减法。
INPLACE_MULTIPLY(u32)
就地乘法。
INPLACE_TRUE_DIVIDE(u32)
就地真除法。
STORE_SUBSCR(u32)
存储下标。
DELETE_SUBSCR(u32)
删除下标。
STORE_MAP(u32)
存储映射。
CALL_FUNCTION_EX(u32)
调用函数(扩展)。
FORMAT_VALUE(u32)
格式化值。
POP_JUMP_IF_FALSE(u32)
如果为假则弹出并跳转。
POP_JUMP_IF_TRUE(u32)
如果为真则弹出并跳转。
POP_JUMP_IF_NONE(u32)
如果为 None 则弹出并跳转。
POP_JUMP_IF_NOT_NONE(u32)
如果不为 None 则弹出并跳转。
JUMP_IF_FALSE_OR_POP(u32)
如果为假则跳转或弹出。
JUMP_IF_TRUE_OR_POP(u32)
如果为真则跳转或弹出。
JUMP_FORWARD(u32)
向前跳转。
JUMP_BACKWARD(u32)
向后跳转。
LOAD_CONST(u32)
加载常量。
LOAD_NAME(u32)
加载名称。
STORE_NAME(u32)
存储名称。
DELETE_NAME(u32)
删除名称。
LOAD_FAST(u32)
加载快速变量。
STORE_FAST(u32)
存储快速变量。
DELETE_FAST(u32)
删除快速变量。
LOAD_GLOBAL(u32)
加载全局变量。
STORE_GLOBAL(u32)
存储全局变量。
DELETE_GLOBAL(u32)
删除全局变量。
LOAD_ATTR(u32)
加载属性。
STORE_ATTR(u32)
存储属性。
DELETE_ATTR(u32)
删除属性。
COMPARE_OP(u32)
比较操作。
BINARY_OP(u32)
二进制操作。
IMPORT_NAME(u32)
导入名称。
IMPORT_FROM(u32)
从模块导入。
FOR_ITER(u32)
for 循环迭代器。
GET_AWAITABLE(u32)
获取可等待对象。
GET_AITER(u32)
获取异步迭代器。
GET_ANEXT(u32)
获取异步 next。
JUMP_IF_NOT_EXC_MATCH(u32)
如果异常不匹配则跳转。
SETUP_FINALLY(u32)
设置 finally 块。
SETUP_EXCEPT(u32)
设置 except 块。
SETUP_LOOP(u32)
设置循环块。
EXTENDED_ARG(u32)
扩展参数。
LOAD_DEREF(u32)
加载解引用变量。
STORE_DEREF(u32)
存储解引用变量。
DELETE_DEREF(u32)
删除解引用变量。
LOAD_CLASSDEREF(u32)
加载类解引用变量。
COPY_LOCAL(u32)
复制局部变量。
LOAD_SUPER_ATTR(u32)
加载 super 属性。
MAKE_FUNCTION(u32)
创建函数。
CALL_FUNCTION(u32)
调用函数。
CALL_FUNCTION_KW(u32)
调用带关键字参数的函数。
LOAD_METHOD(u32)
加载方法。
CALL_METHOD(u32)
调用方法。
BUILD_TUPLE(u32)
构建元组。
BUILD_LIST(u32)
构建列表。
BUILD_SET(u32)
构建集合。
BUILD_MAP(u32)
构建字典。
BUILD_CONST_KEY_MAP(u32)
构建常量键字典。
BUILD_STRING(u32)
构建字符串。
LIST_APPEND(u32)
列表追加。
SET_ADD(u32)
集合添加。
MAP_ADD(u32)
映射添加。
LIST_EXTEND(u32)
列表扩展。
SET_UPDATE(u32)
集合更新。
DICT_UPDATE(u32)
字典更新。
DICT_MERGE(u32)
字典合并。
MATCH_CLASS(u32)
匹配类。
COPY_DICT_WITHOUT_KEYS(u32)
复制不带键的字典。
YIELD_FROM(u32)
yield from。
CALL_FINALLY(u32)
调用 finally。
CALL_INTRINSIC_1(u32)
调用内置函数 1。
CALL_INTRINSIC_2(u32)
调用内置函数 2。
KW_NAMES(u32)
关键字参数名称。
JUMP(u32)
跳转。
JUMP_NO_INTERRUPT(u32)
无中断跳转。
IS_OP(u32)
是操作。
CONTAINS_OP(u32)
包含操作。
COPY(u32)
复制。
SWAP(u32)
交换。
UNPACK_SEQUENCE(u32)
解包序列。
UNPACK_EX(u32)
解包扩展。
CALL(u32)
调用。
CALL_KW(u32)
关键字调用。
LOAD_FROM_DICT_OR_DEREF(u32)
从字典或解引用加载。
LOAD_SUPER_METHOD(u32)
加载 super 方法。
LOAD_ZERO_SUPER_METHOD(u32)
加载零参数 super 方法。
STORE_FAST_MAYBE_NULL(u32)
存储快速变量(可能为 None)。
RERAISE(u32)
重新抛出异常。
BINARY_SUBSCR
二进制下标操作。
STORE_SLICE
存储切片。
JUMP_ABSOLUTE(u32)
绝对跳转指令,包含跳转目标地址。
POP_JUMP_FORWARD_IF_NOT_NONE(u32)
如果不为 None 则向前弹出并跳转。
POP_JUMP_FORWARD_IF_NONE(u32)
如果为 None 则向前弹出并跳转。
RAISE_VARARGS(u32)
抛出可变参数异常。
UNKNOWN(u8, Option<u32>)
解析失败的未知的指令,包含操作码和可能的参数。
Trait Implementations§
Source§impl Clone for PythonInstruction
impl Clone for PythonInstruction
Source§fn clone(&self) -> PythonInstruction
fn clone(&self) -> PythonInstruction
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more