1# (C) Copyright 2017, 2019-2020 by Rocky Bernstein
2"""
3CPython 2.3 bytecode opcodes
4
5This is a like Python 2.3's opcode.py with some additional classification
6of stack usage, and opererand formatting functions.
7"""
8
9import xdis.opcodes.opcode_2x as opcode_2x
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_pj2,
23)
24
25version = 2.3
26python_implementation = "CPython"
27
28l = locals()
29init_opdata(l, opcode_2x, version)
30
31update_pj2(globals(), l)
32
33opcode_arg_fmt = {
34    "CALL_FUNCTION": format_CALL_FUNCTION_pos_name_encoded,
35    "CALL_FUNCTION_KW": format_CALL_FUNCTION_pos_name_encoded,
36    "CALL_FUNCTION_VAR_KW": format_CALL_FUNCTION_pos_name_encoded,
37    "EXTENDED_ARG": format_extended_arg,
38    "MAKE_FUNCTION": format_MAKE_FUNCTION_default_argc,
39    "RAISE_VARARGS": format_RAISE_VARARGS_older,
40}
41
42opcode_extended_fmt = {
43    "CALL_FUNCTION": extended_format_CALL_FUNCTION,
44    "LOAD_ATTR": extended_format_ATTR,
45    "MAKE_FUNCTION": extended_format_MAKE_FUNCTION_older,
46    "RAISE_VARARGS": extended_format_RAISE_VARARGS_older,
47    "RETURN_VALUE": extended_format_RETURN_VALUE,
48    "STORE_ATTR": extended_format_ATTR,
49}
50
51finalize_opcodes(l)
52