From e7174d670cac7603d22da2552e3bef166aa17ea9 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Tue, 11 Jul 2023 21:08:16 +0300 Subject: allow specifying value types --- bcgen | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/bcgen b/bcgen index 1e2e592..95a18b3 100755 --- a/bcgen +++ b/bcgen @@ -9,8 +9,8 @@ bcode_header_fmt = ''' #include -typedef unsigned long ubcval_t; -typedef signed long sbcval_t; +typedef {self.ubcval_type} ubcval_t; +typedef {self.sbcval_type} sbcval_t; typedef float fbcval_t; typedef double dbcval_t; typedef size_t bcreloc_t; @@ -222,16 +222,20 @@ def gen_cond(r, i): return 'a' + str(i) + ' == ' + r[1:] class BCGen: - def __init__(self, r = 3, f = 3, extra='', head=''): + def __init__(self, r = 3, f = 3, + ubcval_type = 'unsigned long', + sbcval_type = 'signed long', + extra='', head=''): + self.r = r self.f = f + self.ubcval_type = ubcval_type + self.sbcval_type = sbcval_type + self.extra = extra self.head = head - gregs = ['ubcval_t r' + str(i) + ' = 0;\n' for i in range(r)] - fregs = ['dbcval_t f' + str(i) + ' = 0;\n' for i in range(f)] - self.regs = [] self.body = [] self.enum = [] @@ -240,12 +244,6 @@ class BCGen: self.select = [] self.select_header = [] - for g in gregs: - self.regs += g - - for f in fregs: - self.regs += f - def gen_exec_instance(self, name, r0, r1, r2, r3): label = gen_label(name, r0, r1, r2, r3) + ': ' macro = '{}({}, {}, {}, {}); '.format(name.upper(), r0, r1, r2, r3) @@ -359,6 +357,15 @@ class BCGen: self.gen_enum(name, fmt) def write(self, name='bcode'): + gregs = ['ubcval_t r' + str(i) + ' = 0;\n' for i in range(self.r)] + fregs = ['dbcval_t f' + str(i) + ' = 0;\n' for i in range(self.f)] + + for g in gregs: + self.regs += g + + for f in fregs: + self.regs += f + with open(name + '.h', 'w') as f: self.select_header = ''.join(self.select_header) f.write(bcode_header_fmt.format(self=self)) -- cgit v1.3