In reply to David's request for some info on Motorola vs Intel, here are my
two cents on the subject: about 5 years ago, it was looking to me like Motorolawas the better choice. The 386 was out but 286 was still the dominant CPU in
PCs at the time and making any comparison such as 68000 vs 286, the 68000
has a flat address space, supports 32 bit data types directly, etc and in my
own experience, it seems like a 68000 is faster much of the time than a 286 of
same clock speed. Those published benchmarks are not generally a real great
way of finding out which is "better" of two fairly significantly different
architectures. Which is to say, a mac fan can find a benchmark saying 680x0
is faster and same with IBM fans and Intel. Now, Intel 32 bit architecture has
established itself and the 486 is available in clockspeeds DX-50, and DX2-66 and
the fastest I have heard 68040s clocking is 40MHz. Since both 486 and 68040
claim around 1.3 cycles per instruction and both accomplish about the same
computational work per instruction, clockspeed seems like a good deciding
characteristic. Further, I have not priced macs extensively but 68030-16s and
68030-20s are a few grand and the top of the line 68040s seem to be around
5 to 8 grand. Now, a DX2-66 with local bus video and harddrive controller is
around $3,000 typically. So not only are Intel computers currently the fastest
but they are the fastest per dollar too.
At this point, I would mention a few things about the architectures of an
Intel 486 compared to a 68040. 486 with a little effort can be forced out of
its 8086 real mode (a common criticism among mac people is that IBMs are
limited by standards set down in 1981 etc) and into protected in a default
32 bit code segment so that you have flat address space and 32 bit operands.
Further, with segmentation, you can have complete relocatability of code and
data. On Motorola, to have data relocatability you would use program counter
relative addressing modes, some of which do not exist on earlier 680x0 chips
and all of which take extra instruction word(s) to encode. Intel sacrifices
no floating point instructions and no memory protection/virtual memory
facilities in integrating those funcitons onto the 486. 68040 gives up some
instructions supported by the 68882 floating point processor and the 68851
memory management unit. The Intel programming model is a small specialized
register set with instructions specifically for memory block moves. The 16
bit addressing modes are not terribly orthogonal but the 32 bit modes are,
with scaling of register indices available. The Intel instruction set is
encoded in a byte oriented fashion and is very compact, supporting sign
extended byte addressing to save space and data objects take up only as much
memory space as they need, with word and dword alignment being transparent
to the programmer.
Motorola on the other hand, on the early chips required word alignment and
80 bit mantissa real numbers are stored as 96 bit with 16 do nothing bits in
order to maintain 32 bit alignment in memory (Intel stores these as tbytes).
In Motorola's favor, the 68000 series has supported 32 bit addressing and
data from the beginning so current and future versions of the chip do not
have complicated architectures to support different programming models on
the same chip. The 68882 allows direct access to floating point registers
where Intel implements its 80x87 register set as a floating stack. This, I
suppose, makes it easy to evaluate postfix expressions but you must maintain
stack integrity or you will get NaNs or exception crashes. The Motorola
programming model is 8 general purpose address and data registers and most
of the time, what you can do with one, you can do with another. Everything
is oriented towards 32 bit although it does support byte data types and there
are sign extended word addressing modes to save space. In general though,
an 80x86 program to do something will take up less space than the Motorola
counterpart. Motorola doesn't support specialized instructions like string
moves on Intel, in fact, there isn't even a push or pop instruction. You
use an addressing mode and move to or from (a7) in order to push and pop.
I am not saying this is bad, it is just a different philosophy. ON intel,
you generally have a way to do something and that's how you do it. On
Motorola, you have the basic tools to do lots of stuff and you code what
you want to do (string moves, pushes and pops, etc) with instructions and
addressing modes that can accomplish a bunch of other stuff as well.
I think arguing Motorola vs Intel you will end up concluding it is a matter
of preferrence. I have programmed both and can operate comfortably in both,
appreciating the advantages that one has over the other. So the choice of
which to use, to me, is a question of which is faster, which at this point