繁体   English   中英

将 lisp 代码转换为汇编语言的工具

[英]Tools to convert lisp code to assembly language

我有一个 lisp 功能。 是否可以将其转换为汇编语言?

(defun isprime (num &optional (d (- num 1))) 
  (if (/= num 1) (or (= d 1)
      (and (/= (rem num d) 0)
           (is-prime  num (- d 1)))) ()))

上面的代码我想把它转换成汇编语言。 我不确定 linux 或 windows 是否有任何工具可以做到这一点?

你为什么要这样做?

如果你想研究Lisp 编译是如何工作的,只需使用disassemble

(disassemble 'isprime)

如果要编译代码以备将来使用,请使用compile-file

“是否可以将其转换为汇编语言?”

不像现在这样。 它同时具有isprimeis-prime 将第二个更正为isprime ,我可以编译并运行isprime函数。 我还添加了一个“main”函数,它执行以下操作:

(defun main ()
   (format t "Prime test on 23 is ~A" (isprime 23)))

我在 TestCompile.lisp 中保存了整个事情

我正在使用 Portacle / Windows 来运行 SBCL / SLIME。 我可以通过左键单击将光标放在函数中,然后使用 Cc Cc 来编译函数。 我可以使用 Cc Ck 编译整个文件,创建一个 FASL 文件。

从 REPL,我现在可以运行(main)

CL-USER> (main)
Prime test on 23 is T
NIL

最后,我决定要创建一个可执行文件。 从包含 LISP 源代码的文件夹中的 PowerShell:

sbcl
(load "TestCompile.lisp")
(sb-ext:save-lisp-and-die "prime.exe" :toplevel #'main :executable t)

./prime.exe

可执行文件在 Windows 上未压缩,并且包含编译器。 可以使用 zip 或类似文件手动压缩它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM