Mail Archives: djgpp-workers/1997/06/12/09:25:20
I've a suggestion.
I've seen that while compiling large packages like the copilers
themselves, nearly a quarter of all DOS interrupts is to set the DTA
address (int 21-1Ah), over and over again to the same address. I've seen
in the sources that only the [_dos_]find[first|next] routines do this.
Since calling interrupts is a bit cumbersome under a DPMI host, I
believe a task switch is involved, the total of may times almost now
time equal some time.
So, why don't we set the DTA address to the start of __tb in crt1.c and
leave it there for the rest of the program? Since the libc routines
govern almost all transfers from DOS to the program and back, this
shouldn't be a problem. And when the user really wants to move the DTA
address we can demand from him to put it back before here calls any
routines that might require it.
--
+----------------+
| Vik Heyndrickx |
+----------------+
- Raw text -