On Thu, 2016-07-21 at 17:20 +0200, Liam Proven wrote: > On 21 July 2016 at 16:45, Lars Brinkhoff <l...@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". p.