簡體   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