def odump(data): def print_format(offset, bytes, dump): print("%4x:" % offset, end="") # オフセット xs = [] # 16進数で出力 for i in range(0, len(bytes), 2): x = (bytes[i+1] << 8) | bytes[i] xs.append(" %04x" % x) print("".join(xs).ljust(16), end="") d = list(map(str, dump)) if len(d) == 1: s = d[0] else: s = d[0] + " " + ", ".join(d[1:]) s = s.ljust(20) print(s, end="") ys = [] # 8進数で出力 for i in range(0, len(bytes), 2): x = (bytes[i+1] << 8) | bytes[i] ys.append(" %06o" % x) print("".join(ys)) pass offset = 0 while data.has_more_elements(): if offset >= _text_size: break data.marked() op = util.read2(data) d = opcode.dispatch(op, data, run.MODE_DUMP, None) eatbytes = data.get_readbytes_from_mark() # 読み込んだバイト配列 # ダンプ print_format(offset, eatbytes, d) # 読み込んだバイト分、オフセットを進める offset += len(data.get_readbytes_from_mark())