From 23038f33413aafd64180b97a3fcab6c0146180ae Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Mon, 17 May 2010 19:56:22 +0200 Subject: [PATCH] codea: bessere registerbelegung fuer multiplikation bzw. subtraktion --- codea/parser.y | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/codea/parser.y b/codea/parser.y index b3b3726..c01bee7 100644 --- a/codea/parser.y +++ b/codea/parser.y @@ -235,11 +235,14 @@ Expr: @i @Expr.imm@ = @Term.imm@ && @Minusterm.imm@; @reg { - /* TODO */ if(!(@Expr.node@->kids[0] == TREENULL && @Expr.node@->kids[1] == TREENULL)) { @Term.node@->reg = @Expr.node@->reg; @Term.node@->skip = 0; - @Minusterm.node@->reg = next_reg(@Term.node@->reg, @Expr.node@->skip, @Expr.gparamges@); + if(@Minusterm.imm@) { + @Minusterm.node@->reg = @Expr.node@->reg; + } else { + @Minusterm.node@->reg = next_reg(@Term.node@->reg, @Expr.node@->skip, @Expr.gparamges@); + } } } @} @@ -251,10 +254,13 @@ Expr: @i @Expr.imm@ = @Term.imm@ && @Multerm.imm@; @reg { - /* TODO */ @Term.node@->reg = @Expr.node@->reg; @Term.node@->skip = 0; - @Multerm.node@->reg = next_reg(@Term.node@->reg, @Expr.node@->skip, @Expr.gparamges@); + if(@Term.imm@) { + @Multerm.node@->reg = @Expr.node@->reg; + } else { + @Multerm.node@->reg = next_reg(@Term.node@->reg, @Expr.node@->skip, @Expr.gparamges@); + } } @} -- 2.25.1