Next: VAX-float, Up: Vax-Dependent

#### 9.38.1 VAX Command-Line Options

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.

`-D (Debug)`
`-S (Symbol Table)`
`-T (Token Trace)`
  These are obsolete options used to debug old assemblers.

`-d (Displacement size for JUMPs)`
  This option expects a number following the ‘`-d`’. Like options that expect filenames, the number may immediately follow the ‘`-d`’ (old standard) or constitute the whole of the command line argument that follows ‘`-d`’ (gnu standard).

`-V (Virtualize Interpass Temporary File)`
  Some other assemblers use a temporary file. This option commanded them to keep the information in active memory rather than in a disk file. `as` always does this, so this option is redundant.

`-J (JUMPify Longer Branches)`
  Many 32-bit computers permit a variety of branch instructions to do the same job. Some of these instructions are short (and fast) but have a limited range; others are long (and slow) but can branch anywhere in virtual memory. Often there are 3 flavors of branch: short, medium and long. Some other assemblers would emit short and medium branches, unless told by this option to emit short and long branches.

`-t (Temporary File Directory)`
  Some other assemblers may use a temporary file, and this option takes a filename being the directory to site the temporary file. Since `as` does not use a temporary disk file, this option makes no difference. ‘`-t`’ needs exactly one filename.

The Vax version of the assembler accepts additional options when compiled for VMS:

‘`-h n`’
  External symbol or section (used for global variables) names are not case sensitive on VAX/VMS and always mapped to upper case. This is contrary to the C language definition which explicitly distinguishes upper and lower case. To implement a standard conforming C compiler, names must be changed (mapped) to preserve the case information. The default mapping is to convert all lower case characters to uppercase and adding an underscore followed by a 6 digit hex value, representing a 24 digit binary value. The one digits in the binary value represent which characters are uppercase in the original symbol name.

  The ‘`-h n`’ option determines how we map names. This takes several values. No ‘`-h`’ switch at all allows case hacking as described above. A value of zero (‘`-h0`’) implies names should be upper case, and inhibits the case hack. A value of 2 (‘`-h2`’) implies names should be all lower case, with no case hack. A value of 3 (‘`-h3`’) implies that case should be preserved. The value 1 is unused. The `-H` option directs `as` to display every mapped symbol during assembly.

  Symbols whose names include a dollar sign ‘`$`’ are exceptions to the general name mapping. These symbols are normally only used to reference VMS library names. Such symbols are always mapped to upper case.

‘`-+`’
  The ‘`-+`’ option causes `as` to truncate any symbol name larger than 31 characters. The ‘`-+`’ option also prevents some code following the ‘`_main`’ symbol normally added to make the object file compatible with Vax-11 "C".

‘`-1`’
  This option is ignored for backward compatibility with `as` version 1.x.

‘`-H`’
  The ‘`-H`’ option causes `as` to print every symbol which was changed by case mapping.