From: Bernhard Urban Date: Mon, 7 Jun 2010 18:23:08 +0000 (+0200) Subject: Revert "gesamt: sicheres umgehen mit den vars, aber dafuer mehr befehle wo es oft... X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=uebersetzerbau-ss10.git;a=commitdiff_plain;h=44877c321c25632b8ad9a1d43024271544ba3192 Revert "gesamt: sicheres umgehen mit den vars, aber dafuer mehr befehle wo es oft nicht" This reverts commit 2286a935e6993a6bc756cf1a05b3b170229cd83f. --- diff --git a/gesamt/chelper.c b/gesamt/chelper.c index ff621b4..dd345b0 100644 --- a/gesamt/chelper.c +++ b/gesamt/chelper.c @@ -15,29 +15,16 @@ static char *regs8l[] = {"al", "r10b", "r11b", "r9b"}; /* ja, dirty.. */ static char *akt_func_name = (char*) NULL; static char need_stack = 0; -static int gvars; void func_header(char *s, int vars, int parms, int call) { printf("\t.globl %1$s\n\t.type %1$s, @function\n%1$s:\n", s); - printf("\t//vars-> %i, parms-> %i, call(bool)-> %i\n", vars, parms, call); + printf("\t//vars: %i, parms: %i, call(bool): %i\n", vars, parms, call); akt_func_name = s; -#if 0 need_stack = (vars || parms) && call; -#else - need_stack = vars || (parms && call); - gvars = vars; -#endif if(need_stack) { - /* 2 * 7 fuer paramterregs reservieren + 2 fuer rax und r10 */ - printf("\tenter $%d, $0\n", 8*(2*7 + 2)); - - int j; - printf("\t//vars pushen\n"); /* koennten parameter enthalten von anderen fkts... */ - for(j = VARBEGIN; j > VARBEGIN - vars; j--) { - printf("\tpushq %%%s\n", param_reg(j)); - } + printf("\tenter $%d, $0\n", 8*(vars + parms + 2 /* fuer rax und r10 */)); } } @@ -48,14 +35,8 @@ char *get_func_name(void) void func_footer(void) { - if(need_stack) { - int j; - /* vars poppen */ - for(j = VARBEGIN+1 - gvars; j < VARBEGIN+1; j++) { - printf("\tpopq %%%s\n", param_reg(j)); - } + if(need_stack) printf("\tleave\n"); - } printf("\tret\n\n\n"); }