Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!rutgers!husc6!mit-eddie!genrad!panda!teddy!jpn From: jpn@teddy.UUCP Newsgroups: comp.os.minix Subject: Re: MINIX on the Atari ST Message-ID: <3722@teddy.UUCP> Date: Thu, 29-Jan-87 11:43:59 EST Article-I.D.: teddy.3722 Posted: Thu Jan 29 11:43:59 1987 Date-Received: Fri, 30-Jan-87 05:53:59 EST References: <454@bobkat.UUCP> <253@vax1.ccs.cornell.edu> <486@bobkat.UUCP> Reply-To: jpn@teddy.UUCP (John P. Nelson) Distribution: world Organization: GenRad, Inc., Concord, Mass. Lines: 23 >Nobody has responded to my original query: how does the compiler (ACK?) >simulate the *complete* relocatability provided by the 8088 (small >model, of course) on the 68000? How does the OS copy my data segment >when my process does a fork()? What about the pointers; they're all >wrong! I just don't get it. Interestingly, the 68000 also has a "small" model, if all data operations are be done with 16bit offsets off some address register! All it takes is for the operating system to set up some data base register (or as many base registers as you can afford), and for the compiler to avoid changing this register(s). Actually, since "pointers" are really only offsets (integers), nearly all the address registers could be used for base pointers. Also, the compiler can only use certain addressing modes, but that way, a fork can be accomplished by the OS by changing the base register(s). This limits you to 64K(*n) data, of course. Note that the PROGRAM text does not need to be limited to 64K, unless you need the text to be relocatable as well. You are right though, with both 8086 and 68000 architectures: If the large memory model is used, it takes hardware support (virtual memory) to provide true relocatable code.