opcode_33.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # (C) Copyright 2017, 2020-2021, 2023 by Rocky Bernstein
  2. """
  3. CPython 3.3 bytecode opcodes
  4. This is a like Python 3.3's opcode.py with some classification
  5. of stack usage.
  6. """
  7. import xdis.opcodes.opcode_3x as opcode_3x
  8. from xdis.opcodes.base import def_op, finalize_opcodes, init_opdata, rm_op, update_pj3
  9. from xdis.opcodes.format.basic import format_RAISE_VARARGS_older, opcode_arg_fmt_base
  10. from xdis.opcodes.format.extended import opcode_extended_fmt_base
  11. from xdis.opcodes.opcode_3x import format_MAKE_FUNCTION_30_35
  12. version_tuple = (3, 3)
  13. python_implementation = "CPython"
  14. loc = locals()
  15. init_opdata(loc, opcode_3x, version_tuple)
  16. # Below are opcode changes since Python 3.2
  17. # fmt: off
  18. rm_op(loc, "STOP_CODE", 0)
  19. def_op(loc, "YIELD_FROM", 72, 1, 0)
  20. # fmt: on
  21. opcode_extended_fmt = opcode_extended_fmt33 = opcode_extended_fmt_base.copy()
  22. opcode_arg_fmt = opcode_arg_fmt33 = {
  23. **opcode_arg_fmt_base,
  24. **{
  25. "MAKE_CLOSURE": format_MAKE_FUNCTION_30_35,
  26. "MAKE_FUNCTION": format_MAKE_FUNCTION_30_35,
  27. "RAISE_VARARGS": format_RAISE_VARARGS_older,
  28. },
  29. }
  30. update_pj3(globals(), loc)
  31. finalize_opcodes(loc)