AMDasm.lsp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. % This builds a PSL compiler that creates textual assembly code files ...
  2. % For VSL the treatment of file-names written as "$xxx/..." is that a Lisp
  3. % variable called "@xxx" is inspected to find the actual path required.
  4. (setq @psl "../psl/dist")
  5. (setq @psys "../psl/dist/bin/AMD64_ext")
  6. (setq @pl "../psl/dist/lap/AMD64_ext")
  7. (setq @pk "../psl/dist/kernel")
  8. (setq @pxk "../psl/dist/kernel/AMD64_ext")
  9. (setq @pnk "../psl/dist/nonkernel")
  10. (setq @pxnk "../psl/dist/nonkernel/AMD64_ext")
  11. (setq @pnkl "../psl/dist/nonkernel/AMD64_ext/lap")
  12. (setq @pc "../psl/dist/comp")
  13. (setq @pxc "../psl/dist/comp/AMD64_ext")
  14. (setq @pu "../psl/dist/util")
  15. (setq @pxu "../psl/dist/util/AMD64_ext")
  16. (setq @pdist "../psl/dist/distrib")
  17. (setq @pxdist "../psl/dist/distrib/AMD64_ext")
  18. (rdf "psl-support-1.lsp")
  19. (rdf "$pnk/lisp-macros.sl")
  20. (rdf "$pu/defmacro1.sl")
  21. (rdf "$pu/defmacro2.sl")
  22. (rdf "$pu/set1-macros.sl")
  23. (rdf "$pu/set2-macros.sl")
  24. (rdf "$pu/iter-macros.sl")
  25. (rdf "$pu/for-macro.sl")
  26. (rdf "$pu/cond-macros.sl")
  27. (rdf "$pu/numeric-ops.sl")
  28. (rdf "$pnk/easy-non-sl.sl")
  29. (rdf "$pnk/sets.sl")
  30. %(rdf "$pnk/type-error.sl")
  31. % $pu/if.sl defines an IF macro that uses symbols as keywords THEN, ELIF
  32. % and ELSE. It is coded using the NEXT macro from $pnk/loop-macros.sl, but
  33. % if I load that file then it gives a version of FOR that conflicts with
  34. % $pu/for-macro.sl. So I will provide NEXT manually here - not that I think
  35. % that use of it was a good idea!
  36. (dm next (u) % Continue Loop
  37. '(go $loop$))
  38. (rdf "$pu/if.sl")
  39. (rdf "$pu/if-system.sl")
  40. % At least for bootstrapping I need to restore MY version of SPACES
  41. (de spaces (n) % Print n blanks.
  42. (cond
  43. ((zerop n) nil)
  44. (t (princ " ") (spaces (sub1 n)))))
  45. (de intp (x) (and (fixp x) (not (bignump x))))
  46. (flag '(intp) 'lose)
  47. (de flag1 (x y) (flag (list x) y))
  48. (de remflag1 (x y) (remflag (list x) y))
  49. (dm control (x)
  50. (list 'logand (list 'char-code (list 'quote (cadr x))) 31))
  51. (dm cntrl (x)
  52. (list 'logand (list 'char-code (list 'quote (cadr x))) 31))
  53. (de continuableerror (errnum message errorform*)
  54. (progn (errorprintf "***** %l" message)))
  55. (de main ())
  56. % The paths used here suppose that the current directory is the VSL
  57. % one. This is a bit unsatisfactory at present.
  58. (rdf "$pnk/carcdr.sl")
  59. (rdf "$pnk/def-smacro.sl")
  60. (rdf "$pnk/defconst.sl")
  61. (rdf "$pnk/constants.sl")
  62. (rdf "$pnk/eval-when.sl")
  63. (dm bothtimes (x) (cons 'progn (cdr x)))
  64. (dm compiletime (x) (cons 'progn (cdr x)))
  65. (dm loadtime (x) (cons 'progn (cdr x)))
  66. (rdf "$pc/datamachine.sl")
  67. (rdf "$pc/pass-1.sl")
  68. (rdf "$pc/pass-2-3.sl")
  69. (rdf "$pc/pass-1-lap.sl")
  70. (rdf "$pc/anyreg-cmac.sl")
  71. (rdf "$pc/cmacros.sl")
  72. (rdf "$pc/bare-psl.sym")
  73. (rdf "$pc/big-faslend.sl")
  74. (rdf "$pc/comasm.sl")
  75. (rdf "$pc/p1-decls.sl")
  76. (rdf "$pc/p-lambind.sl")
  77. (rdf "$pc/predicates.sl")
  78. (rdf "$pc/pslcomp.sl")
  79. (rdf "$pc/putprint.sl")
  80. (rdf "$pxc/compat.sl")
  81. (rdf "$pxc/sys-consts.sl")
  82. (rdf "$pxc/sys-dm.sl")
  83. (rdf "$pxc/tags.sl")
  84. (rdf "$pxc/AMD64-lap.sl")
  85. (rdf "$pxc/AMD64-cmac.sl")
  86. (rdf "$pxc/AMD64-comp.sl")
  87. (rdf "$pc/faslout.sl")
  88. (rdf "$pxc/AMD64-spec.sl")
  89. % (rdf "$pxc/carcdrnil.sl")
  90. (rdf "$pxc/comp-decls.sl")
  91. (rdf "$pxc/compiler.sl")
  92. (rdf "$pxc/nbittab.sl")
  93. (rdf "$pxc/neweq.sl")
  94. % redefine as macros since VSL doesn't support functions with
  95. % a variable number of arguments.
  96. (dm codeprintf (x) (cons 'fprintf (cons 'codeout* (cdr x))))
  97. (dm dataprintf (x) (cons 'fprintf (cons 'dataout* (cdr x))))
  98. (rdf "$pxc/unixAMD64-lap-to-asm.sl")
  99. (rdf "$pxc/unixAMD64-asm.sl")
  100. (rdf "psl-support-2.lsp")
  101. (preserve)