test.S 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. .macro m param
  2. .if \param
  3. .macro inner
  4. mov r0, #1
  5. .endm
  6. .else
  7. .macro inner
  8. mov r0, #0
  9. .endm
  10. .endif
  11. inner
  12. mov r1, #\param
  13. .purgem inner
  14. .endm
  15. m 1
  16. m 0
  17. .irpc i, 0123
  18. mov r1, #\i
  19. .iflt \i-2
  20. mov r2, #42
  21. .else
  22. mov r3, #42
  23. .endif
  24. .endr
  25. .irpc i, 01
  26. m \i
  27. .endr
  28. .macro outer
  29. .macro inner
  30. .if VAR1 > 10
  31. mov r4, #42
  32. .endif
  33. .endm
  34. .set VAR1, 5
  35. inner
  36. .set VAR1, 15
  37. inner
  38. .purgem inner
  39. .endm
  40. .if 2 > 1
  41. outer
  42. .endif
  43. .macro argtest1 first, second, third
  44. mov r0, #\first
  45. mov r0, #\second
  46. mov r0, #\third
  47. .endm
  48. .macro argtest2 first second third
  49. mov r1, #\first
  50. mov r1, #\second
  51. mov r1, #\third
  52. .endm
  53. # test for comma between macro name and first parameter
  54. .macro argtest3, first, second, third
  55. mov r0, #\first
  56. mov r0, #\second
  57. mov r0, #\third
  58. .endm
  59. argtest1 1, 2, 3
  60. argtest1 1 2 3
  61. argtest2 1, 2, 3
  62. argtest2 1 2 3
  63. argtest1 1 2 3 + 1
  64. argtest2 1 2 < 1 3
  65. argtest3 1, 2, 3
  66. argtest3 1 2 3
  67. argtest3 1 2 6 / 2
  68. .irpc i, 0123
  69. .irpc j, 0123
  70. mov r\i, #\j
  71. .endr
  72. .endr
  73. .macro alttest param
  74. .if param < 10
  75. mov r0, #param
  76. .endif
  77. .endm
  78. .altmacro
  79. alttest 5
  80. alttest 15
  81. .noaltmacro