some fixes/improvements
This commit is contained in:
		
							parent
							
								
									3ea0fc0fe6
								
							
						
					
					
						commit
						4059840c43
					
				
					 1 changed files with 12 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -49,11 +49,11 @@ con_float() {
 | 
			
		|||
	if (i!= 4 && i!= 8)
 | 
			
		||||
		fatal("bad fcon size");
 | 
			
		||||
	if (! warning_given) {
 | 
			
		||||
		fprintf(stderr, "Warning: dummy floating point constant(s)\n");
 | 
			
		||||
		fputs("Warning: dummy floating point constant(s)\n", stderr);
 | 
			
		||||
		warning_given = 1;
 | 
			
		||||
	}
 | 
			
		||||
	while ( i ) {
 | 
			
		||||
		fprintf(codefile," .data2 0,0\n") ;
 | 
			
		||||
		fputs(" .data2 0,0\n", codefile) ;
 | 
			
		||||
		i -=4 ;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -69,13 +69,13 @@ string holstr(n) word n; {
 | 
			
		|||
 | 
			
		||||
prolog(nlocals) full nlocals; {
 | 
			
		||||
 | 
			
		||||
	fprintf(codefile,"\tpush\tbp\n\tmov\tbp,sp\n");
 | 
			
		||||
	fputs("\tpush\tbp\n\tmov\tbp,sp\n", codefile);
 | 
			
		||||
	switch (nlocals) {
 | 
			
		||||
	case 4: printf("\tpush\tax\n");
 | 
			
		||||
	case 2: printf("\tpush\tax\n");
 | 
			
		||||
	case 4: fputs("\tpush\tax\n", codefile);
 | 
			
		||||
	case 2: fputs("\tpush\tax\n", codefile);
 | 
			
		||||
	case 0: break;
 | 
			
		||||
	default:
 | 
			
		||||
		printf("\tsub\tsp,%d\n",nlocals); break;
 | 
			
		||||
		fprintf(codefile, "\tsub\tsp,%d\n",nlocals); break;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -130,14 +130,14 @@ regsave(regstr, off, size)
 | 
			
		|||
regreturn()
 | 
			
		||||
{
 | 
			
		||||
	if (firstreg == 1) {
 | 
			
		||||
		if (si_off != -1) fputs("pop si\n", codefile);
 | 
			
		||||
		fputs("pop di\n", codefile);
 | 
			
		||||
		if (si_off != -1) fputs("jmp .sdret\n", codefile);
 | 
			
		||||
		else fputs("jmp .dret\n", codefile);
 | 
			
		||||
	}
 | 
			
		||||
	else if (firstreg == -1) {
 | 
			
		||||
		if (di_off != -1) fputs("pop di\n", codefile);
 | 
			
		||||
		fputs("pop si\n", codefile);
 | 
			
		||||
		if (di_off != -1) fputs("jmp .dsret\n", codefile);
 | 
			
		||||
		else fputs("jmp .sret\n", codefile);
 | 
			
		||||
	}
 | 
			
		||||
	fputs("mov sp,bp\npop bp\nret\n", codefile);
 | 
			
		||||
	else fputs("jmp .cret\n", codefile);
 | 
			
		||||
}
 | 
			
		||||
#endif REGVARS
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -153,7 +153,7 @@ mes(type) word type ; {
 | 
			
		|||
				return ;
 | 
			
		||||
			default:
 | 
			
		||||
				strarg(argt) ;
 | 
			
		||||
				printf(".define %s\n",argstr) ;
 | 
			
		||||
				fprintf(codefile, ".define %s\n",argstr) ;
 | 
			
		||||
				break ;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue