On Mon, Sep 12, 2016 at 01:40:56PM -0700, Chris Hanson wrote:
On Sep 12, 2016, at 2:21 AM, Peter Corlett <abuse
at cabal.org.uk> wrote:
[...]
The 68020
onwards made the CPU fully 32 bit, although various bits of legacy
16 bit cruft remained for compatibility.
No, the 68000 was a 32-bit CPU, as
defined by the register width and
programming model. The fact that it was implemented with a 16-bit ALU and had
a 16-bit data path to memory is immaterial.
By that logic, the Z80 is a 16 bit processor because ADC HL, BC and the like
exist. It even has a 4 bit ALU and passes data through twice, but this is an
invisible implementation detail and it's generally considered to be an 8 bit
CPU. Likewise, the existence of zmm0-zmm31 registers don't mean that
contemporary x86 is 512 bit.
The essential 16 bitness of the 68000 pokes through in a lot of places despite
the register file giving the illusion of 32 bitness. Instructions are 16 bit
aligned. The status register is 16 bits. There are no true 32 bit multiply or
divide instructions. Shift/rotate instructions to memory can only be used on 16
bit quantities. MOVEP exists.