1# (C) Copyright 2016-2017, 2020 by Rocky Bernstein 2""" 3CPython 3.2 bytecode opcodes 4 5This is a like Python 3.2's opcode.py with some classification 6of stack usage. 7""" 8 9import xdis.opcodes.opcode_3x as opcode_3x 10from xdis.opcodes.base import ( 11 extended_format_ATTR, 12 extended_format_CALL_FUNCTION, 13 extended_format_MAKE_FUNCTION_older, 14 extended_format_RAISE_VARARGS_older, 15 extended_format_RETURN_VALUE, 16 finalize_opcodes, 17 format_CALL_FUNCTION_pos_name_encoded, 18 format_MAKE_FUNCTION_default_argc, 19 format_RAISE_VARARGS_older, 20 format_extended_arg, 21 init_opdata, 22 update_pj3, 23) 24 25# FIXME: can we DRY this even more? 26 27version = 3.2 28python_implementation = "CPython" 29 30l = locals() 31 32init_opdata(l, opcode_3x, version) 33 34# There are no opcodes to add or change. 35# If there were, they'd be listed below. 36 37update_pj3(globals(), l) 38 39opcode_arg_fmt = { 40 "CALL_FUNCTION": format_CALL_FUNCTION_pos_name_encoded, 41 "EXTENDED_ARG": format_extended_arg, 42 "MAKE_FUNCTION": format_MAKE_FUNCTION_default_argc, 43 "RAISE_VARARGS": format_RAISE_VARARGS_older, 44} 45 46opcode_extended_fmt = { 47 "CALL_FUNCTION": extended_format_CALL_FUNCTION, 48 "LOAD_ATTR": extended_format_ATTR, 49 "MAKE_FUNCTION": extended_format_MAKE_FUNCTION_older, 50 "RAISE_VARARGS": extended_format_RAISE_VARARGS_older, 51 "RETURN_VALUE": extended_format_RETURN_VALUE, 52 "STORE_ATTR": extended_format_ATTR, 53} 54 55finalize_opcodes(l) 56