5 from openpower
.decoder
.power_enums
import (
8 from openpower
.insndb
.core
import (
15 class GenericVisitor(Visitor
):
16 def __init__(self
, **_
):
19 class ListVisitor(GenericVisitor
):
20 @contextlib.contextmanager
21 def record(self
, record
):
25 class OpcodesVisitor(GenericVisitor
):
26 def __init__(self
, insn
, **_
):
28 return super().__init
__()
30 @contextlib.contextmanager
31 def record(self
, record
):
32 if record
.name
== self
.__insn
:
33 for opcode
in record
.opcodes
:
39 "opcodes": OpcodesVisitor
,
41 parser
= argparse
.ArgumentParser()
42 subparser
= parser
.add_subparsers(dest
="command", required
=True)
43 parser_list
= subparser
.add_parser("list",
44 help="list all instructions")
45 parser_opcodes
= subparser
.add_parser("opcodes",
46 help="print instruction opcodes")
47 parser_opcodes
.add_argument("insn",
51 args
= vars(parser
.parse_args())
52 command
= args
.pop("command")
53 visitor
= visitors
[command
](**args
)
55 db
= Database(find_wiki_dir())
56 db
.visit(visitor
=visitor
)