From: Bernhard Urban Date: Sun, 30 May 2010 12:48:25 +0000 (+0200) Subject: codeb: labels mit . davor versehen (fuer bench.sh...) X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=uebersetzerbau-ss10.git;a=commitdiff_plain;h=b8b9b052fd59524a854233cb8286ccc863ddbd39 codeb: labels mit . davor versehen (fuer bench.sh...) --- diff --git a/codeb/parser.y b/codeb/parser.y index 6512c0c..279576d 100644 --- a/codeb/parser.y +++ b/codeb/parser.y @@ -198,12 +198,12 @@ Statement: @reg @Statement.node@->reg = @Expr.node@->reg = next_reg((char *)NULL, @Expr.gparamges@); @gen { - printf("%s_ifstart_%d:\n", get_func_name(), @Statement.lblcnt_in@); + 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("\ttest %s-1, %%rax\n\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@); + @gen @revorder(1) printf(".%s_ifend_%d:\n", get_func_name(), @Statement.lblcnt_in@); @} | IF Expr THEN Statseq Elsestat END @@ -225,12 +225,12 @@ Statement: @reg @Statement.node@->reg = @Expr.node@->reg = next_reg((char *)NULL, @Expr.gparamges@); @gen { - printf("%s_ifstart_%d:\n", get_func_name(), @Statement.lblcnt_in@); + 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("\ttest %s-1, %%rax\n\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@); + @gen @revorder(1) printf(".%s_ifend_%d:\n", get_func_name(), @Statement.lblcnt_in@); @} | WHILE Expr DO Statseq END @@ -246,12 +246,12 @@ Statement: @reg @Statement.node@->reg = @Expr.node@->reg = next_reg((char *)NULL, @Expr.gparamges@); @gen { - printf("%s_whilestart_%d:\n", get_func_name(), @Statement.lblcnt_in@); + 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("\ttest %s-1, %%rax\n\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@); + @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@); @} | RETURN Expr @@ -274,7 +274,7 @@ Elsestat: @i @Statseq.lblcnt_in@ = @Elsestat.lblcnt_in@; @i @Elsestat.lblcnt_out@ = @Statseq.lblcnt_out@; - @gen printf("\tjmp %s_ifend_%d\n%s_ifelse_%d:\n", get_func_name(), @Elsestat.reallblcnt@, get_func_name(), @Elsestat.reallblcnt@); + @gen printf("\tjmp .%s_ifend_%d\n.%s_ifelse_%d:\n", get_func_name(), @Elsestat.reallblcnt@, get_func_name(), @Elsestat.reallblcnt@); @} Lexpr: