.macro m param .if \param .macro inner mov r0, #1 .endm .else .macro inner mov r0, #0 .endm .endif inner mov r1, #\param .purgem inner .endm m 1 m 0 .irpc i, 0123 mov r1, #\i .iflt \i-2 mov r2, #42 .else mov r3, #42 .endif .endr .irpc i, 01 m \i .endr .macro outer .macro inner .if VAR1 > 10 mov r4, #42 .endif .endm .set VAR1, 5 inner .set VAR1, 15 inner .purgem inner .endm .if 2 > 1 outer .endif .macro argtest1 first, second, third mov r0, #\first mov r0, #\second mov r0, #\third .endm .macro argtest2 first second third mov r1, #\first mov r1, #\second mov r1, #\third .endm # test for comma between macro name and first parameter .macro argtest3, first, second, third mov r0, #\first mov r0, #\second mov r0, #\third .endm argtest1 1, 2, 3 argtest1 1 2 3 argtest2 1, 2, 3 argtest2 1 2 3 argtest1 1 2 3 + 1 argtest2 1 2 < 1 3 argtest3 1, 2, 3 argtest3 1 2 3 argtest3 1 2 6 / 2 .irpc i, 0123 .irpc j, 0123 mov r\i, #\j .endr .endr .macro alttest param .if param < 10 mov r0, #param .endif .endm .altmacro alttest 5 alttest 15 .noaltmacro