mon.s 696 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. .define .mon
  2. .sect .text
  3. .sect .rom
  4. .sect .data
  5. .sect .bss
  6. .sect .text
  7. .sect .text
  8. .mon:
  9. cmpd 1,4(sp)
  10. beq 1f
  11. cmpd 3,4(sp)
  12. beq 3f
  13. cmpd 4,4(sp)
  14. beq 4f
  15. cmpd 54,4(sp)
  16. beq 5f
  17. movd .add1, tos
  18. jsr @.prstr
  19. movd 4(sp), tos
  20. jsr @.print
  21. movd .add2, tos
  22. jsr @.prstr
  23. ret 4
  24. 1: jump @.stop
  25. 3: save [r0,r1,r2,r3]
  26. movd 3,r0
  27. movd 28(sp),r1
  28. movd 32(sp),r2
  29. movd 0,r3
  30. svc
  31. movd r2, 32(sp)
  32. movd 0,28(sp)
  33. restore [r0,r1,r2,r3]
  34. ret 8
  35. 4: save [r0,r1,r2,r3]
  36. movd 4,r0
  37. movd 28(sp),r1
  38. movd 32(sp),r2
  39. movd 0,r3
  40. svc
  41. movd r2, 32(sp)
  42. movd 0,28(sp)
  43. restore [r0,r1,r2,r3]
  44. ret 8
  45. 5: movd 0, 16(sp)
  46. ret 12
  47. .sect .data
  48. .add1: .asciz "monitor call "
  49. .add2: .asciz " not implemented\n"
  50. .align