Annotation of researchv10dc/dist/man/v3/manx/as.1, revision 1.1

1.1     ! root        1: .pa 1
        !             2: .he '1/15/73''AS (I)'
        !             3: .ti 0
        !             4: NAME           as -- assembler
        !             5: .sp
        !             6: .ti 0
        !             7: SYNOPSIS       as__ [ -_ ] name918 ...
        !             8: .sp
        !             9: .ti 0
        !            10: DESCRIPTION    as__
        !            11: assembles the concatenation of name\d1\u, ....  as__
        !            12: is based on the DEC-provided assembler PAL-11R [1], although
        !            13: it was coded locally.
        !            14: Therefore, only the differences will be recorded.
        !            15: .sp
        !            16: If the optional first argument
        !            17: -_ is used,
        !            18: all undefined symbols in the assembly
        !            19: are treated as global.
        !            20: .sp
        !            21: Character changes are:
        !            22: .sp
        !            23:      for    use
        !            24:       @      *
        !            25:       #      $
        !            26:       ;      /
        !            27: .sp
        !            28: In as__, the character ";" is a logical new line; several operations
        !            29: may appear on one line if separated by ";".
        !            30: Several new expression operators have been provided:
        !            31: .sp
        !            32:      \\>     right shift (logical)
        !            33:      \\<     left shift
        !            34:      *      multiplication
        !            35:      \\/     division
        !            36: .nf
        !            37:      %      remainder (no longer means "register")
        !            38:      |      inclusive or
        !            39: .fi
        !            40:      !      one's complement
        !            41:      []     parentheses for grouping
        !            42: .nf
        !            43:      ^      result has value of left, type of right
        !            44: .sp
        !            45: .fi
        !            46: For example location 0 (relocatable) can be written "0^.";
        !            47: another way to denote register 2 is "2^r0".
        !            48: 
        !            49: All of the preceding operators are binary; if
        !            50: a left operand is missing, it is taken
        !            51: to be 0.
        !            52: The "!" operator adds its left operand to the one's
        !            53: complement of its right operand.
        !            54: 
        !            55: All operators evaluate left-to-right except for
        !            56: the effect of brackets; all operators have the
        !            57: same priority.
        !            58: 
        !            59: There is a conditional assembly operation code different
        !            60: from that of PAL-11R (whose conditionals are not provided):
        !            61: .sp
        !            62:      .if expression
        !            63:      ...
        !            64:      .endif
        !            65: .sp
        !            66: If the expression__________ evaluates to non-zero, the section of
        !            67: code between the ".if" and the ".endif" is assembled; otherwise
        !            68: it is ignored.  ".if"s may be nested.
        !            69: .sp
        !            70: Temporary labels like those introduced by Knuth [2] may
        !            71: be employed.
        !            72: A temporary label is defined as follows:
        !            73: .sp
        !            74:      n:
        !            75: .sp
        !            76: where n_ is a digit 0 ... 9.  Symbols of the form "n_f" refer to the
        !            77: first label "n_:" following the use of the symbol; those
        !            78: of the form "n_b" refer to the last "n_:".  The same "n_" may
        !            79: be used many times.
        !            80: Labels of this form are less taxing both on the
        !            81: imagination of the programmer and on the symbol table space
        !            82: of the assembler.
        !            83: .sp
        !            84: The PAL-11R opcodes ".word", ".eot" and ".end" are redundant and are omitted.
        !            85: .sp
        !            86: The symbols
        !            87: .sp
        !            88:      r0 ... r5
        !            89:      fr0 ... fr5 (floating-point registers)
        !            90:      sp
        !            91:      pc
        !            92:      ..
        !            93: .sp
        !            94: are predefined with appropriate values.
        !            95: ".." is the relocation constant and is added to
        !            96: each relocatable reference.
        !            97: On a PDP-11 with relocation hardware, its value is
        !            98: 0; on most systems without protection,
        !            99: its value is 40000(8).
        !           100: .sp
        !           101: The new opcode "sys" is used to specify system
        !           102: calls.
        !           103: Names for system calls are predefined.
        !           104: See section (II).
        !           105: .sp
        !           106: The opcodes "bes" (branch on error set)
        !           107: and "bec" (branch on error clear)
        !           108: are defined to test the error status bit
        !           109: set on return from system calls.
        !           110: .sp
        !           111: Strings of characters may be assembled in a way more
        !           112: convenient than PAL-11's ".ascii" operation (which is,
        !           113: therefore, omitted).  Strings are included between the
        !           114: string quotes "<" and ">":
        !           115: .sp
        !           116:      <here is a string>
        !           117: .sp
        !           118: Escape sequences exist to enter non graphic
        !           119: and other difficult characters.  These sequences are
        !           120: also effective in single and double character constants introduced
        !           121: by single (') and double (") quotes respectively.
        !           122: .sp
        !           123:      use___  for___
        !           124:      \\n   newline (012)
        !           125:      \\0   NULL (000)
        !           126:      \\>   >
        !           127:      \\t   TAB (011)
        !           128:      \\a   ACK (006)
        !           129:      \\r   CR (015)
        !           130:      \\p   ESC (033)
        !           131:      \\\\   \\ (134)
        !           132: .sp
        !           133: as__ provides a primitive segmentation facility.
        !           134: There are three segments: text____, data____ and
        !           135: bss___.
        !           136: The text segment is ordinarily used for
        !           137: code.  The data segment is provided
        !           138: for initialized but variable data.
        !           139: The bss segment cannot be initialized, but
        !           140: symbols may be defined to lie within this 
        !           141: segment.
        !           142: In the future, it is expected that the
        !           143: text segment will be write-protected and sharable.
        !           144: Assembly begins in the text segment.
        !           145: The pseudo-operations
        !           146: 
        !           147:        .text
        !           148:        .data
        !           149:        .bss
        !           150: 
        !           151: cause the assembler
        !           152: to switch to the text, data, or bss segment respectively.
        !           153: Segmentation is useful at present
        !           154: for two reasons:
        !           155: Non-initialized
        !           156: tables and variables, if placed
        !           157: in the bss segment, occupy no space in the
        !           158: output file.
        !           159: Also, alternative use of the
        !           160: text and data segments provides a primitive
        !           161: dual location-counter feature.
        !           162: 
        !           163: In the output file, all text-segment information comes
        !           164: first, followed by all data-segment information,
        !           165: and finally bss information.
        !           166: Within each segment, information appears in
        !           167: the order written.
        !           168: 
        !           169: Note:
        !           170: since nothing explicit can be assembled
        !           171: into the bss segment, the usual appearance
        !           172: of this segment is in the following style:
        !           173: 
        !           174:        .bss
        !           175:        var1:   .=.+2
        !           176:        tab1:   .=.+100.
        !           177:        ...
        !           178: 
        !           179: That is, space is reserved but nothing explicit
        !           180: is placed in it.
        !           181: 
        !           182: As is evident from the example, it is legal to
        !           183: assign to the location counter ".".
        !           184: It is also permissible in segments other than ".bss".
        !           185: The restriction is made, however,
        !           186: that the value so assigned must be defined
        !           187: in the first pass and it must be a value
        !           188: associated with the same segment as ".".
        !           189: 
        !           190: The pseudo-op
        !           191: 
        !           192:        .comm   symbol,expression
        !           193: 
        !           194: makes symbol______ an undefined global symbol,
        !           195: and places the value of the expression in
        !           196: the value field of the symbol's definition.
        !           197: Thus the above declaration is equivalent to
        !           198: 
        !           199:        .globl  symbol
        !           200:        symbol = expression ^ symbol
        !           201: 
        !           202: The treatment of such a symbol by the loader ld(I)
        !           203: is as follows:
        !           204: If another routine in the same load defines the symbol to be an ordinary
        !           205: text, data, bss, or absolute symbol,
        !           206: that definition takes precedence and the symbol
        !           207: acts like a normal undefined external.
        !           208: If however no other routine defines the symbol, the loader
        !           209: defines it as an external bss-segment symbol
        !           210: and reserves n_ bytes after its location,
        !           211: where n_ is the value of the expression in the .comm
        !           212: operation.
        !           213: Thus ".comm x,100"
        !           214: effectively declares x to be a common region 100
        !           215: bytes long.
        !           216: Note: all such declarations for the same symbol
        !           217: in various routines should request the same amount
        !           218: of space.
        !           219: .sp
        !           220: The binary output of the assembler is placed on the file "a.out" in the
        !           221: current directory.
        !           222: a.out_____ also contains the symbol table from the assembly
        !           223: and relocation bits.
        !           224: The output of the assembler is executable immediately
        !           225: if the assembly was error-free and if there were no
        !           226: unresolved external references.
        !           227: The link editor ld__ may be used to combine several
        !           228: assembly outputs and resolve global symbols.
        !           229: .sp
        !           230: The assembler does not produce a listing of the source program.
        !           231: This is not a serious drawback; the debugger db__ discussed
        !           232: below is sufficiently powerful to render a printed
        !           233: octal translation of the source unnecessary.
        !           234: 
        !           235: On the last pages of this section is a list of all the assembler's
        !           236: built-in symbols.
        !           237: In the case of instructions, the addressing modes
        !           238: are as follows:
        !           239: 
        !           240: .nf
        !           241:        src, dst        source, destination
        !           242:        r               general register
        !           243:        fsrc,fdst       floating source, destination
        !           244:        fr              floating register
        !           245:        exp             expression
        !           246: 
        !           247: .fi
        !           248: The names of certain 11/45 opcodes are different
        !           249: from those in the 11/45 manual
        !           250: to draw analogies with existing 11/20 instructions.
        !           251: ..pa +2
        !           252: 
        !           253: .ti 0
        !           254: FILES          /etc/as2        pass 2 of the assembler
        !           255: .br
        !           256: /tmp/atm1?     temporary
        !           257: .br
        !           258: /tmp/atm2?     temporary
        !           259: .br
        !           260: /tmp/atm3?     temporary
        !           261: .br
        !           262: a.out          object
        !           263: .sp
        !           264: .ti 0
        !           265: SEE ALSO       ld(I),
        !           266: nm(I),
        !           267: sh(I),
        !           268: un(I),
        !           269: db(I),
        !           270: a.out(V),
        !           271: [1] PAL-11R Assembler;
        !           272: DEC-11-ASDB-D,
        !           273: [2] Knuth,
        !           274: .ul
        !           275: The Art of Computer Programming,
        !           276: Vol. I; Fundamental Algorithms.,
        !           277: "UNIX Assembler Manual" (in preparation).
        !           278: .sp
        !           279: .ti 0
        !           280: DIAGNOSTICS    When
        !           281: an input file cannot be read, its name
        !           282: followed by a question mark is typed and assembly
        !           283: ceases.
        !           284: When syntactic or semantic errors occur, a single-character diagnostic is typed out
        !           285: together with the line number and the file name in which it
        !           286: occurred.  Errors in pass 1 cause cancellation of pass 2.
        !           287: The possible errors are:
        !           288: .sp
        !           289: .in +6
        !           290: .ti -6
        !           291: )  parentheses error
        !           292: .ti -6
        !           293: ]  parentheses error
        !           294: .ti -6
        !           295: <  String not terminated properly
        !           296: .ti -6
        !           297: *  Indirection ("*_") used illegally
        !           298: .ti -6
        !           299: .li
        !           300: .  Illegal assignment to "."
        !           301: .ti -6
        !           302: A  error in A_ddress
        !           303: .ti -6
        !           304: B  B_ranch instruction is odd or too remote
        !           305: .ti -6
        !           306: E  error in E_xpression
        !           307: .ti -6
        !           308: F  error in local ("F_" or "b") type symbol
        !           309: .ti -6
        !           310: G  G_arbage (unknown) character
        !           311: .ti -6
        !           312: I  End of file inside an If__
        !           313: .ti -6
        !           314: M  M_ultiply defined symbol as label
        !           315: .ti -6
        !           316: O  O_dd-- word quantity assembled at odd address
        !           317: .ti -6
        !           318: P  P_hase error-- "." different in pass 1 and 2
        !           319: .ti -6
        !           320: R  R_elocation error
        !           321: .ti -6
        !           322: U  U_ndefined symbol
        !           323: .ti -6
        !           324: X  syntaX_ error
        !           325: .in -6
        !           326: .sp
        !           327: .ti 0
        !           328: BUGS           Symbol table overflow is not checked.
        !           329: .sp
        !           330: If "." is moved backwards by an odd number of bytes,
        !           331: relocation bits are corrupted.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.