From: Bernhard Urban Date: Mon, 17 May 2010 17:56:22 +0000 (+0200) Subject: codea: bessere registerbelegung fuer multiplikation bzw. subtraktion X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=uebersetzerbau-ss10.git;a=commitdiff_plain;h=23038f33413aafd64180b97a3fcab6c0146180ae codea: bessere registerbelegung fuer multiplikation bzw. subtraktion --- 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@); + } } @}