A favourite game used to be to come up with the
longest possible
legal VAX instruction. I forget the exact answer but it was in the
region of 54 bytes. That's actual I-stream decoded instruction
bytes, tables for MOVxxx or whatever do not count.
Yeah, with CASEx you can create an "instruction" that's as long as you
want (within the limitations of the VAX, of course, such as 32-bitness
and how it can't be longer than 1G or 3G, depending on whether an
instruction can cross address-space boundaries).
I think the solution is to pick something like ADDP6
and make each of
the arguemnts as long as possible (which is five or six bytes or so).
I don't see how to get longer than six bytes (xxxxxxx(Rx)[Rx]) there,
which still gives you only 37 bytes. But if you use EMODH (a two-byte
opcode) with two 16-byte immediate operands, you can get 2+17+6+17+6+6
or, yes, 54 - your memory seems accurate. :)
The other game was to come up with a scenario for the
most
page-faults possible while executing a single instruction.
Hmmm...MOVTC: two for the instruction itself, two per operand while
fetching operands indirection, two for each length, one for the fill
char, 513 for the from data, 513 for the to data, two for the table
data, two each for the system pages holding the PTEs mapping the
instruction, each operand indirection, the from data, the to data, the
table data, and one for the fill char: total 1066. Did I miss
anything?
Unless you count interrupts and traps as being "while executing" the
interrupted or trapping instruction, but that is uninteresting.
/~\ The ASCII der Mouse
\ / Ribbon Campaign
X Against HTML mouse at rodents.montreal.qc.ca
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B