__init__.py 533 B

1234567891011121314151617181920
  1. import ctypes
  2. import os
  3. import pathlib
  4. from hexdump import hexdump
  5. fxn = None
  6. def disasm_raw(buf):
  7. global fxn
  8. if fxn is None:
  9. shared = pathlib.Path(__file__).parent / "disasm.so"
  10. if not shared.is_file():
  11. os.system(f'cd {pathlib.Path(__file__).parent} && gcc -shared disasm-a3xx.c -o disasm.so')
  12. fxn = ctypes.CDLL(shared.as_posix())['disasm']
  13. fxn(buf, len(buf))
  14. def disasm(buf):
  15. END = b"\x00\x00\x00\x00\x00\x00\x00\x03"
  16. buf = buf[0x510:] # this right?
  17. buf = buf.split(END)[0] + END
  18. disasm_raw(buf)