=====================
Reference Manual
================
-version 2.0.8
-=============
+version 2.0.18
+==============
© and notes
===========
disclaims liability for changes, errors or omissions.*
-*Copyright © 2011-2019, Reboot*
+*Copyright © 2011-2020, Reboot*
*All rights reserved.*
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.
(*!*) on their first column.
* 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.
// Immediate is between 1 and 8 so let's convert to addq
return m_addq(B16(01010000, 00000000), siz);
if (CHECK_OPTS(OPT_ADDA_LEA))
- if (a0exval > 8)
+ if (a0exval > 8 && (a0exval+0x8000)<0x10000)
{
- // Immediate is larger than 8 so let's convert to lea
+ // Immediate is larger than 8 and word size so let's convert to lea
am0 = ADISP; // Change addressing mode
a0reg = a1reg; // In ADISP a0reg is used instead of a1reg!
+ if (!(inst & (1 << 14)))
+ {
+ // We have a suba #x,AREG so let's negate the value
+ a0exval = -a0exval;
+ }
return m_lea(B16(01000001, 11011000), SIZW);
}
}