@@ -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
205206def 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
215217def 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
256261if sys .argv : # if run from cmdline
0 commit comments