break;
default:
#endif
- fprintf(codefile, "\tsub\tesp,%ld\n",nlocals);
+ fprintf(codefile, "sub\tesp,%ld\n",nlocals);
#ifdef NOTDEF
break;
}
f_regsave()
{
- if (si_off == -lbytes) lbytes -= 4;
- if (di_off == -lbytes) lbytes -= 4;
- if (si_off == -lbytes) lbytes -= 4;
- if (lbytes) fprintf(codefile, "\tsub\tesp,%ld\n",(long) lbytes);
+ if (si_off != di_off) {
+ if (si_off == -lbytes) lbytes -= 4;
+ if (di_off == -lbytes) lbytes -= 4;
+ if (si_off == -lbytes) lbytes -= 4;
+ }
+ if (lbytes) fprintf(codefile, "sub\tesp,%ld\n",(long) lbytes);
if (firstreg == 1) {
fputs("push edi\n", codefile);
if (si_off != -1) fputs("push esi\n", codefile);
f_regsave()
{
- if (di_off == -lbytes) lbytes -= 2;
- if (si_off == -lbytes) lbytes -= 2;
- if (di_off == -lbytes) lbytes -= 2;
+ if (si_off != di_off) {
+ if (di_off == -lbytes) lbytes -= 2;
+ if (si_off == -lbytes) lbytes -= 2;
+ if (di_off == -lbytes) lbytes -= 2;
+ }
switch (lbytes) {
case 4: fputs("\tpush\tax\n", codefile);
case 2: fputs("\tpush\tax\n", codefile);