From 57500139afeb0beeec2b91c3c790fb1d5fd861f6 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Sun, 30 May 2010 14:53:43 +0200 Subject: [PATCH] codeb: 'test' ins bfe-file auslagern --- codeb/code.bfe | 4 ++-- codeb/parser.y | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/codeb/code.bfe b/codeb/code.bfe index 85223a8..81ff400 100644 --- a/codeb/code.bfe +++ b/codeb/code.bfe @@ -195,8 +195,8 @@ ret: O_RET(retexpr) # 2 # printf("\t//o_ret(expr)\n"); move(BN_REG, "rax"); func retexpr: O_ID # 1 # printf("\t//retexpr\n"); if(bnode->param_index > -1) move(param_reg(bnode->param_index), BN_REG); retexpr: expr -ifstat: O_IF(O_ID) # 1 # KIDREG2PARM(0); printf("\tmovq %%%s, %%rax\n", KID_REG(0)); /* fuer faelle wie "if bla then" noetig */ -ifstat: O_IF(expr) # 2 # /* iburg beschummeln :/ */ +ifstat: O_IF(O_ID) # 1 # KIDREG2PARM(0); printf("\tmovq %%%s, %%rax\n", KID_REG(0)); /* fuer faelle wie "if bla then" noetig */ printf("\ttest $-1, %%rax\n"); +ifstat: O_IF(expr) # 2 # /* iburg beschummeln :/ */ printf("\ttest $-1, %%rax\n"); expr: O_ID # 0 # expr: imm # 1 # moveimm(BN_VAL, BN_REG); diff --git a/codeb/parser.y b/codeb/parser.y index 279576d..62f4a4c 100644 --- a/codeb/parser.y +++ b/codeb/parser.y @@ -201,7 +201,7 @@ Statement: printf(".%s_ifstart_%d:\n", get_func_name(), @Statement.lblcnt_in@); write_tree(@Statement.node@, 0); burm_label(@Statement.node@); burm_reduce(@Statement.node@, 1); /* TODO: kann ich mir das test wirklich wegan and davor sparen? */ - printf("\ttest %s-1, %%rax\n\tjz .%s_ifend_%d\n", "$", get_func_name(), @Statement.lblcnt_in@); + printf("\tjz .%s_ifend_%d\n", get_func_name(), @Statement.lblcnt_in@); } @gen @revorder(1) printf(".%s_ifend_%d:\n", get_func_name(), @Statement.lblcnt_in@); @} @@ -228,7 +228,7 @@ Statement: printf(".%s_ifstart_%d:\n", get_func_name(), @Statement.lblcnt_in@); write_tree(@Statement.node@, 0); burm_label(@Statement.node@); burm_reduce(@Statement.node@, 1); /* TODO: kann ich mir das test wirklich wegan and davor sparen? */ - printf("\ttest %s-1, %%rax\n\tjz .%s_ifelse_%d\n", "$", get_func_name(), @Statement.lblcnt_in@); + printf("\tjz .%s_ifelse_%d\n", get_func_name(), @Statement.lblcnt_in@); } @gen @revorder(1) printf(".%s_ifend_%d:\n", get_func_name(), @Statement.lblcnt_in@); @} @@ -249,7 +249,7 @@ Statement: printf(".%s_whilestart_%d:\n", get_func_name(), @Statement.lblcnt_in@); write_tree(@Statement.node@, 0); burm_label(@Statement.node@); burm_reduce(@Statement.node@, 1); /* TODO: kann ich mir das test wirklich wegan and davor sparen? */ - printf("\ttest %s-1, %%rax\n\tjz .%s_whileend_%d\n", "$", get_func_name(), @Statement.lblcnt_in@); + printf("\tjz .%s_whileend_%d\n", get_func_name(), @Statement.lblcnt_in@); } @gen @revorder(1) printf("\tjmp .%s_whilestart_%d\n.%s_whileend_%d:\n", get_func_name(), @Statement.lblcnt_in@, get_func_name(), @Statement.lblcnt_in@); @} -- 2.25.1