docs/ppc: elfspec
[uebersetzerbau-ss10.git] / gesamt / chelper.c
index edef8449a52f5522147691e48a72578faa50dd2e..dd345b0934bf7e8db0b2810ba0a899d51c550326 100644 (file)
@@ -24,9 +24,7 @@ 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));
+               printf("\tenter $%d, $0\n", 8*(vars + parms + 2 /* fuer rax und r10 */));
        }
 }
 
@@ -39,11 +37,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);
        }