Add disassemble command.
This commit is contained in:
parent
8dac1f581e
commit
3d6492db56
|
@ -5,9 +5,25 @@ import socket
|
|||
import sys
|
||||
import select
|
||||
import threading
|
||||
import tempfile
|
||||
import subprocess
|
||||
import struct
|
||||
|
||||
|
||||
def make_srec(addr, code):
|
||||
header = 'S00600004844521B'
|
||||
terminate = 'S9030000FC'
|
||||
addr = '%.8x' % addr
|
||||
code = code.encode('hex').upper()
|
||||
length = '%.2x' % (len(code.decode('hex')) + 5)
|
||||
srec = length + addr + code
|
||||
|
||||
bytesum = sum(ord(i) for i in srec.decode('hex'))
|
||||
cksum = "%.2X" % (~bytesum & 0xFF)
|
||||
|
||||
return '\n'.join([header, 'S3' + srec + cksum, terminate])
|
||||
|
||||
|
||||
class SimpleAmigaDebuggerConnection(object):
|
||||
def __init__(self, server):
|
||||
self.server = server
|
||||
|
@ -277,6 +293,18 @@ class SimpleAmigaDebuggerFrontEnd(cmd.Cmd):
|
|||
data = self.sad.read_array(ptr, size)
|
||||
print data.encode('hex')
|
||||
|
||||
def do_dis(self, args):
|
||||
""" disassemble """
|
||||
ptr, size = self.parse_args(args, 'ptr', 'long')
|
||||
data = self.sad.read_array(ptr, size)
|
||||
|
||||
with tempfile.NamedTemporaryFile() as srec:
|
||||
srec.write(make_srec(ptr, data))
|
||||
srec.flush()
|
||||
output = subprocess.check_output(
|
||||
['m68k-amigaos-objdump', '-b', 'srec', '-m', '68020', '-D', srec.name])
|
||||
print '\n'.join(output.split('\n')[7:-1])
|
||||
|
||||
def do_reset(self, _):
|
||||
""" reset """
|
||||
self.sad.reset()
|
||||
|
|
Loading…
Reference in New Issue