Simplify storing of opcode to description mapping

This commit is contained in:
Alexis Engelke
2019-02-23 12:10:30 +01:00
parent 10e7a41972
commit da683d850a

View File

@@ -299,21 +299,21 @@ template = """// Auto-generated file -- do not modify!
"""
if __name__ == "__main__":
entries = defaultdict(list)
entries = []
with open(sys.argv[1], "r") as f:
for line in f.read().splitlines():
if line and line[0] != "#":
opcode_string, desc = tuple(line.split(maxsplit=1))
for opcode in parse_opcode(opcode_string):
entries[opcode].append(InstrDesc.parse(desc))
entries.append((opcode, InstrDesc.parse(desc)))
mnemonics = sorted({desc.mnemonic for descs in entries.values() for desc in descs})
mnemonics = sorted({desc.mnemonic for _, desc in entries})
mnemonics_lut = {name: mnemonics.index(name) for name in mnemonics}
table32 = Table()
table64 = Table()
masks = "ONLY64", "ONLY32"
for opcode, descs in entries.items():
for desc in descs:
for opcode, desc in entries:
if "ONLY64" not in desc.flags:
table32.add_opcode(opcode, desc.encode(mnemonics_lut))
if "ONLY32" not in desc.flags: