X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=codea%2Fcode.bfe;h=9dcffae83212fccbd4c4e5966d975ad00c8bd108;hb=f099a294f64b898e145c535b45de00895c8fbbd7;hp=0d4661ba19a598442911f0cae5895c11f913b448;hpb=79bf606e8b7d140aa1468154bb747636bd75eb00;p=uebersetzerbau-ss10.git diff --git a/codea/code.bfe b/codea/code.bfe index 0d4661b..9dcffae 100644 --- a/codea/code.bfe +++ b/codea/code.bfe @@ -10,15 +10,19 @@ %} %start begin -%term O_RETURN=1 +%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 %% -begin: ret -ret: O_RETURN # 1 # ret(); +begin: ret # 0 # printf("// end\n"); +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); %% + /* vim: filetype=c */ -