Commit Graph

91 Commits

Author SHA1 Message Date
rocky
3a6f9d8f24 Fix 3.5 misclassifying RETURN_VALUE
We use location of SETUP_EXCEPT instructions to disambiguate.
2016-07-29 08:56:23 -04:00
rocky
f33f425692 Add is_pypy parameter to places that need it 2016-07-27 16:08:40 -04:00
rocky
1c50e34c30 PyPy support
* Use proper PYPY 32 opcodes
* handle opcodes LOOKUP_METHOD and CALL_METHOD
* Administrative stuff for PyPy
2016-07-24 18:54:51 -04:00
rocky
21683719e1 Start supporting PyPy 3.2
Add some PyPy 2.7 and PyPy 3.2 bytecode files
2016-07-24 04:17:54 -04:00
rocky
7c4316d4fb Start handling pypy 2.7
Need to understand whether we care compiling pypy.
Pypy 2.7 list comprehensions are different and use
its own opcode.
2016-07-21 02:58:50 -04:00
rocky
9c2f48ca4a DRY and clean up code a little 2016-07-10 08:39:50 -04:00
rocky
ac45e5757c Redo Python 2.3 to be more like the rest 2016-07-09 09:11:04 -04:00
rocky
d6b35d57e4 DRY scanner code. Allow 2.4 decompile from 3.x 2016-07-08 21:37:09 -04:00
rocky
62e60817f6 Start handling Pyton 2.4 bytecodes 2016-07-08 15:00:23 -04:00
rocky
1a83c849dc Python 3 needs Python2's RETURN_END_IF
Make python2 and python3 scanner look more the same
2016-06-20 22:12:29 -04:00
rocky
bdd8a9f2a0 Can't handle python 2.3 on 3.x for now 2016-06-03 10:55:13 -04:00
rocky
ebcb1d08f4 Limited support for Python 2.3 2016-06-03 10:20:52 -04:00
rocky
eefbc40eef option to show asm and DRY.
Get ready for some 2.3 support
2016-06-03 09:25:20 -04:00
rocky
20768266b4 use totally xdis's opcodes
Needs xdis 1.1.0 or greater
2016-05-31 19:53:17 -04:00
rocky
e70e7bfc16 Start to DRY Python 2 scanners...
Get 2.7 opcodes from xdis.
2016-05-28 19:34:12 -04:00
rocky
b18b3e5d47 xdis for Python 3 opcodes 2016-05-28 01:14:18 -04:00
rocky
64191aa2d3 use xdis 3.4-3.5 opcodes 2016-05-28 00:58:27 -04:00
rocky
4398b5b2e0 Use xdis for code, magics, and marshal 2016-05-27 19:18:06 -04:00
rocky
a08ece371e pydisassemble improvements; DRY scannners
disas.py:
 - disassembles *all* code objects found

scanner*.py:
 - no longer need to pass in version numbers; this
   is obtained from the class name
 - no longer pass in opcodes; this is done at
   initialization from the scanner name
 - all Pythoin 3 scanners support native disassembly
2016-05-18 10:58:48 -04:00
rocky
bdd7df6040 Python 2 loop scanner detection in Python 3
scanner*.py: Make scanner27 and scanner3 more aligned
Makefile: we can run py.test on Python 3.5
HISTORY.md: grammar changes
2016-05-16 13:40:55 -04:00
rocky
fe04b97c6b Remove one more old-style Python class 2016-05-03 03:55:43 -04:00
rocky
31ebe88b38 Start to DRY opcode code. Limited support for decopyling Python 3.5 2016-01-02 22:59:02 -05:00
rocky
52da6f4a8f Make ScannerXX() initialization the same on Python 2.x and 3.x 2016-01-02 07:54:21 -05:00
rocky
b82a8b90d5 Allow Python 3.5 to decomplyle other versions. No Python 3.5
bytecode support just yet though.
2015-12-30 23:46:29 -05:00
rocky
820fdb4771 Fix up Python 2.x's ability to get code from Python 3.x's bytecode 2015-12-27 19:36:02 -05:00
rocky
44cd349cc7 DRY Python3 scanner code. Some cross version handling fixed.
Some Python 3.2 and 3.3 deparse fixes.
2015-12-27 04:43:35 -05:00
rocky
008bd79719 Fix up Python 3.2, 3.3, and 3.4 cross-version scanners
Try travis 2.6 and 3.3
2015-12-26 10:19:26 -05:00
rocky
1456f820f2 Start Python3 slices. Split off token routine. 2015-12-21 12:17:57 -05:00
rocky
6bc425b45e marshal.py: Python2 marshal code shouldn't try to turn a code object
into a string. parse3.py: handle both keyword and positional function
calls. scanner34.py: Remove extra level of quoting in LOAD_CONST.
Keyward handling now works cross Python 2/3. Some other spelling and doc fixes.
2015-12-18 21:20:12 -05:00
rocky
2dc8375ed0 Supoer multiple parsers, specifically for Python2 and Python3. In the
process some OO cleanup and some global variable hacks removed.
2015-12-16 22:08:29 -05:00
rocky
a362b47b15 Add LICENSE. Add demo programs and DRY code a little 2015-12-16 16:23:18 -05:00
rocky
06653a6163 On Python3.4 decompiling Python 3.4 instructions, use its
built-in disassembler routines. In contrast to what was here,
they most likely work!
2015-12-16 09:13:14 -05:00
rocky
9fecb48744 Tidy a little bit 2015-12-16 01:52:11 -05:00
rocky
8c94acfca0 Start 3.4 more stringent disassembly testing. Disassembly format has
changed slightly. misc small bugs.
2015-12-16 00:40:28 -05:00
rocky
34ecd54e2c README.rst: note addition of pydisassemble
Remove duplicate disassembly printing from scanners and
put common code in caller(s). Show source-code line numbers in disassembly output
and fix alignment of byte offsets.
disas.py: workaround Python 2/3 different layouts before we get to
bytecodes in a code object.
2015-12-15 01:42:07 -05:00
rocky
a7455a3801 Start to move deparser from python-deparse here. Start Python 3.2 tolerance 2015-12-14 16:18:56 -05:00
rocky
b5797dfa0f Move scanners in its own directory. Dir base-tests -> base_tests so we
can import from that.
2015-12-14 09:38:46 -05:00
rocky
f595f659ad Python3 compatibility: (disas, scanner*)
Reduce useless verbiage in status messages and DRY code a little;
__init__, uncompyle6
2015-12-14 08:38:51 -05:00
rocky
24c301c489 Start off with Anton Vorobyov's (DarkFenX) Python 3 scanner. 2015-12-13 03:41:57 -05:00
rocky
003d485814 More Python3 compatability. Remove duplicate disassembly code and
get it from Python's standard library instead.
2015-12-12 08:37:20 -05:00
rocky
00d17461fc Python3 compatibility 2015-12-12 06:43:15 -05:00