codeb: 'test' ins bfe-file auslagern
authorBernhard Urban <lewurm@gmail.com>
Sun, 30 May 2010 12:53:43 +0000 (14:53 +0200)
committerBernhard Urban <lewurm@gmail.com>
Sun, 30 May 2010 12:53:43 +0000 (14:53 +0200)
codeb/code.bfe
codeb/parser.y

index 85223a80173fb370323631f5f9c766b99d6a999e..81ff40082ee988a512a6501f3a0e492f0c2b8b78 100644 (file)
@@ -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);
index 279576d385a91f19119b485b6ed975c7a75e70fe..62f4a4c5d2690cca64ce025d8511a260cc2c0241 100644 (file)
@@ -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@);
          @}