Advertisement
trannus_aran

sicp ch5 wisp machines

May 13th, 2025
9
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. -*- wisp -*-
  2. ;; full-definition
  3. define machine
  4. data-paths
  5. registers
  6. : name a
  7. buttons
  8. : name a<-b
  9. source : register b
  10. : name b
  11. buttons
  12. : name b<-t
  13. source : register b
  14. : name t
  15. buttons
  16. : name t<-r
  17. source : operation rem
  18. operations
  19. : name rem
  20. inputs
  21. register a
  22. register b
  23. : name =
  24. inputs
  25. register b
  26. constant 0
  27. controller
  28. . test-b
  29. test =
  30. branch : label gcd-done
  31. t<-r
  32. a<-b
  33. b<-t
  34. goto : label test-b
  35. . gcd-done
  36.  
  37. ;; abbreviated machine def
  38. define program
  39. quote
  40. ;; pseudo assembly
  41. controller
  42. . test-b ; label
  43. test
  44. op =
  45. reg b
  46. const 0
  47. branch
  48. label gcd-done
  49. assign t
  50. op rem
  51. reg a
  52. reg b
  53. assign a
  54. reg b
  55. assign b
  56. reg t
  57. goto
  58. label test-b
  59. . gcd-done ; label
  60.  
  61.  
  62. define program-compressed
  63. quote
  64. ;; pseudo assembly
  65. controller
  66. . test-b ; label
  67. test (op =) (reg b) (const 0)
  68. branch : label gcd-done
  69. assign t (op rem) (reg a) (reg b)
  70. assign a : reg b
  71. assign b : reg t
  72. goto : label test-b
  73. . gcd-done ; label
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement