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*/));
}
}
{
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);
}