-fe ELF output object file format.
-fr Absolute address. Source code is required to have one .org statement.
-fx Atari 800 com/exe/xex output object file format.
+-g Generate source level debug info. Requires BSD COFF object file format.
-i\ *path* Set include-file directory search path.
-l\ *[file[prn]]* Construct and direct assembly listing to the specified file.
--l\ *\*[filename]* Create an output listing file without pagination
+-l\ *\*[filename]* Create an output listing file without pagination.
-m\ *cpu* Switch CPU type
`68000 - MC68000`
-s Warn about unoptimized long branches and applied optimisations.
-u Force referenced and undefined symbols global.
-v Verbose mode (print running dialogue).
--x Turn on debugging mode
+-x Turn on debugging mode.
-yn Set listing page size to n lines.
+-4 Use C style operator precedence.
file\ *[s]* Assemble the specified file.
=================== ===========
file is created. Beware! If an assembly produces no errors, any error file from
a previous assembly is not removed.
+**-g**
+ The **-g** switch causes RMAC to generate source-level debug symbols using the
+ stabs format. When linked with a compatible linker such as RLN, these symbols
+ can be used by source-level debuggers such as rdbjag, wdb, or gdb to step
+ through assembly code line-by-line with all the additional context of labels,
+ macros, constants, register equates, etc. available in the original assembly
+ listings rather than relying on the simple disassembly or raw machine code
+ available when stepping through instruction-by-instruction. This option only
+ works with the BSD COFF object file format, as the others do not use the
+ a.out-style symbol tables required by stabs, and RMAC does not currently
+ support placing stabs debug symbols in their own dedicated section in ELF
+ format object files.
+
**-i**
The **-i** switch allows automatic directory searching for include files. A list of
semi-colon seperated directory search paths may be mentioned immediately
space), sets the number of lines in a page. RMAC will produce *N* lines
before emitting a form-feed. If *N* is missing or less than 10 an error message is
generated.
+**-4**
+ Use C style order of precedence in expressions. See `Order of Evaluation`_ for more
+ information.
`Using RMAC`_
===============
character codes. Watch out for GEMDOS path names in ASCII constants -
you will have to convert them to double-backslashes.
* Expression evaluation is done left-to-right without operator precedence. Use parentheses to
- force the expression evaluation as you wish.
+ force the expression evaluation as you wish. Alternatively, use the **-4** switch to switch
+ to C style precedence. For more information refer to `Order of Evaluation`_.
* Mark your segments across files.
Branching to a code segment that could be identified as BSS will cause a "Error: cannot initialize non-storage (BSS) section"
* In 68020+ mode **Zan** and **Zri** (register suppression) is not supported.
Thus the expression "1+2*3" evaluates to 9, not 7. However, precedence may be
forced with parenthesis (**()**) or square-brackets (**[]**).
+All the above behavior is the default. However if the command line switch **-4**
+is used, then C style of operator precedence is enforced. The following list
+shows the order of precedence in this mode, from lowest to highest:
+
+ * bitwise XOR ^
+
+ * bitwise OR |
+
+ * bitwise AND &
+
+ * relational = < <= >= > !=
+
+ * shifts << >>
+
+ * sum + -
+
+ * product * /
+
`Types`_
'''''''''
Expressions belong to one of three classes: undefined, absolute or relocatable. An
=========== ==============================================
* All binary operators have the same precedence:
- expressions are evaluated strictly left to right.
+ expressions are evaluated strictly left to right,
+ with the exception of the **-4** switch. For more information
+ refer to `Order of Evaluation`_.
* Division or modulo by zero yields an assembly error.
**.equr** *expression*
- Allows you to name a register. This is only implemented for GPU/DSP
- code sections. For example:
+ Allows you to name a register. For example:
::
+ .gpu
Clipw .equr r19
. . .
add ClipW,r0 ; ClipW actually is r19
The expression has an undefined value because of a forward reference, or an
undefined or external symbol.
-**unimplemented addressing mode**
-
- You tried to use 68020 "square-bracket" notation for a 68020 addressing mode.
- RMAC does not support 68020 addressing modes.
-
**unimplemented directive**
You have found a directive that didn't appear in the documentation. It doesn't