On Aug 23, 2021, at 8:38 PM, Tom Stepleton via cctalk
<cctalk at classiccmp.org> wrote:
Hello,
For the sake of illustration to folks who are not necessarily used to
thinking about what computers do at the machine code level, I'm interested
in collecting examples of single instructions for any CPU architecture that
are unusually prolific in one way or another.
...
Although I don't know it well, I suspect VAX will place well in one way or
another.
Thinking some more about addressing modes, there are a couple of examples that are, if not
extra complex, at least extra unusual.
The strangest addressing mode I ever saw is found on the Electrologica X1. It has the
familiar indexed addressing mode called "B" mode, which uses the contents of B1
plus the address field of the instruction as the effective address. So far so good.
But then there is C mode, which is like B mode except that the computed effective address
is written back into the address field of the instruction. It's used very rarely; one
example is in the equivalent of "bzero" in the ALGOL compiler run-time code.
With this mode, the address field is set to buffer address - n and the B register to n,
for a stride of n. You can find a short example here:
http://helloworldcollection.de/#Assembler%C2%A0(X1)
Its successor, the X8, drops this addressing mode, but it has some interesting quirks as
well. There is a stack addressing mode, related to the indexed mode. In stack mode, if
the displacement is negative the stack pointer is decremented by one, if positive it is
incremented. So push and pop are not two modes, but happen depending on the specified
offset. "MC[0]=A" pushes A onto the stack; "A=MC[-1]" pops that
value.
paul