pb at pbcl.net
Thu Jul 21 17:36:58 CDT 2016
On Thu, 2016-07-21 at 17:20 +0200, Liam Proven wrote:
> On 21 July 2016 at 16:45, Lars Brinkhoff <lars at nocrew.org> wrote:
> > I have both the ARM and the 6502 instruction sets very fresh in my mind
> > right now. I don't see how the ARM could be a 6502 knockoff, even
> > without that sauce. Care to explain in more detail?
> This is a matter of historical record, AIUI.
It's certainly an often-repeated claim but I don't think that
necessarily makes it true. Clearly yes, Acorn had done a lot of work
with the 6502 previously, the original ARM architects were obviously
familiar with its instruction set, and there are some similarities in
terminology and conventional assembler mnemonics/syntax between the two.
But in terms of the actual structure of the instruction set it's hard to
see all that much that they really have in common.
6502 is a three-register machine with variable-length instructions that
require varying numbers of cycles to complete, complex and not entirely
orthogonal addressing modes (indirect addressing works differently for X
and Y), arithmetic instructions that operate on memory directly (INC
&1234), global flags which change the behaviour of instructions
("decimal" mode), dedicated instructions for stack manipulation, no
direct ALU access to the program counter or stack pointer, and no
predication other than on branches.
ARM was, in its original incarnation at least, a 16-register machine (of
which 2 registers are architecturally special) with fixed-length
instructions, almost-entirely orthogonal addressing modes, memory access
restricted to dedicated load/store instructions, support for direct ALU
operation on the program counter (albeit with slightly weird semantics
due to early implementation decisions), no specific
architecturally-defined stack, and explicit predication on every
instruction, again orthogonal to the operation itself (even to the point
of reserving 268 million of the possible instruction patterns for "never
execute" instructions that were effectively NOPs).
So it's certainly not a trivial derivative or imitation of the 6502 in
the way that "knockoff" might imply, and even without the predication
the architectures would still be quite different. Obviously though the
ARM architecture has evolved somewhat over the past three decades and
not all the points above are still true of the latest versions.
FWIW there are now at least a few 32-bit CPU designs floating around
that really are stretched 6502s, usually including binary compatibility
with old 8-bit programs, and could legitimately be called "knock-offs".
More information about the cctech