| Red Hat Documentation |
|
VAX dependent features See the following documentation for the VAX architecture’s features and options for the assembler. The
VAX version of as
accepts any of the following options, gives a warning message that the
option was ignored and proceeds. These options are for compatibility with
scripts designed for other people’s assemblers.
-S (Symbol Table) -T (Token Trace)
-d (Displacement size for JUMPs)
-V (Virtualize Interpass Temporary File)
-J (JUMPify Longer Branches)
-t (Temporary File Directory)
The VAX version of the assembler accepts two options when compiled for VMS. They are -h, and -+. The -h option prevents as from modifying the symbol-table entries for symbols that contain lowercase characters (I think). The -+ option causes as to print warning messages if the FILENAME part of the object file, or any symbol name is larger than 31 characters. The -+ option also inserts some code following the _main symbol so that the object file is compatible with VAX-11 "C". Conversion of flonums to floating point is correct, and compatible with previous assemblers. Rounding is towards zero if the remainder is exactly half the least significant bit. D, F, G and H floating point formats are understood. Immediate floating literals (e.g., S‘$6.9) are rendered correctly. Again, rounding is towards zero in the boundary case. The .float directive produces f format numbers. The .double directive produces d format numbers. The
VAX version of the assembler supports four directives for generating VAX
floating point constants. They are described in the following.
.ffloat
.gfloat
.hfloat
All DEC mnemonics are supported. Beware that case... instructions have exactly 3 operands. The dispatch table that follows the case... instruction should be made with .word statements. As far as we know, this is compatible with all Unix assemblers. Certain pseudo opcodes are permitted. They are for branch instructions. They expand to the shortest branch instruction that reaches the target. Generally
these mnemonics are made by substituting j
for b
at the start of a DEC mnemonic. This feature is included both for compatibility
and to help compilers. If you do not need this feature, avoid these opcodes.
What follows are the mnemonics, and the code into which they can expand.
(byte displacement)
jbr
brb... (word displacement) brw... (long displacement) jmp... jCOND
bCOND... (word displacement) bNOTCOND foo ; brw...; foo: (long displacement) bNOTCOND foo ; jmp...; foo: jacbX
OPCODE... (long displacement) OPCODE..., foo ; brb bar ; foo: jmp... ; bar: jaobYYY
jsobZZZ
OPCODE... (word displacement) OPCODE... , foo ; brb bar ; foo: brw destination ; bar: (long displacement) OPCODE..., foo ; brb bar ; foo: jmp destination ; bar: aobleq
OPCODE... (word displacement) OPCODE... , foo ; brb bar ; foo: brw destination ; bar: (long displacement) OPCODE..., foo ; brb bar ; foo: jmp destination ; bar: The immediate character is $ for Unix compatibility, not # as DEC writes it. The indirect character is * for Unix compatibility, not @ as DEC writes it. The displacement sizing character is ‘ (an accent grave) for Unix compatibility, not ˆ (a circumflex) as DEC writes it. The letter preceding ‘ may have either case. G is not understood, but all other letters (b, i, l, s, w) are understood. Register names understood are r0 r1 r2...r15 ap fp sp pc. Upper and lower case letters are equivalent. For instance, tstb *w‘$4(r5). Any expression is permitted in an operand. Operands are comma separated. VAX bit fields can not be assembled with as. Someone can add the required code if they really need it. |
|
© 2001 Red Hat, Inc. All rights reserved. About Red Hat : Legal statement : Privacy statement : Y2K statement : Contact Red Hat |