What the heck is “DGROUP > 64K”?
This Q explains the problem; the next Q gives some remedies. DGROUP is a link-time group of data segments, and the compiler typically generates code that expects DS to be pointing to DGROUP. (Exception: Borland’s huge model has no DGROUP.) Here’s what goes into DGROUP: – tiny model (all pointers near): DGROUP holds the entire program. – small and medium models (data pointers near): DGROUP holds all globals and static variables including string literals, plus the stack and the heap. – large, compact, and huge models in Microsoft (data pointers far): DGROUP holds only initialized globals and static variables including string literals, plus the stack and the near heap. – large and compact models in Borland (data pointers far): DGROUP holds initialized and uninitialized globals and static variables including string literals, but not the stack or heap. – huge model in Borland (data pointers far): there is no DGROUP, so the 64K limit doesn’t apply. In all of the above, which is to say all si