Initial revision
authorkeie <none@none>
Tue, 25 Sep 1984 16:33:15 +0000 (16:33 +0000)
committerkeie <none@none>
Tue, 25 Sep 1984 16:33:15 +0000 (16:33 +0000)
man/ns_as.1 [new file with mode: 0644]

diff --git a/man/ns_as.1 b/man/ns_as.1
new file mode 100644 (file)
index 0000000..20c31d1
--- /dev/null
@@ -0,0 +1,148 @@
+.TH NS_ASS VI
+.ad
+.SH NAME
+ns_as \- National Semiconductor 16032 assembler/linker
+.SH SYNOPSIS
+\&..../lib/ns/as [options] argument ...
+.SH DESCRIPTION
+The assembler for the National Semiconductor 16032 is based
+on the universal assembler \fIuni_ass\fP(VI).
+The mnemonics for the instructions are taken from the NS-16000
+Programmers Reference Manual.
+The syntax of the instruction operands is similar to the syntax used
+in that manual,
+although the meaning is sometimes quite different.
+The cross assembler issued by National Semiconductor
+associates a type (sb,..) with each symbol
+and automatically generates sb offset mode for symbols of type sb.
+This assembler does not record the types,
+each symbol simply produces an untyped value.
+.sp 1
+The possible operands are:
+.IP "general registers
+These are called r0, r1, r2, r3, r4, r5, r6 and r7.
+The symbol REG is used to indicate use of any of these 8 registers
+in other operands.
+.IP "floating point registers
+These are called f0, f1, f2, f3, f4, f5, f6 and f7.
+.IP "dedicated registers
+All types of dedicated registers can be used with the appropriate instructions.
+Examples: sb, fp, intbase, ptb1.
+.IP expr(REG)
+register relative
+.IP expr(fp)
+frame pointer relative
+.IP expr(sb)
+static base relative
+.IP expr(sp)
+stack pointer relative
+.IP expr(pc)
+program counter relative,
+the expression indicates a location in memory from which the current value
+of '.' is subtracted by the assembler.
+E.g. "movw label(pc),r0; label: .word ..." moves the contents of the word
+at \fIlabel\fP to r0.
+.IP expr(expr(fb))
+.IP expr(expr(sb))
+.IP expr(expr(sp))
+memory relative
+.IP @expr
+absolute
+.IP external(expr)+expr
+The external mode is provided, although this assembler
+does not build a module table.
+.IP tos
+top of stack.
+.PD 0
+.sp 1
+.PP
+Usage of the scaled index operands is allowed.
+.br
+The convention used to indicate offset length by appending :B, :W or :D
+to offsets is not implemented.
+The assembler tries to find out the minimal size needed for any constant
+in an operand of the instruction placed in the text segment.
+Offsets in instructions outside '.text' are always four bytes.
+.PP
+All special operands, e.g. register list, configuration list, have
+the same format as in the Programmers Reference Manual.
+.PP
+Whenever possible the assembler automatically uses the short(quick) opcodes for
+jsr(jsb), jump(br), add(addq), cmp(cmpq) and mov(movq).
+.SH BUGS
+The data types floating and packed-decimal are not supported.
+.br
+Initialization of floating-point numbers is not possible.
+.br
+The mnemonics of the slave processor instructions are poorly documented,
+the format of the NS-16032S-6 data sheet is used.
+.br
+The documentation gave contradictory information on the format
+of a few instructions.
+.IP -
+Three different schemes are presented for the encoding
+of the last operand of the block instructions.
+.IP -
+Two different values are specified for
+the encoding of the msr register in smr and lmr instructions.
+.IP -
+Two different possibilities are given for the encoding of
+the instructions movsu and movus.
+.SH EXAMPLE
+.nf
+.ta 12 20 28 36
+
+00000000 0E0B02                setcfg  [ m ]
+               label:
+00000003 EC3E          lprb    psr,r7
+00000005 2D37          sprw    intbase,r6
+
+00000007 EA7C          br      label
+
+00000009 02803B                bsr     rout1
+0000000C 228044                cxp     rout1
+0000000F 1204          ret     4
+00000011 4204          rett    4
+00000013 328044                rxp     rout1
+
+00000016 1E0300                rdval   r0
+00000019 163028                scsr    r5
+
+0000001C 3F32          shid    r6
+0000001E 7F0B          bispsrd r1
+00000020 7C17          caseb   r2
+00000022 7FA806                cxpd    @6
+
+00000025 021F          jsr     @rout1
+
+00000027 BEB529                absf    f5,f6
+0000002A EE0538                movusw  r7,r0
+0000002D 3E40A101              movbl   1,f5
+00000031 CE440003              cmpmb   r0,r1,4
+
+00000035 CE4F0800              extsd   r1,r1,0,1
+00000039 62A0          save    [ r5, r7 ]
+0000003B 1E0B00                lmr     bpr0,r0
+
+0000003E 0E8C04                skpst   w
+00000041 CC0042                acbb    1,r0,label
+00000044 B2            rout1:  wait
+00000045 7F950C0B              adjspd  11(12(sb))
+00000049 7CA50D                adjspb  13
+0000004C 7DB50102              adjspw  external(1)+2
+00000050 7FBD          adjspd  tos
+
+00000052 7CED860807            adjspb  7(8(fp))[r6:w]
+
+.fi
+.SH "SEE ALSO"
+uni_ass(VI)
+.br
+NS 16000 Programmers Reference Manual. Publ. no. 420306565-001PB
+.br
+NS16032S-6, NS16032S-4 High Performance Microprocessors, november 1982
+.br
+publ. no. 420306619-002A.
+.PD 0
+.SH AUTHOR
+Ed Keizer, Vrije Universiteit