/* ja, dirty.. */
static char *akt_func_name = (char*) NULL;
static char need_stack = 0;
+static int call_s = 0;
void func_header(char *s, int vars, int parms, int call)
{
akt_func_name = s;
need_stack = (vars || parms) && call;
- if(need_stack) {
+ call_s = call;
+ if(need_stack && (call != -1)) {
printf("\tenter $%d, $0\n", 8*(vars + parms + 2 /* fuer rax und r10 */));
}
}
void func_footer(void)
{
- if(need_stack)
- printf("\tleave\n");
- printf("\tret\n\n\n");
+ if(call_s != -1) {
+ if(need_stack)
+ printf("\tleave\n");
+ printf("\tret\n\n\n");
+ }
}
void move(char *src, char *dst)