Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!aramis.rutgers.edu!geneva.rutgers.edu!hedrick From: hedrick@geneva.rutgers.edu (Charles Hedrick) Newsgroups: comp.os.minix Subject: Re: Compress (really "Large Model" compilers) Message-ID: Date: 24 Jul 89 07:27:40 GMT References: <4671@crash.cts.com> <2928@ast.cs.vu.nl> Organization: Rutgers Univ., New Brunswick, N.J. Lines: 37 To: ast@cs.vu.nl >>I want a REAL C compiler for it that will fully utilize the idiosyncrasies >>of the 80286 architecture >I, for one, am absolutely, irrevocably, unequivocably, and adamantly >opposed to that mentality, except for people over 65, who grew up with >the ENIAC and MARK I generation. I think something's missing here. The whole point of a compiler is to use the architecture of the target machine. Since when did we consider it a virtue for a compiler not to fully utilize the idiosyncrasies of the machine it's compiling code for? It's not the object code you want to be independent of the architecture, but the source code. I've got a reasonable amount of experience playing with a System V port for the 286. This is a pretty good indication of what a Minix with large model would look like. There are certainly limitations to what you can do, but there are limitations to what you can do with the Minix compiler too, and the limitations of large model are much less serious. I'm not a great fan of the 286 either. But if you write in a higher level language, you are pretty much isolated from the oddities of the chip. I have brought up a lot of random code from the net. There's certainly code that assumes int's are 32 bits. But that code won't work with the small model Minix compiler either. All the code I've seen that is written to allow 16 bit int's at all works with a large model compiler. I admit that in principle that need not be true. If you store pointers in int's, you'll lose. But people have learned enough about portable programming that you don't see that in practice. At least not in programs intended to be used with 16 bit ints. When people need a generic pointer, they have enough sense to use char * rather than int. The real issue is whether it's worth the time to produce a large model Minix compiler, and whether it's worth the disk space to have two versions of the libraries. I'm willing to listen to the argument that it's not. But to consider it wrong for a compiler to compile code that uses the target architecture seems strange, indeed.