delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/1997/06/12/09:25:20

Sender: vheyndri AT rug DOT ac DOT be
Message-Id: <339FF899.5D7@rug.ac.be>
Date: Thu, 12 Jun 1997 15:24:41 +0200
From: Vik Heyndrickx <Vik DOT Heyndrickx AT rug DOT ac DOT be>
Mime-Version: 1.0
To: djgpp-workers AT delorie DOT com
Subject: suggestion for moving DTA to fixed place in __tb

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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019