Yep, the distance, but not as a displacement. Having a struct larger
than 2G? Quite uncommon.
That's not the only use of displacement addressing mode. I've seen it
used to refer to a run-time offset from a link-time constant address,
so that (for example)
extern char foo[];
...
j = foo[i]
(with i in R0 and j in R1) turns into something like
MOVB foo(R0), R1
The major reason I'd want a 64-bit displacement at the moment is
orthogonality. I see no immediate practical use for it, but I am not
at all sure there won't be one. And the VAX is all about orthogonality
anyway. :-)
However, at first blush, we don't have even one spare addressing mode,
much less the two I'd want, for that.
But, on looking over the list...I'd forgotten about the short-literal
modes. Could VAX64 maybe steal two of the short-literal modes for
64-bit displacements? I don't know the statistics for constants, but I
do suspect that the difference between 32 short-literal values and 64
short-literal values is well into the "diminishing returns" range.
[...AND...]
In general, I think we're in furious agreement here. But...
Well, c = a & b; is the most common, can cannot be reduced...
Can it not? In my experience, in most such cases at least one of the
operands is a compile-time constant.
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse%rodents-montreal.org@localhost
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B