2015-11-16 26 views
3

我有興趣瞭解程序員如何在純Common Common Lisp中運行(或者,在特定於實現的擴展中失敗)。谷歌還沒有找到我有關這方面的很多信息,所以我想聽聽專家們的說法。 This post提到了SBCL的一個特性來定義作者稱之爲「虛擬操作符」的內容,但是搜索「常見的lisp虛擬操作符」並沒有產生太多的效果。作者還提到要找到有關它的文檔是多麼困難。對於其他實現是否存在類似的系統,標準中是否有任何基礎(儘管考慮到這種特性主要用於編寫ISA特定的代碼,可移植性對於用戶的優先級應該不會太高) ,哪裏可以找到像這樣的功能的文檔?通用lisp中的程序集生成宏

找到一種將「可編程編程語言」概念擴展爲低級代碼的方法(尤其是對於效率非常重要的領域,以及用C或彙編語言編寫的其他庫可能不可用) 。

+4

接口,它可以看看這裏:http://www.pvk.ca/Blog/2014/08/16/how-to-define-新-INT rinsics-in-sbcl /下面是一個示例用法:https://github.com/sionescu/swap-bytes/blob/master/sbcl-vops.lisp –

+0

@VsevolodDyomkin您是否發現過類似的其他常見lisp實現? – Reepca

+2

我沒在積極尋找。另外,並非所有CL實現都生成本地代碼(例如,某些編譯爲C或Java) –

回答

2

這是非常具體的實現,根本不是可移植的。

是的,SBCL使用VOP,但其他實現有完全不同的編譯目標。

如果你打算去一個有點移植的方式低層次,你有兩個途徑:

  • 優化使用宣言,內聯,手動展開等,檢查與disassemble

  • 你的進步外部

    實現一個靜態的斑點,然後用FFI