1 # python code-writer for OpenPOWER ISA pseudo-code parsing
4 from soc
.decoder
.pseudo
.pagereader
import ISA
5 from soc
.decoder
.power_pseudo
import convert_to_python
8 fdir
= os
.path
.abspath(os
.path
.dirname(__file__
))
9 fdir
= os
.path
.split(fdir
)[0]
10 return os
.path
.join(fdir
, "isa")
13 class PyISAWriter(ISA
):
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
:
24 print (fname
, d
.opcode
)
25 f
.write("def %s():\n" % page
.replace(".", "_"))
26 pcode
= '\n'.join(d
.pcode
) + '\n'
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
)
34 if __name__
== '__main__':
36 isa
.write_pysource('comparefixed')
37 isa
.write_pysource('fixedarith')