On Mon, Sep 12, 2016 at 01:40:56PM -0700, Chris Hanson wrote: > On Sep 12, 2016, at 2:21 AM, Peter Corlett <ab...@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.