V1/man/man1/as.1
11/3/71 AS (I)
NAME as -- assembler
SYNOPSIS as name1 . . .
DESCRIPTION as assembles the concatenation of name1, .... as is based on
the DEC--provided assembler PAL--11R [references], although it
was coded locally. Therefore, only the differences will be
recorded.
Character changes are:
for use
@ *
# $
; /
In as, the character ";" is a logical new line; several
operations may appear on one line if separated by ";".
Several new expression operators have been provided:
\> right shift (logical)
\< left shift
* multiplication
\/ division
% remainder (no longer means "register")
! one's complement
[] parentheses for grouping
^ result has value of left, type of right
For example location 0 (relocatable) can be written "0^.";
another way to denote register 2 is "2^r0"
All of the preceding operators are binary; if a left operand
is missing, it is taken to be 0. The ! operator adds its left
operand to the one's complement of its right operand.
There is a conditional assembly operation code different from
that of PAL-11R (whose conditionals are not provided):
.if expression
...
.end if
If the expression evaluates to non-zero the section of code
between the ".if" and the .endif is assembled; otherwise it
is ignored. ".if" s may be nested.
Temporary labels like those introduced by Knuth [reference]
may be employed. A temporary label is defined as follows:
11/3/71 AS (I)
n:
where n is a digit 0 ,.. 9. Symbols of the form "nf" refer to
the first label n: following the use of the symbol; those of
the form nb refer to the last "n:". The same n may be used
many times. Labels of this form are less taxing both on the
imagination of the programmer and on the symbol table space
of the assembler.
The PAL-11R opcodes ".eot" and ".end" are redundant and are
omitted.
The symbols
r0 ... r5
sp
pc
ac
mq
div
mul
lsh
ash
nor
csw
are redefined with appropriate values. The symbol csw refers
to the console switches. ".." is the relocation constant and
is added to each relocatable symbol; normally it is 40000(8);
it may be changed to assemble a section of code at a location
different from that in which it will be executed.
It is illegal to assign a value to "."less than its current
value.
The new opcode "sys" is used to specify system calls. Names
for system calls are predefined. See the section on system
calls for their names.
Strings of characters may be assembled in a way more
convenient than PAL-11's ".ascii" operation (which is,
therefore, omitted). Strings are included between the string
quotes '<' and '>' :
<here is a string>
Escape sequences exist to enter non graphic and other
difficult characters. These sequences are also effective in
single and double character constants introduced by single
(') and double (") quotes respectively.
11/3/71 AS (I)
use for
\n newline (012)
\0 NULL (000)
\> >
\t TAB (011)
\\ \
The binary output of the assembler is placed on the file
a.out in the current directory. a.out also contains the
symbol table from the assembly and relocation bits. The
output of the assembler is executable immediately if the
assembly was error--free and if there were no unresolved
external references. The link editor ld may be used to
combine several assembly outputs and resolve global symbols.
The multiple location counter feature of PALIIR is not
supported.
The assembler does not produce a listing of the source
program. This is not a serious drawback; the debugger db
discussed below is sufficiently powerful to render a printed
octal translation of the source unnecessary.
FILES /etc/as2 pass 2 of the assembler
a.tmpl temporary
a.tmp2 temporary
a.tmp3 temporary
a.out object
SEE ALSO ld, nm, sh, un, db, a.out (format of output)
DIAGNOSTICS When an input file cannot be read, its name followed by a
question mark is typed and assembly ceases.
When syntactic or semantic errors occur, a single--character
diagnostic is typed out together with the line number and the
file name in which it occurred. Errors in pass I cause
cancellation of pass 2. The possible errors are:
) parentheses error ] parentheses error
* Indirection ("*") used illegally
A error in Address
B Branch instruction has too remote an address
E error in Expression
F error in local ( or "b") type symbol
G Garbage (unknown) character
M Multiply defined symbol as label
0 Odd---- word quantity assembled at odd
11/3/71 AS (I)
address
P Phase error " .." different in pass 2 from pass 1
value
R Relocation error
U Undefined symbol
X syntaX error
BUGS Symbol table overflow is not checked.
OWNER dmr