You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.rst
+11-9Lines changed: 11 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,12 +29,14 @@ Over the years, more code optimization, specifically around handling jumps, has
29
29
from code patterns. This was noticed as far back as Python 2.4 (2004), but since this is a difficult problem, so far it hasn't been tackled
30
30
in a satisfactory way.
31
31
32
-
The initial attempt to fix this problem was to add markers in the
33
-
instruction stream, initially this was a `COME_FROM` instruction, and then use that in pattern detection.
32
+
The initial attempt to fix to this problem was to add markers in the
33
+
instruction stream, initially this was a ``COME_FROM`` instruction, and
34
+
then use that in pattern detection.
34
35
35
36
Over the years, I've extended that to be more specific, so
36
-
`COME_FROM_LOOP` and `COME_FROM_WITH` were added. And I added checks
37
-
at grammar-reduce time to try to make sure jumps match with the supposed `COME_FROM` targets.
37
+
``COME_FROM_LOOP`` and ``COME_FROM_WITH`` were added. And I added checks
38
+
at grammar-reduce time to make try to make sure jumps match with
39
+
supposed ``COME_FROM`` targets.
38
40
39
41
However, all of this is complicated, not robust, has greatly slowed down deparsing and is not really tenable.
40
42
@@ -44,10 +46,10 @@ However, even this isn't enough. Control flow needs
44
46
to be addressed by using dominators and reverse-dominators, which the python-control-flow_ project can give.
45
47
46
48
This I am *finally* slowly doing in yet another non-public project. It
47
-
is a lot of work. Funding in the form of sponsorship, while greatly
48
-
appreciated, isn't commensurate with the amount of effort, and
49
-
currently, I have a full-time job. So it may take time before it is
50
-
available publicly.
49
+
is a lot of work. Funding in the form of sponsorship while greatly
50
+
appreciated isn't commensurate with the amount of effort, and
51
+
currently I have a full-time job. So it may take time before it is
52
+
available publicly, if at all.
51
53
52
54
Requirements
53
55
------------
@@ -168,7 +170,7 @@ issues above the queue of other things I might be doing instead.
168
170
See Also
169
171
--------
170
172
171
-
* https://github.com/andrew-tavera/unpyc37/ : indirect fork of https://code.google.com/archive/p/unpyc3/. The above projects use a different decompiling technique than what is used here. Instructions are walked. Some instructions use the stack to generate strings, while others don't. Because control flow isn't dealt with directly, it too suffers the same problems as the various `uncompyle` and `decompyle` programs.
173
+
* https://github.com/andrew-tavera/unpyc37/ : indirect fork of https://code.google.com/archive/p/unpyc3/ The above projects use a different decompiling technique than what is used here. Instructions are walked. Some instructions use the stack to generate strings, while others don't. Because control flow isn't dealt with directly, it too suffers the same problems as the various ``uncompyle`` and ``decompyle`` programs.
172
174
* https://github.com/rocky/python-xdis : Cross Python version disassembler
173
175
* https://github.com/rocky/python-xasm : Cross Python version assembler
174
176
* https://github.com/rocky/python-decompile3/wiki : Wiki Documents that describe the code and aspects of it in more detail
0 commit comments