LCC (編譯器)
LCC(意指「本地C編譯器」或「小型C編譯器」)是一種為ANSI C編程語言而設的小型可重定向編譯器。雖然其源代碼以免費方式供個人使用,[2]但據一般定義而言,它並非一款開源或自由软件,皆因LCC衍生的產品可能為非賣品(即使不是衍生自LCC的元件或會供出售)。[1]該編譯器由克里斯·弗雷澤(Chris Fraser)及大衛·漢森開發。
開發者 | 大衛·漢森與克里斯·弗雷澤 |
---|---|
首次发布 | 1994年 |
编程语言 | C |
操作系统 | 跨平臺 |
类型 | 編譯器 |
许可协议 | LCC授權[1] |
网站 | drh |
LCC
LCC旨在易於理解,而其文件亦存檔完好(well-documented);其設計於克里斯·弗雷澤及大衛·漢森的著作《A Retargetable C Compiler: Design and Implementation》中有述及。該書包含LCC3.6版本絕大部份的源代碼,而該等代碼是以noweb寫成的一款文學程式(literate program)。截至2011年7月,LCC的最新版本為4.2,但書中大部份內容仍適用於該版本。編譯器於該書出版的主要變化點在於代碼生成器(code-generator)的介面,該介面另述於一份獨立的文件中。[3]
LCC的源代碼約有2萬行,較不少大型編譯器甚短得多。[4]
LCC可為Alpha、SPARC、MIPS及x86等處理器架構生成代碼;另亦有一款能生成微軟通用中间语言的LCC後端。[5]
包含LCC的計畫
Quake 3
id Software推出的id Tech 3引擎依賴於經修改的LCC版本,以將各遊戲模組或第三方模組(mods)的源代碼編譯成基於自身虛擬機器的字节码。[6]這意味著除系统调用和引擎提供的有限文件系统作用域外,這些模組對系統而言並不知情,皆因此舉旨在減低可能因惡意模組編者引起的威脅。另一考慮是基於引擎而編寫的遊戲和模組均可移植而毋須重新編譯;只需將虛擬機器移植至新平台,以確保模組能夠運行。
lcc-win
lcc-win32是一款為Microsoft Windows而設的集成开发环境套裝,當中包含一款LCC的分叉。市場上亦同時存在一款名為「lcc-win64」的amd64 對應版本,於2012年4月15日推出。[7]
授權
LCC可供個人免費使用,並可重新分發(前提是需於所有分發媒體和產品文檔中鳴謝該軟體)。LCC授權在多種情況下依賴於範例。LCC不能轉售圖利,但可包含於其他用以圖利的軟體當中,鑒於LCC自身是以免費方式分發。用家可透過聯絡艾迪生韦斯利取得按用戶或無限使用的許可,特別是對於C++等語言的編譯器而言,C編譯器或成為其工作的一大部份。[1]
參見
- Tiny C Compiler
- 可移植C編譯器
- Small-C
參考資料
- . [2011-07-05]. (原始内容存档于2019-04-08) (英语).
- . [2022-04-01]. (原始内容存档于2022-05-11) (英语).
- Fraser, Christopher W.; Hanson, David R. (PDF). Microsoft Research. July 2001 [2011-07-05]. Technical Report MSR-TR-2001-64. (原始内容 (PDF)存档于2008-10-12) (英语).
- Sao-Jie Chen, Guang-Huei Lin, Pao-Ann Hsiung, Yu-Hen Hu. "Hardware software co-design of a multimedia SOC platform". Section 5.6.1: LCC Compiler Infrastructure.
- Hanson, David R. (PDF). Microsoft Research. March 2004 [2012-07-22] (美国英语).
- . (原始内容存档于2008-05-12).
- . lcc-win32.services.net. [2022-04-01]. (原始内容存档于2021-11-26) (英语).
- . www.smorgasbordet.com. [2022-04-01]. (原始内容存档于2022-05-06) (英语).
- . [2013-11-06]. (原始内容存档于2012-09-14) (英语).