c-m68k.texi 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636
  1. @c Copyright (C) 1991-2022 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 M68K-Dependent
  7. @chapter M680x0 Dependent Features
  8. @end ifset
  9. @ifclear GENERIC
  10. @node Machine Dependencies
  11. @chapter M680x0 Dependent Features
  12. @end ifclear
  13. @cindex M680x0 support
  14. @menu
  15. * M68K-Opts:: M680x0 Options
  16. * M68K-Syntax:: Syntax
  17. * M68K-Moto-Syntax:: Motorola Syntax
  18. * M68K-Float:: Floating Point
  19. * M68K-Directives:: 680x0 Machine Directives
  20. * M68K-opcodes:: Opcodes
  21. @end menu
  22. @node M68K-Opts
  23. @section M680x0 Options
  24. @cindex options, M680x0
  25. @cindex M680x0 options
  26. The Motorola 680x0 version of @code{@value{AS}} has a few machine
  27. dependent options:
  28. @table @samp
  29. @cindex @samp{-march=} command-line option, M680x0
  30. @item -march=@var{architecture}
  31. This option specifies a target architecture. The following
  32. architectures are recognized:
  33. @code{68000},
  34. @code{68010},
  35. @code{68020},
  36. @code{68030},
  37. @code{68040},
  38. @code{68060},
  39. @code{cpu32},
  40. @code{isaa},
  41. @code{isaaplus},
  42. @code{isab},
  43. @code{isac} and
  44. @code{cfv4e}.
  45. @cindex @samp{-mcpu=} command-line option, M680x0
  46. @item -mcpu=@var{cpu}
  47. This option specifies a target cpu. When used in conjunction with the
  48. @option{-march} option, the cpu must be within the specified
  49. architecture. Also, the generic features of the architecture are used
  50. for instruction generation, rather than those of the specific chip.
  51. @cindex @samp{-m[no-]68851} command-line option, M680x0
  52. @cindex @samp{-m[no-]68881} command-line option, M680x0
  53. @cindex @samp{-m[no-]div} command-line option, M680x0
  54. @cindex @samp{-m[no-]usp} command-line option, M680x0
  55. @cindex @samp{-m[no-]float} command-line option, M680x0
  56. @cindex @samp{-m[no-]mac} command-line option, M680x0
  57. @cindex @samp{-m[no-]emac} command-line option, M680x0
  58. @item -m[no-]68851
  59. @itemx -m[no-]68881
  60. @itemx -m[no-]div
  61. @itemx -m[no-]usp
  62. @itemx -m[no-]float
  63. @itemx -m[no-]mac
  64. @itemx -m[no-]emac
  65. Enable or disable various architecture specific features. If a chip
  66. or architecture by default supports an option (for instance
  67. @option{-march=isaaplus} includes the @option{-mdiv} option),
  68. explicitly disabling the option will override the default.
  69. @cindex @samp{-l} option, M680x0
  70. @item -l
  71. You can use the @samp{-l} option to shorten the size of references to undefined
  72. symbols. If you do not use the @samp{-l} option, references to undefined
  73. symbols are wide enough for a full @code{long} (32 bits). (Since
  74. @code{@value{AS}} cannot know where these symbols end up, @code{@value{AS}} can
  75. only allocate space for the linker to fill in later. Since @code{@value{AS}}
  76. does not know how far away these symbols are, it allocates as much space as it
  77. can.) If you use this option, the references are only one word wide (16 bits).
  78. This may be useful if you want the object file to be as small as possible, and
  79. you know that the relevant symbols are always less than 17 bits away.
  80. @cindex @samp{--register-prefix-optional} option, M680x0
  81. @item --register-prefix-optional
  82. For some configurations, especially those where the compiler normally
  83. does not prepend an underscore to the names of user variables, the
  84. assembler requires a @samp{%} before any use of a register name. This
  85. is intended to let the assembler distinguish between C variables and
  86. functions named @samp{a0} through @samp{a7}, and so on. The @samp{%} is
  87. always accepted, but is not required for certain configurations, notably
  88. @samp{sun3}. The @samp{--register-prefix-optional} option may be used
  89. to permit omitting the @samp{%} even for configurations for which it is
  90. normally required. If this is done, it will generally be impossible to
  91. refer to C variables and functions with the same names as register
  92. names.
  93. @cindex @samp{--bitwise-or} option, M680x0
  94. @item --bitwise-or
  95. Normally the character @samp{|} is treated as a comment character, which
  96. means that it can not be used in expressions. The @samp{--bitwise-or}
  97. option turns @samp{|} into a normal character. In this mode, you must
  98. either use C style comments, or start comments with a @samp{#} character
  99. at the beginning of a line.
  100. @cindex @samp{--base-size-default-16}
  101. @cindex @samp{--base-size-default-32}
  102. @item --base-size-default-16 --base-size-default-32
  103. If you use an addressing mode with a base register without specifying
  104. the size, @code{@value{AS}} will normally use the full 32 bit value.
  105. For example, the addressing mode @samp{%a0@@(%d0)} is equivalent to
  106. @samp{%a0@@(%d0:l)}. You may use the @samp{--base-size-default-16}
  107. option to tell @code{@value{AS}} to default to using the 16 bit value.
  108. In this case, @samp{%a0@@(%d0)} is equivalent to @samp{%a0@@(%d0:w)}.
  109. You may use the @samp{--base-size-default-32} option to restore the
  110. default behaviour.
  111. @cindex @samp{--disp-size-default-16}
  112. @cindex @samp{--disp-size-default-32}
  113. @item --disp-size-default-16 --disp-size-default-32
  114. If you use an addressing mode with a displacement, and the value of the
  115. displacement is not known, @code{@value{AS}} will normally assume that
  116. the value is 32 bits. For example, if the symbol @samp{disp} has not
  117. been defined, @code{@value{AS}} will assemble the addressing mode
  118. @samp{%a0@@(disp,%d0)} as though @samp{disp} is a 32 bit value. You may
  119. use the @samp{--disp-size-default-16} option to tell @code{@value{AS}}
  120. to instead assume that the displacement is 16 bits. In this case,
  121. @code{@value{AS}} will assemble @samp{%a0@@(disp,%d0)} as though
  122. @samp{disp} is a 16 bit value. You may use the
  123. @samp{--disp-size-default-32} option to restore the default behaviour.
  124. @cindex @samp{--pcrel}
  125. @item --pcrel
  126. Always keep branches PC-relative. In the M680x0 architecture all branches
  127. are defined as PC-relative. However, on some processors they are limited
  128. to word displacements maximum. When @code{@value{AS}} needs a long branch
  129. that is not available, it normally emits an absolute jump instead. This
  130. option disables this substitution. When this option is given and no long
  131. branches are available, only word branches will be emitted. An error
  132. message will be generated if a word branch cannot reach its target. This
  133. option has no effect on 68020 and other processors that have long branches.
  134. @pxref{M68K-Branch,,Branch Improvement}.
  135. @cindex @samp{-m68000} and related options
  136. @cindex architecture options, M680x0
  137. @cindex M680x0 architecture options
  138. @item -m68000
  139. @code{@value{AS}} can assemble code for several different members of the
  140. Motorola 680x0 family. The default depends upon how @code{@value{AS}}
  141. was configured when it was built; normally, the default is to assemble
  142. code for the 68020 microprocessor. The following options may be used to
  143. change the default. These options control which instructions and
  144. addressing modes are permitted. The members of the 680x0 family are
  145. very similar. For detailed information about the differences, see the
  146. Motorola manuals.
  147. @table @samp
  148. @item -m68000
  149. @itemx -m68ec000
  150. @itemx -m68hc000
  151. @itemx -m68hc001
  152. @itemx -m68008
  153. @itemx -m68302
  154. @itemx -m68306
  155. @itemx -m68307
  156. @itemx -m68322
  157. @itemx -m68356
  158. Assemble for the 68000. @samp{-m68008}, @samp{-m68302}, and so on are synonyms
  159. for @samp{-m68000}, since the chips are the same from the point of view
  160. of the assembler.
  161. @item -m68010
  162. Assemble for the 68010.
  163. @item -m68020
  164. @itemx -m68ec020
  165. Assemble for the 68020. This is normally the default.
  166. @item -m68030
  167. @itemx -m68ec030
  168. Assemble for the 68030.
  169. @item -m68040
  170. @itemx -m68ec040
  171. Assemble for the 68040.
  172. @item -m68060
  173. @itemx -m68ec060
  174. Assemble for the 68060.
  175. @item -mcpu32
  176. @itemx -m68330
  177. @itemx -m68331
  178. @itemx -m68332
  179. @itemx -m68333
  180. @itemx -m68334
  181. @itemx -m68336
  182. @itemx -m68340
  183. @itemx -m68341
  184. @itemx -m68349
  185. @itemx -m68360
  186. Assemble for the CPU32 family of chips.
  187. @item -m5200
  188. @itemx -m5202
  189. @itemx -m5204
  190. @itemx -m5206
  191. @itemx -m5206e
  192. @itemx -m521x
  193. @itemx -m5249
  194. @itemx -m528x
  195. @itemx -m5307
  196. @itemx -m5407
  197. @itemx -m547x
  198. @itemx -m548x
  199. @itemx -mcfv4
  200. @itemx -mcfv4e
  201. Assemble for the ColdFire family of chips.
  202. @item -m68881
  203. @itemx -m68882
  204. Assemble 68881 floating point instructions. This is the default for the
  205. 68020, 68030, and the CPU32. The 68040 and 68060 always support
  206. floating point instructions.
  207. @item -mno-68881
  208. Do not assemble 68881 floating point instructions. This is the default
  209. for 68000 and the 68010. The 68040 and 68060 always support floating
  210. point instructions, even if this option is used.
  211. @item -m68851
  212. Assemble 68851 MMU instructions. This is the default for the 68020,
  213. 68030, and 68060. The 68040 accepts a somewhat different set of MMU
  214. instructions; @samp{-m68851} and @samp{-m68040} should not be used
  215. together.
  216. @item -mno-68851
  217. Do not assemble 68851 MMU instructions. This is the default for the
  218. 68000, 68010, and the CPU32. The 68040 accepts a somewhat different set
  219. of MMU instructions.
  220. @end table
  221. @end table
  222. @node M68K-Syntax
  223. @section Syntax
  224. @cindex @sc{mit}
  225. This syntax for the Motorola 680x0 was developed at @sc{mit}.
  226. @cindex M680x0 syntax
  227. @cindex syntax, M680x0
  228. @cindex M680x0 size modifiers
  229. @cindex size modifiers, M680x0
  230. The 680x0 version of @code{@value{AS}} uses instructions names and
  231. syntax compatible with the Sun assembler. Intervening periods are
  232. ignored; for example, @samp{movl} is equivalent to @samp{mov.l}.
  233. In the following table @var{apc} stands for any of the address registers
  234. (@samp{%a0} through @samp{%a7}), the program counter (@samp{%pc}), the
  235. zero-address relative to the program counter (@samp{%zpc}), a suppressed
  236. address register (@samp{%za0} through @samp{%za7}), or it may be omitted
  237. entirely. The use of @var{size} means one of @samp{w} or @samp{l}, and
  238. it may be omitted, along with the leading colon, unless a scale is also
  239. specified. The use of @var{scale} means one of @samp{1}, @samp{2},
  240. @samp{4}, or @samp{8}, and it may always be omitted along with the
  241. leading colon.
  242. @cindex M680x0 addressing modes
  243. @cindex addressing modes, M680x0
  244. The following addressing modes are understood:
  245. @table @dfn
  246. @item Immediate
  247. @samp{#@var{number}}
  248. @item Data Register
  249. @samp{%d0} through @samp{%d7}
  250. @item Address Register
  251. @samp{%a0} through @samp{%a7}@*
  252. @samp{%a7} is also known as @samp{%sp}, i.e., the Stack Pointer. @code{%a6}
  253. is also known as @samp{%fp}, the Frame Pointer.
  254. @item Address Register Indirect
  255. @samp{%a0@@} through @samp{%a7@@}
  256. @item Address Register Postincrement
  257. @samp{%a0@@+} through @samp{%a7@@+}
  258. @item Address Register Predecrement
  259. @samp{%a0@@-} through @samp{%a7@@-}
  260. @item Indirect Plus Offset
  261. @samp{@var{apc}@@(@var{number})}
  262. @item Index
  263. @samp{@var{apc}@@(@var{number},@var{register}:@var{size}:@var{scale})}
  264. The @var{number} may be omitted.
  265. @item Postindex
  266. @samp{@var{apc}@@(@var{number})@@(@var{onumber},@var{register}:@var{size}:@var{scale})}
  267. The @var{onumber} or the @var{register}, but not both, may be omitted.
  268. @item Preindex
  269. @samp{@var{apc}@@(@var{number},@var{register}:@var{size}:@var{scale})@@(@var{onumber})}
  270. The @var{number} may be omitted. Omitting the @var{register} produces
  271. the Postindex addressing mode.
  272. @item Absolute
  273. @samp{@var{symbol}}, or @samp{@var{digits}}, optionally followed by
  274. @samp{:b}, @samp{:w}, or @samp{:l}.
  275. @end table
  276. @node M68K-Moto-Syntax
  277. @section Motorola Syntax
  278. @cindex Motorola syntax for the 680x0
  279. @cindex alternate syntax for the 680x0
  280. The standard Motorola syntax for this chip differs from the syntax
  281. already discussed (@pxref{M68K-Syntax,,Syntax}). @code{@value{AS}} can
  282. accept Motorola syntax for operands, even if @sc{mit} syntax is used for
  283. other operands in the same instruction. The two kinds of syntax are
  284. fully compatible.
  285. In the following table @var{apc} stands for any of the address registers
  286. (@samp{%a0} through @samp{%a7}), the program counter (@samp{%pc}), the
  287. zero-address relative to the program counter (@samp{%zpc}), or a
  288. suppressed address register (@samp{%za0} through @samp{%za7}). The use
  289. of @var{size} means one of @samp{w} or @samp{l}, and it may always be
  290. omitted along with the leading dot. The use of @var{scale} means one of
  291. @samp{1}, @samp{2}, @samp{4}, or @samp{8}, and it may always be omitted
  292. along with the leading asterisk.
  293. The following additional addressing modes are understood:
  294. @table @dfn
  295. @item Address Register Indirect
  296. @samp{(%a0)} through @samp{(%a7)}@*
  297. @samp{%a7} is also known as @samp{%sp}, i.e., the Stack Pointer. @code{%a6}
  298. is also known as @samp{%fp}, the Frame Pointer.
  299. @item Address Register Postincrement
  300. @samp{(%a0)+} through @samp{(%a7)+}
  301. @item Address Register Predecrement
  302. @samp{-(%a0)} through @samp{-(%a7)}
  303. @item Indirect Plus Offset
  304. @samp{@var{number}(@var{%a0})} through @samp{@var{number}(@var{%a7})},
  305. or @samp{@var{number}(@var{%pc})}.
  306. The @var{number} may also appear within the parentheses, as in
  307. @samp{(@var{number},@var{%a0})}. When used with the @var{pc}, the
  308. @var{number} may be omitted (with an address register, omitting the
  309. @var{number} produces Address Register Indirect mode).
  310. @item Index
  311. @samp{@var{number}(@var{apc},@var{register}.@var{size}*@var{scale})}
  312. The @var{number} may be omitted, or it may appear within the
  313. parentheses. The @var{apc} may be omitted. The @var{register} and the
  314. @var{apc} may appear in either order. If both @var{apc} and
  315. @var{register} are address registers, and the @var{size} and @var{scale}
  316. are omitted, then the first register is taken as the base register, and
  317. the second as the index register.
  318. @item Postindex
  319. @samp{([@var{number},@var{apc}],@var{register}.@var{size}*@var{scale},@var{onumber})}
  320. The @var{onumber}, or the @var{register}, or both, may be omitted.
  321. Either the @var{number} or the @var{apc} may be omitted, but not both.
  322. @item Preindex
  323. @samp{([@var{number},@var{apc},@var{register}.@var{size}*@var{scale}],@var{onumber})}
  324. The @var{number}, or the @var{apc}, or the @var{register}, or any two of
  325. them, may be omitted. The @var{onumber} may be omitted. The
  326. @var{register} and the @var{apc} may appear in either order. If both
  327. @var{apc} and @var{register} are address registers, and the @var{size}
  328. and @var{scale} are omitted, then the first register is taken as the
  329. base register, and the second as the index register.
  330. @end table
  331. @node M68K-Float
  332. @section Floating Point
  333. @cindex floating point, M680x0
  334. @cindex M680x0 floating point
  335. Packed decimal (P) format floating literals are not supported.
  336. Feel free to add the code!
  337. The floating point formats generated by directives are these.
  338. @table @code
  339. @cindex @code{float} directive, M680x0
  340. @item .float
  341. @code{Single} precision floating point constants.
  342. @cindex @code{double} directive, M680x0
  343. @item .double
  344. @code{Double} precision floating point constants.
  345. @cindex @code{extend} directive M680x0
  346. @cindex @code{ldouble} directive M680x0
  347. @item .extend
  348. @itemx .ldouble
  349. @code{Extended} precision (@code{long double}) floating point constants.
  350. @end table
  351. @node M68K-Directives
  352. @section 680x0 Machine Directives
  353. @cindex M680x0 directives
  354. @cindex directives, M680x0
  355. In order to be compatible with the Sun assembler the 680x0 assembler
  356. understands the following directives.
  357. @table @code
  358. @cindex @code{data1} directive, M680x0
  359. @item .data1
  360. This directive is identical to a @code{.data 1} directive.
  361. @cindex @code{data2} directive, M680x0
  362. @item .data2
  363. This directive is identical to a @code{.data 2} directive.
  364. @cindex @code{even} directive, M680x0
  365. @item .even
  366. This directive is a special case of the @code{.align} directive; it
  367. aligns the output to an even byte boundary.
  368. @cindex @code{skip} directive, M680x0
  369. @item .skip
  370. This directive is identical to a @code{.space} directive.
  371. @cindex @code{arch} directive, M680x0
  372. @item .arch @var{name}
  373. Select the target architecture and extension features. Valid values
  374. for @var{name} are the same as for the @option{-march} command-line
  375. option. This directive cannot be specified after
  376. any instructions have been assembled. If it is given multiple times,
  377. or in conjunction with the @option{-march} option, all uses must be for
  378. the same architecture and extension set.
  379. @cindex @code{cpu} directive, M680x0
  380. @item .cpu @var{name}
  381. Select the target cpu. Valid values
  382. for @var{name} are the same as for the @option{-mcpu} command-line
  383. option. This directive cannot be specified after
  384. any instructions have been assembled. If it is given multiple times,
  385. or in conjunction with the @option{-mopt} option, all uses must be for
  386. the same cpu.
  387. @end table
  388. @need 2000
  389. @node M68K-opcodes
  390. @section Opcodes
  391. @cindex M680x0 opcodes
  392. @cindex opcodes, M680x0
  393. @cindex instruction set, M680x0
  394. @c doc@cygnus.com: I don't see any point in the following
  395. @c paragraph. Bugs are bugs; how does saying this
  396. @c help anyone?
  397. @ignore
  398. Danger: Several bugs have been found in the opcode table (and
  399. fixed). More bugs may exist. Be careful when using obscure
  400. instructions.
  401. @end ignore
  402. @menu
  403. * M68K-Branch:: Branch Improvement
  404. * M68K-Chars:: Special Characters
  405. @end menu
  406. @node M68K-Branch
  407. @subsection Branch Improvement
  408. @cindex pseudo-opcodes, M680x0
  409. @cindex M680x0 pseudo-opcodes
  410. @cindex branch improvement, M680x0
  411. @cindex M680x0 branch improvement
  412. Certain pseudo opcodes are permitted for branch instructions.
  413. They expand to the shortest branch instruction that reach the
  414. target. Generally these mnemonics are made by substituting @samp{j} for
  415. @samp{b} at the start of a Motorola mnemonic.
  416. The following table summarizes the pseudo-operations. A @code{*} flags
  417. cases that are more fully described after the table:
  418. @smallexample
  419. Displacement
  420. +------------------------------------------------------------
  421. | 68020 68000/10, not PC-relative OK
  422. Pseudo-Op |BYTE WORD LONG ABSOLUTE LONG JUMP **
  423. +------------------------------------------------------------
  424. jbsr |bsrs bsrw bsrl jsr
  425. jra |bras braw bral jmp
  426. * jXX |bXXs bXXw bXXl bNXs;jmp
  427. * dbXX | N/A dbXXw dbXX;bras;bral dbXX;bras;jmp
  428. fjXX | N/A fbXXw fbXXl N/A
  429. XX: condition
  430. NX: negative of condition XX
  431. @end smallexample
  432. @center @code{*}---see full description below
  433. @center @code{**}---this expansion mode is disallowed by @samp{--pcrel}
  434. @table @code
  435. @item jbsr
  436. @itemx jra
  437. These are the simplest jump pseudo-operations; they always map to one
  438. particular machine instruction, depending on the displacement to the
  439. branch target. This instruction will be a byte or word branch is that
  440. is sufficient. Otherwise, a long branch will be emitted if available.
  441. If no long branches are available and the @samp{--pcrel} option is not
  442. given, an absolute long jump will be emitted instead. If no long
  443. branches are available, the @samp{--pcrel} option is given, and a word
  444. branch cannot reach the target, an error message is generated.
  445. In addition to standard branch operands, @code{@value{AS}} allows these
  446. pseudo-operations to have all operands that are allowed for jsr and jmp,
  447. substituting these instructions if the operand given is not valid for a
  448. branch instruction.
  449. @item j@var{XX}
  450. Here, @samp{j@var{XX}} stands for an entire family of pseudo-operations,
  451. where @var{XX} is a conditional branch or condition-code test. The full
  452. list of pseudo-ops in this family is:
  453. @smallexample
  454. jhi jls jcc jcs jne jeq jvc
  455. jvs jpl jmi jge jlt jgt jle
  456. @end smallexample
  457. Usually, each of these pseudo-operations expands to a single branch
  458. instruction. However, if a word branch is not sufficient, no long branches
  459. are available, and the @samp{--pcrel} option is not given, @code{@value{AS}}
  460. issues a longer code fragment in terms of @var{NX}, the opposite condition
  461. to @var{XX}. For example, under these conditions:
  462. @smallexample
  463. j@var{XX} foo
  464. @end smallexample
  465. gives
  466. @smallexample
  467. b@var{NX}s oof
  468. jmp foo
  469. oof:
  470. @end smallexample
  471. @item db@var{XX}
  472. The full family of pseudo-operations covered here is
  473. @smallexample
  474. dbhi dbls dbcc dbcs dbne dbeq dbvc
  475. dbvs dbpl dbmi dbge dblt dbgt dble
  476. dbf dbra dbt
  477. @end smallexample
  478. Motorola @samp{db@var{XX}} instructions allow word displacements only. When
  479. a word displacement is sufficient, each of these pseudo-operations expands
  480. to the corresponding Motorola instruction. When a word displacement is not
  481. sufficient and long branches are available, when the source reads
  482. @samp{db@var{XX} foo}, @code{@value{AS}} emits
  483. @smallexample
  484. db@var{XX} oo1
  485. bras oo2
  486. oo1:bral foo
  487. oo2:
  488. @end smallexample
  489. If, however, long branches are not available and the @samp{--pcrel} option is
  490. not given, @code{@value{AS}} emits
  491. @smallexample
  492. db@var{XX} oo1
  493. bras oo2
  494. oo1:jmp foo
  495. oo2:
  496. @end smallexample
  497. @item fj@var{XX}
  498. This family includes
  499. @smallexample
  500. fjne fjeq fjge fjlt fjgt fjle fjf
  501. fjt fjgl fjgle fjnge fjngl fjngle fjngt
  502. fjnle fjnlt fjoge fjogl fjogt fjole fjolt
  503. fjor fjseq fjsf fjsne fjst fjueq fjuge
  504. fjugt fjule fjult fjun
  505. @end smallexample
  506. Each of these pseudo-operations always expands to a single Motorola
  507. coprocessor branch instruction, word or long. All Motorola coprocessor
  508. branch instructions allow both word and long displacements.
  509. @end table
  510. @node M68K-Chars
  511. @subsection Special Characters
  512. @cindex special characters, M680x0
  513. @cindex M680x0 line comment character
  514. @cindex line comment character, M680x0
  515. @cindex comments, M680x0
  516. Line comments are introduced by the @samp{|} character appearing
  517. anywhere on a line, unless the @option{--bitwise-or} command-line option
  518. has been specified.
  519. An asterisk (@samp{*}) as the first character on a line marks the
  520. start of a line comment as well.
  521. @cindex M680x0 immediate character
  522. @cindex immediate character, M680x0
  523. A hash character (@samp{#}) as the first character on a line also
  524. marks the start of a line comment, but in this case it could also be a
  525. logical line number directive (@pxref{Comments}) or a preprocessor
  526. control command (@pxref{Preprocessing}). If the hash character
  527. appears elsewhere on a line it is used to introduce an immediate
  528. value. (This is for compatibility with Sun's assembler).
  529. @cindex M680x0 line separator
  530. @cindex line separator, M680x0
  531. Multiple statements on the same line can appear if they are separated
  532. by the @samp{;} character.