(codebytes)
| 3 | import opcode |
| 4 | |
| 5 | def generate_opcodes(codebytes): |
| 6 | extended_arg = 0 |
| 7 | i = 0 |
| 8 | n = len(codebytes) |
| 9 | while i < n: |
| 10 | op = codebytes[i] |
| 11 | i += 1 |
| 12 | if op >= opcode.HAVE_ARGUMENT: |
| 13 | oparg = codebytes[i] + codebytes[i+1]*256 + extended_arg |
| 14 | extended_arg = 0 |
| 15 | i += 2 |
| 16 | if op == opcode.EXTENDED_ARG: |
| 17 | extended_arg = oparg * 65536 |
| 18 | continue |
| 19 | else: |
| 20 | oparg = None |
| 21 | yield (op, oparg) |
| 22 | |
| 23 | # Example |
| 24 | def countdown(n): |