Thank you all for making me feel young (something that happens less and less often). Jim Propp On Friday, March 16, 2018, Tom Karzes <karzes@sonic.net> wrote:
Well that makes a lot of sense! I always thought the arbitrarily deep levels of indirection were cool, but I wasn't sure how people actually used them in practice. I think BLISS-10 provided some level of support for the various PDP-10 addressing modes as well (which were dropped for DEC's releases of BLISS-16, BLISS-32, and I think even BLISS-36).
The PDP-6/PDP-10 architectures really were ahead of their time in a lot of ways. I thought it was cool the way the accumulators could also be treated as memory locations. I even heard a claim that one of the Lisp garbage collectors was coded to run in the accumulators for efficiency.
It seems to me that the main barriers to sticking with that architecture were the 36-bit word size, and the lack of byte addressability (not counting the very general "byte pointer" instructions). And of course DEC eventually abandoned the 36-bit processor line in favor of the VAX architecture.
Tom
rcs@xmission.com writes:
The PDP6 multi-level indirect addressing allowed one instruction to address a multi-dimensional array, with the coordinates taken from the accumulators (fast registers). The programmer created, for each dimension, a set of pointers into an array of the next higher dimension. These intermediate arrays are Margin Arrays. If the array indices are in accumulators A,B,C,D, and the array size is I*J*K*L, the fetch instruction would look like
MOVE X,@MARA(A) @ means indirect address
The margin arrays are
MARA: @MARB(B); @MARB+J(B); @MARB+2*J(B); ... ; @MARB+(I-1)*J(B)
MARB: @MARC(C); @MARC+K(C); ... ; @MARC+(I*J-1)*K(C)
MARC: ARR(D); ARR+L(D); ... ; ARR+(I*J*K-1)*L(D)
ARR: BLOCK(I*J*K*L) <--- the array data goes here
Of course people came up with hacks. I wrote a program to tabulate 5x5 magic squares, and used the fancy addressing to calculate sums of partial rows in the partially filled-in magic square, in a single instruction. I calculated the expression 65-(A+B+C) in one instruction, with the intermediate margin arrays pointing to overlapping areas in one-dimensional arrays.
Rich
------- Quoting Tom Karzes <karzes@sonic.net>:
If I recall correctly, the PDP-10 had a similar situation with indirect memory references. Pointers had an "indirect" bit, and if set, the indirection would continue for as long as the pointer chain had the indirect bit set.
Does anyone recall the details of how this worked? I assume the sequence could be interrupted and later resumed?
Tom
Bernie Cosell writes:
On 15 Mar 2018 at 17:13, Henry Baker wrote:
... On the PDP-1 (I know, more comments from the stone age) it did "infinite" levels of indirect, But: ...
_______________________________________________ math-fun mailing list math-fun@mailman.xmission.com https://mailman.xmission.com/cgi-bin/mailman/listinfo/math-fun