codea: a-b-c-d sollte jetzt passen... trick: a-b-c-d = a-(b+c+d)
[uebersetzerbau-ss10.git] / codea / code.bfe
index fbef72d590ef092a9137a646fa35c331c880f498..9dcffae83212fccbd4c4e5966d975ad00c8bd108 100644 (file)
@@ -10,7 +10,7 @@
 %}
 
 %start begin
-%term O_RET=1 O_NOT=2 O_SUB=3 O_MUL=4 O_OR=5 O_LESS=6 O_EQ=7 O_ID=8
+%term O_RET=1 O_NOT=2 O_SUB=3 O_MUL=4 O_OR=5 O_LESS=6 O_EQ=7 O_ID=8 O_ADD=9
 
 %%
 
@@ -19,6 +19,7 @@ ret: O_RET(expr) # 1 # move(bnode->reg, "rax"); ret();
 
 expr: O_ID # 1 # if(bnode->param_index > -1) move(param_reg(bnode->param_index), bnode->reg);
 expr: O_SUB(expr,expr) # 1 # printf("\tsubq %%%s, %%%s\n", bnode->kids[0]->reg, bnode->kids[1]->reg);
+expr: O_ADD(expr,expr) # 1 # printf("\taddq %%%s, %%%s\n", bnode->kids[1]->reg, bnode->kids[0]->reg);
 
 %%