=====================
Reference Manual
================
-version 2.0.8
-=============
+version 2.0.21
+==============
© and notes
===========
disclaims liability for changes, errors or omissions.*
-*Copyright © 2011-2019, Reboot*
+*Copyright © 2011-2020, Reboot*
*All rights reserved.*
-o\ *file[.o]* Direct object code output to the specified file.
+/~oall Turn all optimisations on/off
-+o\ *0-9* Enable specific optimisation
-~o\ *0-9* Disable specific optimisation
++o\ *0-10*/*p* Enable specific optimisation
+~o\ *0-10*/*p* Disable specific optimisation
`0: Absolute long adddresses to word (on by default)`
`4: lea to addq`
- `5: Base displacement ([bd,An,Xn],od) etc to ([An,Xn],od)`
+ `5: 68020+ Absolute long base/outer displacement to word`
`6: Convert null short branches to NOP`
`9: Convert adda.w/l #x,Dy to lea x(Dy),Dy`
- 'p: Enforce PC relative'
+ `p: Force PC-Relative mode (alternative: o10)`
-p Produce an executable (**.prg**) output file.
-ps Produce an executable (**.prg**) output file with symbols.
-px Produce an executable (**.prg**) output file with extended symbols.
**~** Tilde: bitwise not (l's complement).
**^^defined** *symbol* True if symbol has a value.
**^^referenced** *symbol* True if symbol has been referenced.
-**^^streq** *stringl*,*string2* True if the strings are equal.
+**^^streq** *stringl*, *string2* True if the strings are equal.
**^^macdef** *macroName* True if the macro is defined.
**^^abscount** Returns the size of current .abs section
**^^filesize** *string_filename* Returns the file size of supplied filename
lea string,a0 ; AO -> message
jsr debug ; print a message
- its ; and return
+ rts ; and return
string: dc.b "Help me, Spock!",0 ; (the message)
.
.
.
- .iif ^^defined debug, .include "debug.s"
+ .iif ^^referenced debug, .include "debug.s"
The **jsr** statement references the symbol debug. Near the end of the source file, the
"**.iif**" statement includes the file "**debug.s**" if the symbol debug was referenced.
* All optimisations are turned off for any source line that has an exclamation mark
(*!*) on their first column.
-
+
+ * Optimisation switches 0, 1 and 2 are turned on by default for legacy reasons.
+ All other levels are off by default. (refer to section `The Command Line`_
+ for a description of all the switches).
+
+ * Optimisation warnings are off by default. Invoke RMAC with the *-s* switch to
+ turn on warnings in console and listing output.
+
+ * In DSP56001 mode size optimisations are on by default. Currently there is no
+ way to disable this behaviour.
+
* In GPU/DSP code sections, you can use JUMP (Rx) in place of JUMP T, (Rx) and JR
- (Rx) in place of JR T,(Rx).
+ (Rx) in place of JR T,(Rx).
* RMAC tests all GPU/DSP restrictions and corrects them wherever possible (such as
- inserting a NOP instruction when needed).
+ inserting a NOP instruction when needed).
* The *(Rx+N)* addressing mode for GPU/DSP instructions is optimized to *(Rx)*
when *N* is zero.
The following sections list warnings, errors and fatal errors in alphabetical
order, along with a short description of what may have caused the problem.
-.. [3] If you come across an internal error, we would appreciate it if you would contact Atari Technical Support and let us know about the problem.
+.. [3] If you come across an internal error, we would appreciate it if you would contact the rmac development team and let us know about the problem.
`Warnings`_
'''''''''''
**unknown symbol following ^^**
- You followed a ^^ with something other than one of the names defined, ref-
- erenced or streq.
+ You followed a ^^ with something other than one of the names defined, referenced
+ or streq.
**unsupported 68020 addressing mode**
- The assembler saw a 68020-type addressing mode. RMAC does not assem-
- ble code for the 68020 or 68010.
+ The assembler saw a 68020-type addressing mode. RMAC does not assemble
+ code for the 68020 or 68010.
**unterminated string**