Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.3 alpha 4/15/85; site seismo.UUCP Path: utzoo!linus!philabs!cmcl2!seismo!mo From: mo@seismo.UUCP (Mike O'Dell) Newsgroups: net.micro Subject: *86 crocks Message-ID: <2114@seismo.UUCP> Date: Sat, 27-Apr-85 09:48:07 EDT Article-I.D.: seismo.2114 Posted: Sat Apr 27 09:48:07 1985 Date-Received: Sun, 28-Apr-85 07:39:09 EDT Organization: Center for Seismic Studies, Arlington, VA Lines: 51 As a peson who has spent almost a year trying to get quite-well-written C code running on an 8086, I cannot let the defense of this abomination go by unchallenged. I have seen 386 stuff and it is like the 286, but it has a mode where it isn't like a 286 and does have larger addresses. But as for the 8086, 8186 and 8286, THEY ARE ALL POORLY-DESIGNED 16-BIT MINICOMPUTERS WITH PRETENTIOUS INDEX REGISTERS, and one of the worst hosts a C compiler writer could be faced with. The miserable quality of the existing *86 C compilers atests to this fact. Only now are compilers coming availble that truly do the Large address model correctly (in spite of vendors strenuous claims to the contrary). But the dead-giveaway is the fact you need "address models" at all!!!!! Our program runs perfectly well in 650-700K bytes of memory on 68K systems without batting an eye. It handles LARGE objects, ie, bigger than 64K bytes, and it does LOTS of pointer arithmetic, including pointer subtractions. To get it to run on a *86 in the max memory available on an IBM PC-XT, we had to chop out much dynamic debugging code we would have liked to have left in, and battle tooth and nail with an addressing architecture which is very much like the IBM System 370, but in reality much worse because of the paucity of registers available for doing anything. Many of our problems stem from inadequacies of the compilers available when we started, but the reason the compilers were poor is not because the people doing them weren't smart; it was because the machine they were dealing with are awful. To give ground where deserved, running an 8086 in split-I/D mode with the code and data limited to 64K it is a fine competitor with most of the LSI-11/RL01 systems I have used. But the last time I checked my watch, we are in the last fifth of the Twentieth century and the 11/70 stopped being remotely state of the art well over 6 years ago. As for the 286 somehow being a serious 68K competitor from an architecture standpoint, that is pure malarky. It does have an on-chip mmu, which is attractive from the chip-count viewpoint, but the 286 running in real 286 mode is harder to deal with than the 8086 from an addressing viewpoint. Face it - the *86 is a 64Kbyte segmented machine with all the liabilities which come with such an architecture, while the 68K is a flat-address space machine with 8 more address bits where they count - in instructions, not MMU registers! The address reach on the 68K is maximal and uniform. On the 286, it is disjoing and minimal. In the particular case of C, Large, Flat, and Uniform is Beautify - segmentation is pure death. Finally, the First Virtual Truth of Marketing states that: "If they are buying it, it must be good." A diehard fan of the 8086, -Mike O'Dell PS - the split register set in the 68K doesn't win any awards from code generator writers, either.