Remember the old late expansion problem when using .elseif somemac(arg)==123
Thanks JJ. It's that.
Forcing expansion solve the AsmC problem (in XMenu.inc):
% .elseif [xbx].$Obj(XMenuItem).dType == MENU_TYPE_SIDEBAR
Since the goal was to write code that can be compiled for x86 and x64
The better practice in 32 bit is to use push and pop because there is few registers (if you don't need to load a value in a register). In 64 bit you have to use a register. The dual code have to use both, just taking care that in 64 bit registers in use are not trashed (rax,rbx,rcx,etc).
R8 and r9 are used to pass arguments. R14 and r15 are prefered for some procedures (see Hutch code) and registers with same name have especific use in ARM. That left r10...r13 for choice...
Not very elegant, but I put in system.inc the old m2m for 32 bitness and the new for 64 but using r10 instead of rax.