Home | History | Annotate | Download | only in doc
      1 @c Copyright (C) 2001-2014 Free Software Foundation, Inc.
      2 @c This is part of the GAS manual.
      3 @c For copying conditions, see the file as.texinfo.
      4 @ifset GENERIC
      5 @page
      6 @node PDP-11-Dependent
      7 @chapter PDP-11 Dependent Features
      8 @end ifset
      9 @ifclear GENERIC
     10 @node Machine Dependencies
     11 @chapter PDP-11 Dependent Features
     12 @end ifclear
     13 
     14 @cindex PDP-11 support
     15 
     16 @menu
     17 * PDP-11-Options::		Options
     18 * PDP-11-Pseudos::		Assembler Directives
     19 * PDP-11-Syntax::		DEC Syntax versus BSD Syntax
     20 * PDP-11-Mnemonics::		Instruction Naming
     21 * PDP-11-Synthetic::		Synthetic Instructions
     22 @end menu
     23 
     24 @node PDP-11-Options
     25 @section Options
     26 
     27 @cindex options for PDP-11
     28 
     29 The PDP-11 version of @code{@value{AS}} has a rich set of machine
     30 dependent options.
     31 
     32 @subsection Code Generation Options
     33 
     34 @table @code
     35 @cindex -mpic
     36 @cindex -mno-pic
     37 @item -mpic | -mno-pic
     38 Generate position-independent (or position-dependent) code.
     39 
     40 The default is to generate position-independent code.
     41 @end table
     42 
     43 @subsection Instruction Set Extension Options
     44 
     45 These options enables or disables the use of extensions over the base
     46 line instruction set as introduced by the first PDP-11 CPU: the KA11.
     47 Most options come in two variants: a @code{-m}@var{extension} that
     48 enables @var{extension}, and a @code{-mno-}@var{extension} that disables
     49 @var{extension}.
     50 
     51 The default is to enable all extensions.
     52 
     53 @table @code
     54 @cindex -mall
     55 @cindex -mall-extensions
     56 @item -mall | -mall-extensions
     57 Enable all instruction set extensions.
     58 
     59 @cindex -mno-extensions
     60 @item -mno-extensions
     61 Disable all instruction set extensions.
     62 
     63 @cindex -mcis
     64 @cindex -mno-cis
     65 @item -mcis | -mno-cis
     66 Enable (or disable) the use of the commercial instruction set, which
     67 consists of these instructions: @code{ADDNI}, @code{ADDN}, @code{ADDPI},
     68 @code{ADDP}, @code{ASHNI}, @code{ASHN}, @code{ASHPI}, @code{ASHP},
     69 @code{CMPCI}, @code{CMPC}, @code{CMPNI}, @code{CMPN}, @code{CMPPI},
     70 @code{CMPP}, @code{CVTLNI}, @code{CVTLN}, @code{CVTLPI}, @code{CVTLP},
     71 @code{CVTNLI}, @code{CVTNL}, @code{CVTNPI}, @code{CVTNP}, @code{CVTPLI},
     72 @code{CVTPL}, @code{CVTPNI}, @code{CVTPN}, @code{DIVPI}, @code{DIVP},
     73 @code{L2DR}, @code{L3DR}, @code{LOCCI}, @code{LOCC}, @code{MATCI},
     74 @code{MATC}, @code{MOVCI}, @code{MOVC}, @code{MOVRCI}, @code{MOVRC},
     75 @code{MOVTCI}, @code{MOVTC}, @code{MULPI}, @code{MULP}, @code{SCANCI},
     76 @code{SCANC}, @code{SKPCI}, @code{SKPC}, @code{SPANCI}, @code{SPANC},
     77 @code{SUBNI}, @code{SUBN}, @code{SUBPI}, and @code{SUBP}.
     78 
     79 @cindex -mcsm
     80 @cindex -mno-csm
     81 @item -mcsm | -mno-csm
     82 Enable (or disable) the use of the @code{CSM} instruction.
     83 
     84 @cindex -meis
     85 @cindex -mno-eis
     86 @item -meis | -mno-eis
     87 Enable (or disable) the use of the extended instruction set, which
     88 consists of these instructions: @code{ASHC}, @code{ASH}, @code{DIV},
     89 @code{MARK}, @code{MUL}, @code{RTT}, @code{SOB} @code{SXT}, and
     90 @code{XOR}.
     91 
     92 @cindex -mfis
     93 @cindex -mno-fis
     94 @cindex -mkev11
     95 @cindex -mkev11
     96 @cindex -mno-kev11
     97 @item -mfis | -mkev11
     98 @itemx -mno-fis | -mno-kev11
     99 Enable (or disable) the use of the KEV11 floating-point instructions:
    100 @code{FADD}, @code{FDIV}, @code{FMUL}, and @code{FSUB}.
    101 
    102 @cindex -mfpp
    103 @cindex -mno-fpp
    104 @cindex -mfpu
    105 @cindex -mno-fpu
    106 @cindex -mfp-11
    107 @cindex -mno-fp-11
    108 @item -mfpp | -mfpu | -mfp-11
    109 @itemx -mno-fpp | -mno-fpu | -mno-fp-11
    110 Enable (or disable) the use of FP-11 floating-point instructions:
    111 @code{ABSF}, @code{ADDF}, @code{CFCC}, @code{CLRF}, @code{CMPF},
    112 @code{DIVF}, @code{LDCFF}, @code{LDCIF}, @code{LDEXP}, @code{LDF},
    113 @code{LDFPS}, @code{MODF}, @code{MULF}, @code{NEGF}, @code{SETD},
    114 @code{SETF}, @code{SETI}, @code{SETL}, @code{STCFF}, @code{STCFI},
    115 @code{STEXP}, @code{STF}, @code{STFPS}, @code{STST}, @code{SUBF}, and
    116 @code{TSTF}.
    117 
    118 @cindex -mlimited-eis
    119 @cindex -mno-limited-eis
    120 @item -mlimited-eis | -mno-limited-eis
    121 Enable (or disable) the use of the limited extended instruction set:
    122 @code{MARK}, @code{RTT}, @code{SOB}, @code{SXT}, and @code{XOR}.
    123 
    124 The -mno-limited-eis options also implies -mno-eis.
    125 
    126 @cindex -mmfpt
    127 @cindex -mno-mfpt
    128 @item -mmfpt | -mno-mfpt
    129 Enable (or disable) the use of the @code{MFPT} instruction.
    130 
    131 @cindex -mmutiproc
    132 @cindex -mno-mutiproc
    133 @item -mmultiproc | -mno-multiproc
    134 Enable (or disable) the use of multiprocessor instructions: @code{TSTSET} and
    135 @code{WRTLCK}.
    136 
    137 @cindex -mmxps
    138 @cindex -mno-mxps
    139 @item -mmxps | -mno-mxps
    140 Enable (or disable) the use of the @code{MFPS} and @code{MTPS} instructions.
    141 
    142 @cindex -mspl
    143 @cindex -mno-spl
    144 @item -mspl | -mno-spl
    145 Enable (or disable) the use of the @code{SPL} instruction.
    146 
    147 @cindex -mmicrocode
    148 @cindex -mno-microcode
    149 Enable (or disable) the use of the microcode instructions: @code{LDUB},
    150 @code{MED}, and @code{XFC}.
    151 @end table
    152 
    153 @subsection CPU Model Options
    154 
    155 These options enable the instruction set extensions supported by a
    156 particular CPU, and disables all other extensions.
    157 
    158 @table @code
    159 @cindex -mka11
    160 @item -mka11
    161 KA11 CPU.  Base line instruction set only.
    162 
    163 @cindex -mkb11
    164 @item -mkb11
    165 KB11 CPU.  Enable extended instruction set and @code{SPL}.
    166 
    167 @cindex -mkd11a
    168 @item -mkd11a
    169 KD11-A CPU.  Enable limited extended instruction set.
    170 
    171 @cindex -mkd11b
    172 @item -mkd11b
    173 KD11-B CPU.  Base line instruction set only.
    174 
    175 @cindex -mkd11d
    176 @item -mkd11d
    177 KD11-D CPU.  Base line instruction set only.
    178 
    179 @cindex -mkd11e
    180 @item -mkd11e
    181 KD11-E CPU.  Enable extended instruction set, @code{MFPS}, and @code{MTPS}.
    182 
    183 @cindex -mkd11f
    184 @cindex -mkd11h
    185 @cindex -mkd11q
    186 @item -mkd11f | -mkd11h | -mkd11q
    187 KD11-F, KD11-H, or KD11-Q CPU.  Enable limited extended instruction set,
    188 @code{MFPS}, and @code{MTPS}.
    189 
    190 @cindex -mkd11k
    191 @item -mkd11k
    192 KD11-K CPU.  Enable extended instruction set, @code{LDUB}, @code{MED},
    193 @code{MFPS}, @code{MFPT}, @code{MTPS}, and @code{XFC}.
    194 
    195 @cindex -mkd11z
    196 @item -mkd11z
    197 KD11-Z CPU.  Enable extended instruction set, @code{CSM}, @code{MFPS},
    198 @code{MFPT}, @code{MTPS}, and @code{SPL}.
    199 
    200 @cindex -mf11
    201 @item -mf11
    202 F11 CPU.  Enable extended instruction set, @code{MFPS}, @code{MFPT}, and
    203 @code{MTPS}.
    204 
    205 @cindex -mj11
    206 @item -mj11
    207 J11 CPU.  Enable extended instruction set, @code{CSM}, @code{MFPS},
    208 @code{MFPT}, @code{MTPS}, @code{SPL}, @code{TSTSET}, and @code{WRTLCK}.
    209 
    210 @cindex -mt11
    211 @item -mt11
    212 T11 CPU.  Enable limited extended instruction set, @code{MFPS}, and
    213 @code{MTPS}.
    214 @end table
    215 
    216 @subsection Machine Model Options
    217 
    218 These options enable the instruction set extensions supported by a
    219 particular machine model, and disables all other extensions.
    220 
    221 @table @code
    222 @cindex -m11/03
    223 @item -m11/03
    224 Same as @code{-mkd11f}.
    225 
    226 @cindex -m11/04
    227 @item -m11/04
    228 Same as @code{-mkd11d}.
    229 
    230 @cindex -m11/05
    231 @cindex -m11/10
    232 @item -m11/05 | -m11/10
    233 Same as @code{-mkd11b}.
    234 
    235 @cindex -m11/15
    236 @cindex -m11/20
    237 @item -m11/15 | -m11/20
    238 Same as @code{-mka11}.
    239 
    240 @cindex -m11/21
    241 @item -m11/21
    242 Same as @code{-mt11}.
    243 
    244 @cindex -m11/23
    245 @cindex -m11/24
    246 @item -m11/23 | -m11/24
    247 Same as @code{-mf11}.
    248 
    249 @cindex -m11/34
    250 @item -m11/34
    251 Same as @code{-mkd11e}.
    252 
    253 @cindex -m11/34a
    254 @item -m11/34a
    255 Ame as @code{-mkd11e} @code{-mfpp}.
    256 
    257 @cindex -m11/35
    258 @cindex -m11/40
    259 @item -m11/35 | -m11/40
    260 Same as @code{-mkd11a}.
    261 
    262 @cindex -m11/44
    263 @item -m11/44
    264 Same as @code{-mkd11z}.
    265 
    266 @cindex -m11/45
    267 @cindex -m11/50
    268 @cindex -m11/55
    269 @cindex -m11/70
    270 @item -m11/45 | -m11/50 | -m11/55 | -m11/70
    271 Same as @code{-mkb11}.
    272 
    273 @cindex -m11/53
    274 @cindex -m11/73
    275 @cindex -m11/83
    276 @cindex -m11/84
    277 @cindex -m11/93
    278 @cindex -m11/94
    279 @item -m11/53 | -m11/73 | -m11/83 | -m11/84 | -m11/93 | -m11/94
    280 Same as @code{-mj11}.
    281 
    282 @cindex -m11/60
    283 @item -m11/60
    284 Same as @code{-mkd11k}.
    285 @end table
    286 
    287 @node PDP-11-Pseudos
    288 @section Assembler Directives
    289 
    290 The PDP-11 version of @code{@value{AS}} has a few machine
    291 dependent assembler directives.
    292 
    293 @table @code
    294 @item .bss
    295 Switch to the @code{bss} section.
    296 
    297 @item .even
    298 Align the location counter to an even number.
    299 @end table
    300 
    301 @node PDP-11-Syntax
    302 @section PDP-11 Assembly Language Syntax
    303 
    304 @cindex PDP-11 syntax
    305 
    306 @cindex DEC syntax
    307 @cindex BSD syntax
    308 @code{@value{AS}} supports both DEC syntax and BSD syntax.  The only
    309 difference is that in DEC syntax, a @code{#} character is used to denote
    310 an immediate constants, while in BSD syntax the character for this
    311 purpose is @code{$}.
    312 
    313 @cindex PDP-11 general-purpose register syntax
    314 general-purpose registers are named @code{r0} through @code{r7}.
    315 Mnemonic alternatives for @code{r6} and @code{r7} are @code{sp} and
    316 @code{pc}, respectively.
    317 
    318 @cindex PDP-11 floating-point register syntax
    319 Floating-point registers are named @code{ac0} through @code{ac3}, or
    320 alternatively @code{fr0} through @code{fr3}.
    321 
    322 @cindex PDP-11 comments
    323 Comments are started with a @code{#} or a @code{/} character, and extend
    324 to the end of the line.  (FIXME: clash with immediates?)
    325 
    326 @cindex PDP-11 line separator
    327 Multiple statements on the same line can be separated by the @samp{;} character.
    328 
    329 @node PDP-11-Mnemonics
    330 @section Instruction Naming
    331 
    332 @cindex PDP-11 instruction naming
    333 
    334 Some instructions have alternative names.
    335 
    336 @table @code
    337 @item BCC
    338 @code{BHIS}
    339 
    340 @item BCS
    341 @code{BLO}
    342 
    343 @item L2DR
    344 @code{L2D}
    345 
    346 @item L3DR
    347 @code{L3D}
    348 
    349 @item SYS
    350 @code{TRAP}
    351 @end table
    352 
    353 @node PDP-11-Synthetic
    354 @section Synthetic Instructions
    355 
    356 The @code{JBR} and @code{J}@var{CC} synthetic instructions are not
    357 supported yet.
    358