8000 Add verbose option. Hide field level detail when not verbose. · Plaque-fcc/micropython-esp32-ulp@a4867e8 · GitHub
[go: up one dir, main page]

Skip to content

Commit a4867e8

Browse files
committed
Add verbose option. Hide field level detail when not verbose.
1 parent 2a06a54 commit a4867e8

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

tools/disassemble.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ def chunk_into_words(code, bytes_per_word, byteorder):
162162
return words
163163

164164

165-
def decode_instruction_and_print(i):
165+
def decode_instruction_and_print(i, verbose=False):
166166
print(ubinascii.hexlify(i.to_bytes(4, 'little')))
167167

168168
try:
@@ -173,11 +173,12 @@ def decode_instruction_and_print(i):
173173

174174
print(name)
175175

176-
for field, val, extra in get_instruction_fields(ins):
177-
print(" {:10} = {:3}{}".format(field, val, extra))
176+
if verbose:
177+
for field, val, extra in get_instruction_fields(ins):
178+
print(" {:10} = {:3}{}".format(field, val, extra))
178179

179180

180-
def disassemble_manually(byte_sequence_string):
181+
def disassemble_manually(byte_sequence_string, verbose=False):
181182
sequence = byte_sequence_string.strip().replace(' ','')
182183
chars_per_instruction = 8
183184
list = [
@@ -188,18 +189,18 @@ def disassemble_manually(byte_sequence_string):
188189
for instruction in list:
189190
byte_sequence = ubinascii.unhexlify(instruction.replace(' ',''))
190191
i = int.from_bytes(byte_sequence, 'little')
191-
decode_instruction_and_print(i)
192+
decode_instruction_and_print(i, verbose)
192193

193194

194-
def disassemble_file(filename):
195+
def disassemble_file(filename, verbose=False):
195196
with open(filename, 'rb') as f:
196197
data = f.read()
197198

198199
code = data[12:] # text_offset (where code starts) is always 12 for ULP binaries
199200
words = chunk_into_words(code, bytes_per_word=4, byteorder='little')
200201

201202
for i in words:
202-
decode_instruction_and_print(i)
203+
decode_instruction_and_print(i, verbose)
203204

204205

205206
def print_help():
@@ -208,11 +209,13 @@ def print_help():
208209
print('Options:')
209210
print(' -h Show this help text')
210211
print(' -m <byte_sequence> Sequence of hex bytes (8 per instruction)')
212+
print(' -v Verbose mode. Also show instruction fields')
211213
print(' <filename> Path to ULP binary')
212214
pass
213215

214216

215217
def handle_cmdline(params):
218+
verbose = False
216219
filename = None
217220
byte_sequence = None
218221

@@ -238,6 +241,8 @@ def handle_cmdline(params):
238241

239242
byte_sequence = "".join(params[:sequence_len+1])
240243
params = params[sequence_len:]
244+
elif params[0] == '-v':
245+
verbose = True
241246
elif params[0][0] == '-':
242247
# ignore unknown options for now
243248
pass
@@ -248,9 +253,9 @@ def handle_cmdline(params):
248253
params = params[1:] # remove first param from list
249254

250255
if byte_sequence:
251-
disassemble_manually(byte_sequence)
256+
disassemble_manually(byte_sequence, verbose)
252257
elif filename:
253-
disassemble_file(filename)
258+
disassemble_file(filename, verbose)
254259

255260

256261
if sys.argv: # if run from cmdline

0 commit comments

Comments
 (0)
0