need_stack = (vars || parms) && call;
if(need_stack) {
- printf("\tpushq %%rbp\n"
- "\tmovq %%rsp, %%rbp\n"
- "\tsubq $%d, %%rsp\n", 8*(vars+parms+2 /* fuer rax und r10*/));
+ printf("\tenter $%d, $0\n", 8*(vars + parms + 2 /* fuer rax und r10 */));
}
}
void gen_lea(struct treenode *bnode, short e)
{
- printf("\t//gen_lea(e: %i)\n", e);
+ printf("\t//gen_lea(e= %i)\n", e);
KIDREG2PARM(0);
if(e) {
KIDKIDREG2PARM(1,0);
void prep_arg(struct treenode *bnode, int moveit)
{
- printf("\t//args-nr.: %i (%%%s) [moveit: %i]\n", bnode->soffset, param_reg(bnode->soffset), moveit);
+ printf("\t//args-nr-> %i (%%%s) [moveit= %i]\n", bnode->soffset, param_reg(bnode->soffset), moveit);
xchg_param[bnode->soffset] = 1;
if(moveit) { /* expr */
if((BN_REG == (char *) NULL) || (bnode->kids[1] != TREENULL && bnode->kids[1]->op == O_ID && bnode->kids[1]->kids[0] == TREENULL && bnode->kids[1]->kids[1] == TREENULL)) {