fix concat error
[soc.git] / src / soc / decoder / pseudo / pywriter.py
1 # python code-writer for OpenPOWER ISA pseudo-code parsing
2
3 import os
4 from soc.decoder.pseudo.pagereader import ISA
5 from soc.decoder.power_pseudo import convert_to_python
6
7 def get_isasrc_dir():
8 fdir = os.path.abspath(os.path.dirname(__file__))
9 fdir = os.path.split(fdir)[0]
10 return os.path.join(fdir, "isa")
11
12
13 class PyISAWriter(ISA):
14 def __init__(self):
15 ISA.__init__(self)
16
17 def write_pysource(self, pagename):
18 instrs = isa.page[pagename]
19 isadir = get_isasrc_dir()
20 fname = os.path.join(isadir, "%s.py" % pagename)
21 with open(fname, "w") as f:
22 for page in instrs:
23 d = self.instr[page]
24 print (fname, d.opcode)
25 f.write("def %s():\n" % page.replace(".", "_"))
26 pcode = '\n'.join(d.pcode) + '\n'
27 print (pcode)
28 pycode = convert_to_python(pcode)
29 pycode = pycode.split("\n")
30 pycode = '\n'.join(map(lambda x: " %s" % x, pycode))
31 f.write("%s\n\n" % pycode)
32
33
34 if __name__ == '__main__':
35 isa = PyISAWriter()
36 isa.write_pysource('comparefixed')
37 isa.write_pysource('fixedarith')