power_insn: support verbosity levels
[openpower-isa.git] / src / openpower / sv / trans / pysvp64dis.py
index ff276ed48907500ffe39719c6b3eb8195f40aa24..837041da1ac9edbfeab150a4f3a272911b10aa9e 100644 (file)
@@ -7,6 +7,7 @@ from openpower.decoder.power_enums import (
     find_wiki_dir as _find_wiki_dir,
 )
 from openpower.decoder.power_insn import (
+    Verbosity as _Verbosity,
     Database as _Database,
     WordInstruction as _WordInstruction,
     PrefixedInstruction as _PrefixedInstruction,
@@ -22,8 +23,9 @@ class ByteOrder(_enum.Enum):
         return self.name.lower()
 
 
-def load(ifile, byteorder, **_):
+def load(ifile, byteorder=ByteOrder.LITTLE, **_):
     byteorder = str(byteorder)
+    curpos = ifile.tell() # get file position
 
     while True:
         insn = ifile.read(4)
@@ -49,11 +51,13 @@ def load(ifile, byteorder, **_):
                 insn = _PrefixedInstruction.pair(prefix=prefix, suffix=suffix)
         yield insn
 
+    ifile.seek(curpos) # restore position so that generator can be reused
 
-def dump(insns, verbose, **_):
+
+def dump(insns, verbosity, **_):
     db = _Database(_find_wiki_dir())
     for insn in insns:
-        yield from insn.disassemble(db=db, verbose=verbose)
+        yield from insn.disassemble(db=db, verbosity=verbosity)
 
 
 # this is the entry-point for the console-script pysvp64dis
@@ -65,8 +69,12 @@ def main():
         type=_argparse.FileType("w"), default=_sys.stdout)
     parser.add_argument("-b", "--byteorder",
         type=ByteOrder, default=ByteOrder.LITTLE)
+    parser.add_argument("-s", "--short",
+        dest="verbosity", default=_Verbosity.NORMAL,
+        action="store_const", const=_Verbosity.SHORT)
     parser.add_argument("-v", "--verbose",
-        action="store_true", default=False)
+        dest="verbosity", default=_Verbosity.NORMAL,
+        action="store_const", const=_Verbosity.VERBOSE)
     parser.add_argument("-l", "--log",
         action="store_true", default=False)