diff --git a/test/asm/sort-algorithms.asm b/test/asm/sort-algorithms.asm new file mode 100644 index 00000000..34617071 --- /dev/null +++ b/test/asm/sort-algorithms.asm @@ -0,0 +1,47 @@ +MACRO sort_recursive + if _NARG > 0 + def min_i = 1 + for i, 2, _NARG + 1 + if \ < \ + def min_i = i + endc + endr + print strfmt("%d", \) + endc + if _NARG > 1 + print ", " + redef _subsort equs "sort_recursive " + for i, 1, _NARG + 1 + if i != min_i + redef _subsort equs "{_subsort}\," + endc + endr + {_subsort} + else + println + endc +ENDM + +MACRO sort_iterative + for i, 1, _NARG + 1 + def got_{d:i} = 0 + endr + for n, 1, _NARG + 1 + def min_i = 1 + for i, 2, _NARG + 1 + if (\ < \ && !got_{d:i}) || got_{d:min_i} + def min_i = i + endc + endr + def got_{d:min_i} = 1 + print strfmt("%d", \) + if n < _NARG + print ", " + else + println + endc + endr +ENDM + + sort_recursive 16, 0, 16, 5, 1, 18, 3, 14, 19, 4, 6, 13, 17, 7, 11, 8, 15, 10, 12, 9, 2 + sort_iterative 16, 0, 16, 5, 1, 18, 3, 14, 19, 4, 6, 13, 17, 7, 11, 8, 15, 10, 12, 9, 2 diff --git a/test/asm/sort-algorithms.err b/test/asm/sort-algorithms.err new file mode 100644 index 00000000..e69de29b diff --git a/test/asm/sort-algorithms.out b/test/asm/sort-algorithms.out new file mode 100644 index 00000000..e79afb34 --- /dev/null +++ b/test/asm/sort-algorithms.out @@ -0,0 +1,2 @@ +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16, 17, 18, 19 +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16, 17, 18, 19