[英]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)))) ()))
你為什么要這樣做?
如果你想研究Lisp 編譯是如何工作的,只需使用disassemble
:
(disassemble 'isprime)
如果要編譯代碼以備將來使用,請使用compile-file
。
“是否可以將其轉換為匯編語言?”
不像現在這樣。 它同時具有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 或類似文件手動壓縮它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.