我有一個 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 是否有任何工具可以做到這一點?
uj5u.com熱心網友回復:
你為什么要這樣做?
如果你想研究Lisp 編譯是如何作業的,只需使用
disassemble:
(disassemble 'isprime)
如果要編譯代碼以備將來使用,請使用compile-file.
uj5u.com熱心網友回復:
“是否可以將其轉換為匯編語言?”
不像現在這樣。它同時具有isprime和is-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 或類似檔案手動壓縮它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/332882.html
