testutils.inc 947 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # MACRO: exit
  2. .macro exit nr
  3. mov \nr, d1;
  4. # Trap function 1: exit().
  5. mov 1, d0;
  6. syscall;
  7. .endm
  8. # MACRO: pass
  9. # Write 'pass' to stdout and quit
  10. .macro pass
  11. # Trap function 5: write().
  12. mov 5, d0;
  13. # Use stdout.
  14. mov 1, d1;
  15. # Point to the string.
  16. mov 1f, a0;
  17. mov a0, (12, sp);
  18. # Number of bytes to write.
  19. mov 5, d3;
  20. mov d3, (16, sp);
  21. # Trigger OS trap.
  22. syscall;
  23. exit 0
  24. .data
  25. 1: .asciz "pass\n"
  26. .endm
  27. # MACRO: fail
  28. # Write 'fail' to stdout and quit
  29. .macro fail
  30. # Trap function 5: write().
  31. mov 5, d0;
  32. # Use stdout.
  33. mov 1, d1;
  34. # Point to the string.
  35. mov 1f, a0;
  36. mov a0, (12, sp);
  37. # Number of bytes to write.
  38. mov 5, d3;
  39. mov d3, (16, sp);
  40. # Trigger OS trap.
  41. syscall;
  42. exit 0
  43. .data
  44. 1: .asciz "fail\n"
  45. .endm
  46. # MACRO: start
  47. # All assembler tests should start with a call to "start"
  48. .macro start
  49. .data
  50. .global _stack
  51. _stack:
  52. .rept 8
  53. .long 0
  54. .endr
  55. .text
  56. .global _start
  57. _start:
  58. mov _stack, a0;
  59. mov a0, sp;
  60. .endm