LCC(意指“本地C编译器”或“小型C编译器”)是一种为ANSI C编程语言而设的小型可重定向编译器英语Retargeting。虽然其源代码以免费方式供个人使用,[2]但据一般定义而言,它并非一款开源自由软件,皆因LCC衍生的产品可能为非卖品(即使不是衍生自LCC的元件或会供出售)。[1]该编译器由克里斯·弗雷泽(Chris Fraser)及大卫·汉森英语David Hanson (computer scientist)开发。

Quick Facts 开发者, 首次发布 ...
LCC
开发者大卫·汉森与克里斯·弗雷泽
首次发布1994年,​30年前​(1994
当前版本4.2(2002年9月4日,​22年前​(2002-09-04
编程语言C
操作系统跨平台
类型编译器
许可协议LCC授权[1]
网站drh.github.io/lcc/
Close

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]

参见

参考资料

参考书目

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.