Subject: Objdump output question
To: None <port-vax@NetBSD.org>
From: Blaz Antonic <blaz.antonic@siol.net>
List: port-vax
Date: 02/09/2004 21:19:33
Hello,

I am looking at objdump output of VS 4k60 system ROM. Since i'm
unfamiliar with the types of operands and Vax Architecture Handbook
doesn't help with these i washoping somebody could clarify few issues
for me :-) 

What do *, $ and lack of either of those mean in front of an operand ? I
assume they are absolute memory address of value (*), direct operand
value ($) and i don't know what blank (no character) is supposed to be,
except with branch instructions where it is obviously PC offset for
branch instruction. Example of such a puzzling instruction would be
moval 0x000000ff, *0x10000000. Is this a relative address of first
operand and absolute address of second then ?

I'm also puzzled by the lack of register name at many mtpr/mfpr
instructions - examples would be mtpr $0x0, $0x25. Are some registers
referred to in ways other than r0, r1, r2, etc. or what ? What woudl
abovemnetioned example of instruction do anyway ?

(r1) seems to be the value contained at address pointed to by register
r1, as in index addressing, is that correct ? If that is correct 5(r1)
would be interpreted as "address of data pointed to by r1 + 5" ? Index 5
is the number of operand-sized elements, right ? 4 for long, 2 for word,
1 for byte, etc. ?

What is *5(r1) then ? 

This covers almost all the cases i have found so far, except for nice
complicated stuff like movab 8(r9)[r1],r0 - what the heck is first
operand here ?

I need a decent book on Vax assembly, something that is compatible with
objdump output :(

Blaz Antonic