The official Python documentation provides a description for the bytecode that's used in both versions 2 and 3. In addition, since it is open source software, all bytecode instructions for a particular Python version can be also found in the corresponding source code files, mainly ceval.c.
The differences between the bytecode that's used in Python 2 and 3 aren't that drastic, but still noticeable. For example, some instructions implemented for version 2 are gone in version 3 (such as STOP_CODE, ROT_FOUR, PRINT_ITEM, PRINT_NEWLINE/PRINT_NEWLINE_TO, and so on):
Figure 24: Different bytecode for the same HelloWorld script produced by Python 2 and 3
Here are the groups of instructions that are used in the official documentation for Python 3, along with some examples:
- General instructions: Implements the most basic stack-related operations:
- NOP: Do nothing (generally used as a placeholder)
- POP_TOP: Removes the top value from the stack
- ROT_TWO: Swaps...