delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1992/02/04/22:09:06

From: kroe AT sbcs DOT sunysb DOT edu (KiYun Roe)
Date: Tue, 4 Feb 92 21:33:20 EST
To: haynes AT malta DOT island DOT com
Subject: Re: Windows
Cc: djgpp AT sun DOT soe DOT clarkson DOT edu
Status: O

The Windows memory model is fundamentally incompatible with go32.  In
386 enhanced mode, Windows supports something called DPMI (DOS
Protected Mode Interface, I think), version 0.9.  Unfortunately, DPMI
0.9 does not provide a number of things that go32 needs, particularly
paging.  Everything in djgpp assumes a flat 32-bit memory model, but
the DPMI 0.9 services are oriented to a segmented memory model.

I imagine it might be possible to support a restricted subset of go32
by allocating a single large memory block from DPMI and put the go32
client program, data, and stack in it.  That is, instead of the 640k
ceiling we could support a 4096k ceiling.  It's kind of gross, but
maybe it's better than nothing.  The djgpp readme file says that data
usually starts at 0x400000 and the stack runs from 0x7ffffffc down.
We'd have to find a way to change the address where data is linked.
But I digress...

Having a Windows go32 would still not let you write Windows programs
with djgpp.  Windows uses a new segmented executable format for its
programs and DLLs (Dyna-Link Library -- a kind of shared library).
It's also kind of impossible to generate a program without the right
compiler libraries, because Windows routines aren't accessed by
interrupts or system calls -- they're dynamically-linked at run-time.

- Raw text -


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