LccWin32
   HOME

TheInfoList



OR:

LCC ("Local C Compiler" or "Little C Compiler") is a small,
retargetable compiler In software engineering, retargeting is an attribute of software development tools that have been specifically designed to generate code for more than one computing platform. Compilers A retargetable compiler is a compiler that has been designed ...
for the
ANSI C ANSI C, ISO C, and Standard C are successive standards for the C programming language published by the American National Standards Institute (ANSI) and ISO/IEC JTC 1/SC 22/WG 14 of the International Organization for Standardization (ISO) and th ...
programming language. Although its source code is available at no charge for personal use, it is not open-source or
free software Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, no ...
according to the usual definitions because products derived from LCC may not be sold, although components not derived from LCC may be sold. It was developed by
Chris Fraser Christopher Neil Fraser (born July 1974) is a British-born Australian businessman. Born in the UK and brought up in Australia, Fraser was an investment banker, before becoming chief executive (CEO) of Sirius Minerals. Fraser was born in Yeovil, ...
and David Hanson.


LCC

LCC is intended to be very simple to understand and is well-documented; its design is described in Fraser and Hanson's book ''A Retargetable C Compiler: Design and Implementation''. The book includes most of the source code for version 3.6 of the compiler, which was written as a literate program using
noweb Noweb, stylised in lowercase as noweb, is a literate programming tool, created in 1989–1999 by Norman Ramsey, and designed to be simple, easily extensible and language independent. As in WEB and CWEB, the main components of Noweb are two prog ...
. As of July 2011 the current version of LCC is 4.2, but much of the book still applies to this version. The major change since the book was published is in the code-generator interface, which is described in a separate document. The source code for LCC is around 20,000 lines, which is much smaller than many major compilers. LCC can generate code for several processor architectures, including Alpha,
SPARC SPARC (Scalable Processor Architecture) is a reduced instruction set computer (RISC) instruction set architecture originally developed by Sun Microsystems. Its design was strongly influenced by the experimental Berkeley RISC system develope ...
, MIPS, and
x86 x86 (also known as 80x86 or the 8086 family) is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel based on the Intel 8086 microprocessor and its 8088 variant. The 8086 was intr ...
; there is also an LCC backend that generates Microsoft's
Common Intermediate Language Common Intermediate Language (CIL), formerly called Microsoft Intermediate Language (MSIL) or Intermediate Language (IL), is the intermediate language binary instruction set defined within the Common Language Infrastructure (CLI) specification. ...
.


Projects incorporating LCC


Quake 3

id Software id Software LLC () is an American video game developer based in Richardson, Texas. It was founded on February 1, 1991, by four members of the computer company Softdisk: game programmer, programmers John Carmack and John Romero, game designer T ...
's
id Tech 3 id Tech 3, popularly known as the ''Quake III Arena'' engine, is a game engine developed by id Software for their video game ''Quake III Arena''. It has been adopted by numerous games. During its time, it competed with the Unreal Engine; bot ...
engine An engine or motor is a machine designed to convert one or more forms of energy into mechanical energy. Available energy sources include potential energy (e.g. energy of the Earth's gravitational field as exploited in hydroelectric power ...
relies on a modified version of LCC to compile the source code of each game module or third-party mod into
bytecode Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references (norma ...
targeting its
virtual machine In computing, a virtual machine (VM) is the virtualization/ emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized h ...
. This means that modules are oblivious to the system beyond the
system call In computing, a system call (commonly abbreviated to syscall) is the programmatic way in which a computer program requests a service from the operating system on which it is executed. This may include hardware-related services (for example, acc ...
s and limited file system scope offered by the engine, which is intended to reduce the threat posed by malicious mod authors. Another consideration is that games and mods written for the engine are
portable Portable may refer to: General * Portable building, a manufactured structure that is built off site and moved in upon completion of site and utility work * Portable classroom, a temporary building installed on the grounds of a school to provide ...
without recompilation; only the virtual machine needs to be
ported In software engineering, porting is the process of adapting software for the purpose of achieving some form of execution in a computing environment that is different from the one that a given program (meant for such execution) was originally desi ...
to new platforms in order to execute the modules.


lcc-win

lcc-win32 is an
integrated development environment An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools ...
package for Microsoft Windows which includes a
fork In cutlery or kitchenware, a fork (from la, furca 'pitchfork') is a utensil, now usually made of metal, whose long handle terminates in a head that branches into several narrow and often slightly curved tine (structural), tines with which one ...
of LCC. An
amd64 x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit version of the x86 instruction set, first released in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging m ...
counterpart named lcc-win64 exists, which has been available since April 15, 2012.


Pelles C

Pelles C's compiler is a heavily modified version of LCC providing C11 (C standard revision), C11 as well as C17 (C standard revision), C17 support, amd64 support, additional optimisation techniques such as inline expansionPelles C Overview
/ref> and an Integrated development environment, IDE


Mathworks

For 32-bit Windows machines, Lcc is used as a default if no other compiler is installed for MathWorks MATLAB and related products.


License

LCC is free for personal use and may be redistributed provided all distribution media and product documentation acknowledges it. The LCC license relies on examples in multiple cases. LCC may not be sold for profit, but it may be included with other software that is sold for profit, provided LCC itself is distributed for free. Per user and unlimited use licenses are available by contacting Addison-Wesley, in particular for compilers of languages such as C++ for which a C compiler may constitute much of its work.


See also

* Tiny C Compiler * Portable C compiler * Small-C *Comparison of integrated development environments#C/C++, Comparison of integrated development environments


References


External links


Official Pelles C IDE homepage


Bibliography

* {{CProLang C (programming language) compilers