gesamt: bugfix bei mehreren methodenaufrufen in einer Expr
[uebersetzerbau-ss10.git] / gesamt / chelper.c
index edef8449a52f5522147691e48a72578faa50dd2e..25362ddd00c331acfc075091fbc388a021ce2291 100644 (file)
@@ -25,8 +25,8 @@ void func_header(char *s, int vars, int parms, int call)
        need_stack = (vars || parms) && call;
        if(need_stack) {
                printf("\tpushq %%rbp\n"
-                               "\tmovq %%rsp, %%rbp\n",
-                               "\tsubq $%d, %%rsp\n", 8*(vars+parms));
+                               "\tmovq %%rsp, %%rbp\n"
+                               "\tsubq $%d, %%rsp\n", 8*(vars+parms+2 /* fuer rax und r10*/));
        }
 }
 
@@ -39,11 +39,12 @@ void func_footer(void)
 {
        if(need_stack)
                printf("\tleave\n");
-       printf("\tret\n");
+       printf("\tret\n\n\n");
 }
 
 void move(char *src, char *dst)
 {
+       if(src == (char*) NULL) return;
        if(strcmp(src,dst) != 0) {
                printf("\tmovq %%%s, %%%s\n", src, dst);
        }