From aa51670b4f4fe411207c7c0719fddb64478b4dc0 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Tue, 11 Jul 2023 21:49:42 +0300 Subject: add multiple immediates to format check --- bcgen | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/bcgen b/bcgen index e019790..42e1f3f 100755 --- a/bcgen +++ b/bcgen @@ -177,16 +177,18 @@ void destroy(struct compile_state *cs) }} ''' -def check_fmt(fmt): +def check_fmt(fmt, imms): # todo: should sign value be encoded in the registers? - assert(len(fmt) == 6) + assert(len(fmt) == 5 + imms) assert(fmt[0] == '_' or fmt[0] == 'r') for i in range(1, 5): c = fmt[i] assert(c == 'R' or c == 'F' or c == '_') - assert(fmt[5] == '_' or fmt[5] == 'I' or fmt[5] == 'D') + for i in range(5, 5 + imms): + c = fmt[i] + assert(c == '_' or c == 'I' or c == 'D' or c == 'S') def param(fmt, i): c = fmt[i + 1] @@ -388,7 +390,7 @@ class BCGen: def rule(self, name, fmt, body): - check_fmt(fmt) + check_fmt(fmt, self.i) self.gen_macro(name, fmt, body) self.gen_static(name, fmt) self.gen_select(name, fmt) -- cgit v1.3