It was thus said that the Great Iggy Drougge once stated:
Tony Duell skrev:
There aren't many microprocessors without an
accumulator. But things like
the PDP11 don't have one. I can add R1 to R3, or one memory location to
another, or... No restriction on one of the operands being in a special
registers.
I take it you're no big fan of load/store designs?
I can't speak for Tony, but for me it depends upon the chip---both the
6809 and 6502 are load/store, but I vastly prefer the 6809 to the 6502. I'm
ambivilent towards the 8080/Z80, not having worked with it enough to form an
opinion.
Eh? Yes, there
are some special-cases on the 6809 (MUL, for example). But
the 6502 has many more. Heck, on the 6502 you have to use the X register
for one kind of indrect and indexed addressing and the Y register for the
other form (on the 6809 you can do any addressing mode with X or Y (or
with U or S for that matter). On the 6809 you can transfer values between
any 2 registers of the same size. On the 6502 you can't even transfer
between X and Y without destroying the accumulator contents (IIRC).
I was specifically thinking of all the different registers and the way you
combine them. But I've not got enough experience to make any insightful
comparisons.
It doesn't really have that many registers (say, compared to the 8086).
There are two 8 bit accumulators, A and B (which can be used as a single
16-bit register for certain operations), two 16-bit index registers, X and
Y, and two 16-bit stack registers, S and U, which can also be used as index
registers (and S is used to store return addresses and registers upon an
interrupt). Then there is CC (condition codes) and DP (direct page, which
can be pretty much ignored) and that's it.
The accumulators are used to load, process, and store data, and for the
most part, can be used interchangably. The index registers point to data,
and the stack registers are there to temporarily save and restore data
across subroutine calls (although U can be used as an extra index register)
and again, the index registers can for the most part, be used
interchangably. The two stack registers can't, but that's because S is used
by the CPU and U is meant for the user (but other than that, they work the
same).
It's a fun instruction set to use.
-spc (The 8086 however, is interesting ... 8-)