| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- # (C) Copyright 2017, 2020-2021, 2023 by Rocky Bernstein
- """
- CPython 2.4 bytecode opcodes
- This is a like Python 2.3's opcode.py with some additional classification
- of stack usage, and opererand formatting functions.
- """
- import xdis.opcodes.opcode_2x as opcode_2x
- from xdis.opcodes.base import (
- def_op,
- finalize_opcodes,
- init_opdata,
- update_pj2,
- )
- from xdis.opcodes.opcode_2x import update_arg_fmt_base2x, opcode_extended_fmt_base2x
- version_tuple = (2, 4)
- python_implementation = "CPython"
- loc = locals()
- init_opdata(loc, opcode_2x, version_tuple)
- # fmt: off
- # Bytecodes added since 2.3
- # OP NAME OPCODE POP PUSH
- # Used to implement list comprehensions.
- def_op(loc, 'YIELD_VALUE', 86, 1, 1)
- # --------------------------------------------
- def_op(loc, "NOP", 9, 0, 0)
- def_op(loc, "LIST_APPEND", 18, 2, 0) # Calls list.append(TOS[-i], TOS).
- # Used to implement list comprehensions.
- def_op(loc, "YIELD_VALUE", 86, 1, 1)
- opcode_arg_fmt = update_arg_fmt_base2x.copy()
- opcode_extended_fmt = opcode_extended_fmt12 = opcode_extended_fmt_base2x.copy()
- # FIXME remove (fix uncompyle6)
- update_pj2(globals(), loc)
- finalize_opcodes(loc)
- # fmt: on
|