Closed
Description
why do i get an error like this when trying it in python 3.8.3? Is this a bug? The following is the error code
$ pydisasm --version
pydisasm, version 4.6.1
$ pydisasm --asm tes.pyc
# pydisasm version 4.6.1
# Python bytecode 3.8 (3413)
# Disassembled from Python 3.8.3 (default, May 14 2020, 14:40:57)
# [Clang 8.0.7 (https://android.googlesource.com/toolchain/clang b55f2d4ebfd35bf6
# Timestamp in code: 1591520548 (2020-06-07 16:02:28)
# Source code size mod 2**32: 101 bytes
# Method Name: helo
# Filename: tes.py
# Argument count: 1
# Position-only argument count: 0
# Keyword-only arguments: 0
# Number of locals: 1
# Stack size: 6
# Flags: 0x00000043 (NOFREE | NEWLOCALS | OPTIMIZED)
# First Line: 1
# Constants:
# 0: None
# Names:
# 0: print
# Varnames:
# teks
# Positional arguments:
# teks
2:
SETUP_FINALLY L14 (to 14)
3:
LOAD_GLOBAL (print)
LOAD_FAST (teks)
CALL_FUNCTION 1
POP_TOP
POP_BLOCK
JUMP_FORWARD L26 (to 26)
L14:
4:
POP_TOP
POP_TOP
POP_TOP
5:
POP_EXCEPT
JUMP_FORWARD L26 (to 26)
END_FINALLY
L26:
LOAD_CONST (None)
RETURN_VALUE
# Method Name: <module>
# Filename: tes.py
# Argument count: 0
# Position-only argument count: 0
# Keyword-only arguments: 0
# Number of locals: 0
# Stack size: 2
# Flags: 0x00000040 (NOFREE)
# First Line: 1
# Constants:
# 0: <Code38 code object helo at 0xae631688, file tes.py>, line 1
# 1: 'helo'
# 2: '__main__'
# 3: 'Hello ,World!'
# 4: None
# Names:
# 0: helo
# 1: __name__
1:
LOAD_CONST 0 (<Code38 code object helo at 0xae631688, file tes.py>, line 1)
LOAD_CONST ('helo')
MAKE_FUNCTION 0 (Neither defaults, keyword-only args, annotations, nor closures)
STORE_NAME (helo)
7:
LOAD_NAME (__name__)
LOAD_CONST ('__main__')
COMPARE_OP (==)
POP_JUMP_IF_FALSE L24 (to 24)
8:
LOAD_NAME (helo)
LOAD_CONST 3 ('Hello ,World!')
CALL_FUNCTION 1
POP_TOP
L24:
LOAD_CONST (None)
RETURN_VALUE
then I save it in the test.pyasm file
and when i run python xasm an error pops up like this
$ pyc-xasm tes.pyasm
Traceback (most recent call last):
File "/data/data/com.termux/files/usr/bin/pyc-xasm", line 11, in <module>
load_entry_point('xasm==1.1.0', 'console_scripts', 'pyc-xasm')()
File "/data/data/com.termux/files/usr/lib/python3.8/site-packages/click/core.py", line 764, in __call__
return self.main(*args, **kwargs)
File "/data/data/com.termux/files/usr/lib/python3.8/site-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/data/data/com.termux/files/usr/lib/python3.8/site-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/data/data/com.termux/files/usr/lib/python3.8/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/data/data/com.termux/files/usr/lib/python3.8/site-packages/xasm/xasm_cli.py", line 28, in main
asm = asm_file(asm_path)
File "/data/data/com.termux/files/usr/lib/python3.8/site-packages/xasm/assemble.py", line 124, in asm_file
asm = Assembler(python_version)
File "/data/data/com.termux/files/usr/lib/python3.8/site-packages/xasm/assemble.py", line 52, in __init__
self.opc = get_opcode(python_version)
TypeError: get_opcode() missing 1 required positional argument: 'is_pypy'
it looks like the real error is in the main.py file in the xdis package in this get_opcode function
def get_opcode(version, is_pypy):
49 # Set up disassembler with the right opcodes
50 if type(version) in (list, tuple):
51 version = ".".join([str(x) for x in version])
52 lookup = str(version)
53 if is_pypy:
54 lookup += "pypy"
55 if lookup in op_imports.keys():
56 return op_imports[lookup]
57 if is_pypy:
58 pypy_str = " for pypy"
59 else:
60 pypy_str = ""
61 raise TypeError("%s is not a Python version%s I know about" % (version, pypy_str))
if you have a little time please fix it right away, because this tool is really really good sir, I've tried it in python2.7.18 and didn't get any errors, but I'm a little disappointed because I thought this tool could only be used in python2
if you are too busy, just tell me what to fix!
Thanks
Metadata
Metadata
Assignees
Labels
No labels