It's not urgent, as it concerns so far only the exotic case that somebody wants to squeeze a macro into a multiple commands line. Here is a source in case somebody is interested.
include \masm32\include\masm32rt.inc
mcs MACRO args:VARARG
Local isL, isR, isQ
isR=0
While 1
isL=isR+1
isR INSTR isL, <args>, <#>
if isR
% echo EXE @SubStr(<args>, isL, isR-isL)
@SubStr(<args>, isL, isR-isL) ; Watcom: emits <inc ebx> instead of inc ebx
else
@SubStr(<args>, isL) ; last element in the list
EXITM
endif
ENDM
ENDM
.code
start:
mov eax, 12345
print str$(eax), 13, 10
int 3
mcs xor ebx, ebx#<inc ebx>#cmp ebx, 20 ; builds with ML, code OK
nops 4
mcs mov eax, 12345#<print str$(eax)>#nop ; builds with ML but bad code generated
nops 4
print chr$(13, 10, "---------------", 13, 10)
mcs mov eax, 12345#print str$(eax)#nop ; builds with ML but bad code generated
exit
end start
Strangely enough, print str$() fails always to print the correct result, while MasmBasic Print Str$() succeeds with ML.