joe (04/10/83)
No, I don't think that trying to handle 32 bit data pointers in an 8086 C compiler is too hard, I just think that it's too slow. I don't see how it can be done without turning every data reference into a sequence that loads the segment register first, and unless VERY clever optimization is done, pointer to pointer copies will require two such loads. Hence, loops of the sort used to copy strings [while (*a++ = *b++);] will be nearly twice as slow as one-segment loops. You could preload two segment registers (at least they gave us the EXTRA segment), but you'd still have to check for wraparound, either in the loop or by unwinding it. Any way you do it, the 8086 just is not designed to access more than 64k of data conveniently.