Mouse, I've build your disass but since I know
nothing about VAX
Assembly lanuage (huh? What's that cmp3 and cmp5 ... what powerful
machine instructions) im struggeling pretty much in the dark here..
That's true, a disassembler isn't going to be much use unless you have
some idea of the assembly language in question.
And, yes, VAX assembly language is a relatively powerful one. I don't
have a softcopy VAX assembly-langauge reference to point you at, but I
have a dead-tree copy of the architecture reference manual, and the
parts of it you're likely to care about are in my head as well, so I
can answer individual questions easily enough.
CMPC3 and CMPC5 aren't the worst of it. There's a lot of stuff that's
always looked to me like COBOL support - instructions that, for
example, do packed-decimal arithmetic. EDITPC is perhaps the most
complex single instruction - it's an overstatement to call it "printf
in an instruction", but not by all that much; CVTLP and EDITPC, with
suitable operands of course, is the guts of printf's %d format.
Originally this stuff was in microcode. But in more recent VAXen have
taken to omitting them. Some of them (eg, the KA630) implement them as
traps through the SCB, but not normal "unimplemented instruction"
traps; I think (the memory is fuzzy) that the KA630 traps oddly: it not
only uses a different vector, it runs in the mode of the trapping
instruction rather than on the interrupt stack. AIUI, This is so that
the kernel can contain a `macrocoded' implementation of the instruction
without needing to simulate all the operand fetch/store steps (which
are relatively complex on the VAX) to be sure to avoid being a
memory-access security hole.
I think CMPC3, and maybe CMPC5, are among the instructions done in
hardware/microcode on even the more recent hardware, so they're usable
from bootblock code.
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse at
rodents-montreal.org
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B