LCC (編譯器)

LCC(意指「本地C編譯器」或「小型C編譯器」)是一種為ANSI C程式語言而設的小型可重新導向編譯器英語Retargeting。雖然其原始碼以免費方式供個人使用,[2]但據一般定義而言,它並非一款開源自由軟體,皆因LCC衍生的產品可能為非賣品(即使不是衍生自LCC的元件或會供出售)。[1]該編譯器由克里斯·弗雷澤(Chris Fraser)及大衛·漢森英語David Hanson (computer scientist)開發。

LCC
開發者大衛·漢森與克里斯·弗雷澤
首次發布1994年,​30年前​(1994
目前版本4.2(2002年9月4日,​22年前​(2002-09-04
程式語言C
作業系統跨平臺
類型編譯器
許可協定LCC授權[1]
網站drh.github.io/lcc/

LCC

LCC旨在易於理解,而其檔案亦存檔完好(well-documented);其設計於克里斯·弗雷澤及大衛·漢森的著作《A Retargetable C Compiler: Design and Implementation》中有述及。該書包含LCC3.6版本絕大部份的原始碼,而該等代碼是以noweb英語Noweb寫成的一款文學程式(literate program)。截至2011年7月,LCC的最新版本為4.2,但書中大部份內容仍適用於該版本。編譯器於該書出版的主要變化點在於代碼生成器(code-generator)的介面,該介面另述於一份獨立的檔案中。[3]

LCC的原始碼約有2萬行,較不少大型編譯器甚短得多。[4]

LCC可為AlphaSPARCMIPSx86等處理器架構生成代碼;另亦有一款能生成微軟通用中間語言的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]

Pelles C

Pelles C的編譯器是LCC的一款重度修改版本,支援C11C17、amd64,並提供行內展開等額外最佳化技術。[8]

邁斯沃克

在32位元Windows機器中,若沒有為邁斯沃克MATLAB及相關產品安裝其他編譯器,則會以LCC作為預設的編譯器。[9]

授權

LCC可供個人免費使用,並可重新分發(前提是需於所有分發媒體和產品文件中鳴謝該軟體)。LCC授權在多種情況下依賴於範例。LCC不能轉售圖利,但可包含於其他用以圖利的軟體當中,鑒於LCC自身是以免費方式分發。用家可透過聯絡艾迪生韋斯利取得按使用者或無限使用的許可,特別是對於C++等語言的編譯器而言,C編譯器或成為其工作的一大部份。[1]

參見

參考資料

  1. ^ 1.0 1.1 1.2 LCC License. [2011-07-05]. (原始內容存檔於2019-04-08) (英語). 
  2. ^ Official Github Repository. [2022-04-01]. (原始內容存檔於2022-05-11) (英語). 
  3. ^ Fraser, Christopher W.; Hanson, David R. The lcc 4.x Code-Generation Interface (PDF). Microsoft Research. July 2001 [2011-07-05]. Technical Report MSR-TR-2001-64. (原始內容 (PDF)存檔於2008-10-12) (英語). 
  4. ^ 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.
  5. ^ Hanson, David R. Lcc.NET: Targeting the .NET Common Intermediate Language from Standard C (PDF). Microsoft Research. March 2004 [2012-07-22] (美國英語). 
  6. ^ John Carmack's .plan file, 24 July, 1999. (原始內容存檔於2008-05-12). 
  7. ^ LCC-Win: A free compiler system for Windows Operating Systems by Jacob Navia. lcc-win32.services.net. [2022-04-01]. (原始內容存檔於2021-11-26) (英語). 
  8. ^ smorgasbordet - Pelles C. www.smorgasbordet.com. [2022-04-01]. (原始內容存檔於2022-05-06) (英語). 
  9. ^ Build MEX-Files. [2013-11-06]. (原始內容存檔於2012-09-14) (英語). 

參考書目