pycdc icon indicating copy to clipboard operation
pycdc copied to clipboard

Add debug output of asm instructions in pycdc

Open ahaensler opened this issue 3 years ago • 0 comments

I found it useful to see assembly and block scopes next to each other. The PR changes some disassembly functions to output strings instead of directly writing to the stdout.

Output (set ENABLE_ASM_DEBUG in cmake to see it)

3      SET_LINENO              0               1         (0)
6      LOAD_CONST              0: '\ntest_lo...1         (0)
9      STORE_NAME              0: __doc__      1         (0)
12     SET_LINENO              9               1         (0)
15     SET_LINENO              14              1         (0)
18     SETUP_LOOP              54 (to 72)      1         (0)
21     LOAD_NAME               1: args         1            while (72)
22     GET_ITER                                1            while (72)
25     SET_LINENO              14              1            while (72)
28     FOR_ITER                43 (to 71)      1            while (72)
31     STORE_NAME              2: term         1            for (72)
34     SET_LINENO              15              1            for (72)
37     SETUP_EXCEPT            18 (to 55)      1            for (72)
40     SET_LINENO              16              2                    try (55)
41     PRINT_NEWLINE                           2                    try (55)
44     SET_LINENO              17              2                    try (55)
47     CONTINUE_LOOP           22              2                    try (55)
50     SET_LINENO              18              2                    try (55)
51     PRINT_NEWLINE                           2                    try (55)
52     POP_BLOCK                               2                    try (55)
55     JUMP_FORWARD            13 (to 68)      1                CONTAINER (0)
58     SET_LINENO              19              2                    except (68)
59     POP_TOP                                 2                    except (68)
60     POP_TOP                                 2                    except (68)
61     POP_TOP                                 2                    except (68)
64     SET_LINENO              20              2                    except (68)
67     JUMP_FORWARD            1 (to 68)       2                    except (68)
68     END_FINALLY                             2                    except (68)
71     JUMP_ABSOLUTE           22              1            for (72)
72     POP_BLOCK                               1            for (72)
75     LOAD_CONST              1: None         2            else (72)
76     RETURN_VALUE                            1         (0)

ahaensler avatar Jul 09 '22 20:07 ahaensler