sh-dis/python/disassemble.py

29 lines
676 B
Python

import sys
import struct
from decode import decode_instruction, decode_variables
def print_instruction(ins, variables):
print(ins.instruction, ins.operands, variables)
def next_instruction(ins):
pass
def main():
with open(sys.argv[1], 'rb') as f:
buf = f.read()
mem = memoryview(buf)
for i in range(len(buf) // 2):
b = mem[(i+0)*2:(i+1)*2]
n, = struct.unpack(">H", b)
ins = decode_instruction(n)
if ins is None:
print("<unknown instruction>", hex(n))
else:
variables = decode_variables(n, ins)
print_instruction(ins, variables)
if __name__ == '__main__':
main()