elwell@osu-eddie.UUCP (Clayton M. Elwell) (05/31/85)
I have done extensive programming in C and assembly language on both the 8086 family and the 68000 family. I have found that in all respects, the 68000 is much easier to use and allows me to write faster code. Speed is important to me, because a lot of what I write is graphics and screen handling. (Note: I will use '8086' and '68000' in a generic fashion, i.e. referring to the entire families in question) o Register complement Although occasionally the 68K address/data register distinction can be annoying, it's nothing compared to the hassle of the 8086. ``General purpose registers? Why would we want any of those?'' ``Put a full address into a register? Nobody ever does that!'' Argh. Registers have one big advantage for both assembly language and compiled code: SPEED. It's also annoying to have to push/pop/exchange/etc. just to move things around so you can execute a SHIFT instruction (to pick an example out of a hat). Orthogonality isn't just for the benefit of the hardware designers... o Address space and treatment I realize this is a religious issue, but I'll risk it anyway. First, real programs DO use more than 64K of code and data. Some even want it all accessible at once. Take text editors, formatters, spreadsheets, graphics systems, compilers [you know, the stuff no one ever actually uses :-)]. I'm sorry, segment registers do not constitute an 'advanced segmented architecture'. If you want position-independent code, supply a PC-relative addressing mode. If you want memory management, use a real MMU. An smart bank switch (oops, I mean segment register) is only useful at all when you want to use 8080/Z80 style code at any offset in your block of memory. I give the 8086 one thing: It is far better than a Z80, and makes it real easy to port CP/M software without thinking to hard. I don't consider this to be useful anymore. o Memory speed and resource usage This one is a tie as far as I can tell. Both use a 4-clock memory cycle, both have prefetch queues, the bigger ones (286 & 020) both have a cache (although the 68020 has a 3-clock memory cycle as I understand it (though I may be wrong), and the 286 has a 4-clock cycle (from the 286 hardware reference manual crouching near my left elbow)). From a pure bus speed standpoint, it seems to be a tie. On the whole, I have found it a much less stressful task to write for the 68000. When using C, the compiler can generate good enough code that I don't have to resort to assembly language as often, and when I do, it's MUCH more straightforward. Programming should not always be an adventure in processor peculiarities. -- Clayton Elwell