max.ssa 574 B

12345678910111213141516171819202122232425262728293031323334
  1. # find the maximum value
  2. # in a nul-terminated array
  3. # of unsigned bytes
  4. #
  5. # the output is stored in $a
  6. data $arr = { b 10, b -60, b 10, b 100, b 200, b 0 }
  7. export
  8. function $test() {
  9. @start
  10. @loop
  11. %max =w phi @start -1, @new %byt, @old %max
  12. %loc =l phi @start $arr, @new %loc1, @old %loc1
  13. %byt =w loadub %loc
  14. %loc1 =l add 1, %loc
  15. jnz %byt, @iter, @end
  16. @iter
  17. %cmp =w cslew %max, %byt
  18. jnz %cmp, @new, @old
  19. @new
  20. jmp @loop
  21. @old
  22. jmp @loop
  23. @end
  24. storew %max, $a
  25. ret
  26. }
  27. # >>> driver
  28. # extern void test(void);
  29. # int a;
  30. # int main() { test(); return !(a == 200); }
  31. # <<<