Knowledge (XXG)

LCC (compiler)

Source 📝

1119: 360:
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
206:. 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. 361:
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.
275:
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
385: 646: 482:
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.
178:
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
1145: 560: 639: 520: 959: 334: 295: 1123: 615: 183: 940: 849: 632: 1058: 194:
LCC is intended to be very simple to understand and is well-documented; its design is described in Fraser and Hanson's book
1030: 1078: 229: 1088: 1073: 779: 68: 1035: 764: 483: 1083: 789: 686: 681: 676: 326: 322: 1063: 774: 722: 655: 564: 97: 926: 901: 944: 886: 524: 179: 163: 906: 170:
programming language. Although its source code is available at no charge for personal use, it is not
276: 199: 171: 198:. The book includes most of the source code for version 3.6 of the compiler, which was written as a 921: 916: 878: 769: 375: 116: 255:
relies on a modified version of LCC to compile the source code of each game module or third-party
987: 752: 256: 209:
The source code for LCC is around 20,000 lines, which is much smaller than many major compilers.
820: 815: 784: 727: 717: 611: 318: 299: 221: 345:
For 32-bit Windows machines, Lcc is used as a default if no other compiler is installed for
330: 128: 104: 931: 891: 799: 370: 264: 949: 1104: 837: 737: 109: 1139: 1007: 997: 936: 604: 458: 303: 175: 17: 977: 742: 495: 310:
counterpart named lcc-win64 exists, which has been available since April 15, 2012.
410: 1068: 272: 268: 252: 245: 712: 691: 36: 346: 249: 213: 496:"Lcc.NET: Targeting the .NET Common Intermediate Language from Standard C" 1012: 1002: 982: 827: 794: 732: 624: 260: 121: 589: 548: 696: 380: 280: 967: 864: 859: 666: 442: 415: 349: 212:
LCC can generate code for several processor architectures, including
167: 1053: 329:
support, amd64 support, additional optimisation techniques such as
992: 972: 896: 844: 832: 537: 307: 217: 203: 267:. This means that modules are oblivious to the system beyond the 854: 628: 671: 225: 437: 142: 279:
without recompilation; only the virtual machine needs to be
321:'s compiler is a heavily modified version of LCC providing 228:; there is also an LCC backend that generates Microsoft's 162:("Local C Compiler" or "Little C Compiler") is a small, 457:
Fraser, Christopher W.; Hanson, David R. (July 2001).
464:. Microsoft Research. Technical Report MSR-TR-2001-64 606:
A Retargetable C Compiler: Design and Implementation
196:
A Retargetable C Compiler: Design and Implementation
1097: 1044: 1021: 958: 877: 808: 751: 705: 137: 127: 115: 103: 93: 67: 45: 35: 603: 283:to new platforms in order to execute the modules. 602:Fraser, Christopher W.; Hanson, David R. (1995). 386:Comparison of integrated development environments 640: 8: 30: 757: 647: 633: 625: 521:"John Carmack's .plan file, 24 July, 1999" 29: 405: 403: 401: 459:"The lcc 4.x Code-Generation Interface" 397: 538:lcc-win: A Compiler system for Windows 7: 1146:C (programming language) compilers 296:integrated development environment 25: 1118: 1117: 494:Hanson, David R. (March 2004). 74:4.2 / September 4, 2002 590:Official Pelles C IDE homepage 1: 438:"Official Github Repository" 230:Common Intermediate Language 41:Dave Hanson and Chris Fraser 51:; 30 years ago 1162: 1031:Compatibility of C and C++ 236:Projects incorporating LCC 1113: 760: 662: 89: 63: 1036:Comparison with Pascal 656:C programming language 352:and related products. 76:; 22 years ago 164:retargetable compiler 18:Christopher W. Fraser 567:on 14 September 2012 501:. Microsoft Research 376:Portable C compiler 32: 610:. Addison-Wesley. 1133: 1132: 873: 872: 561:"Build MEX-Files" 549:Pelles C Overview 302:which includes a 300:Microsoft Windows 157: 156: 16:(Redirected from 1153: 1121: 1120: 758: 753:Standard library 649: 642: 635: 626: 621: 609: 577: 576: 574: 572: 563:. Archived from 557: 551: 546: 540: 535: 529: 528: 523:. Archived from 517: 511: 510: 508: 506: 500: 491: 485: 480: 474: 473: 471: 469: 463: 454: 448: 447: 434: 428: 427: 425: 423: 407: 331:inline expansion 200:literate program 153: 150: 148: 146: 144: 105:Operating system 84: 82: 77: 59: 57: 52: 33: 21: 1161: 1160: 1156: 1155: 1154: 1152: 1151: 1150: 1136: 1135: 1134: 1129: 1109: 1093: 1046: 1040: 1024:other languages 1023: 1022:Comparison with 1017: 954: 892:Borland Turbo C 869: 809:Implementations 804: 747: 701: 658: 653: 618: 601: 598: 586: 581: 580: 570: 568: 559: 558: 554: 547: 543: 536: 532: 519: 518: 514: 504: 502: 498: 493: 492: 488: 481: 477: 467: 465: 461: 456: 455: 451: 436: 435: 431: 421: 419: 409: 408: 399: 394: 371:Tiny C Compiler 367: 358: 343: 316: 289: 265:virtual machine 243: 238: 192: 141: 85: 80: 78: 75: 55: 53: 50: 46:Initial release 28: 23: 22: 15: 12: 11: 5: 1159: 1157: 1149: 1148: 1138: 1137: 1131: 1130: 1128: 1127: 1114: 1111: 1110: 1108: 1107: 1105:Dennis Ritchie 1101: 1099: 1095: 1094: 1092: 1091: 1086: 1081: 1076: 1071: 1066: 1061: 1056: 1050: 1048: 1042: 1041: 1039: 1038: 1033: 1027: 1025: 1019: 1018: 1016: 1015: 1010: 1005: 1000: 995: 990: 985: 980: 975: 970: 964: 962: 956: 955: 953: 952: 947: 934: 929: 924: 919: 914: 909: 904: 899: 894: 889: 883: 881: 875: 874: 871: 870: 868: 867: 862: 857: 852: 847: 842: 841: 840: 830: 825: 824: 823: 812: 810: 806: 805: 803: 802: 797: 792: 787: 782: 780:Dynamic memory 777: 772: 767: 761: 755: 749: 748: 746: 745: 740: 735: 730: 725: 720: 715: 709: 707: 703: 702: 700: 699: 694: 689: 684: 679: 674: 669: 663: 660: 659: 654: 652: 651: 644: 637: 629: 623: 622: 616: 597: 594: 593: 592: 585: 584:External links 582: 579: 578: 552: 541: 530: 527:on 2008-05-12. 512: 486: 475: 449: 429: 396: 395: 393: 390: 389: 388: 383: 378: 373: 366: 363: 357: 354: 342: 339: 315: 312: 288: 285: 263:targeting its 242: 239: 237: 234: 191: 188: 155: 154: 139: 135: 134: 131: 125: 124: 119: 113: 112: 110:Cross-platform 107: 101: 100: 95: 91: 90: 87: 86: 73: 71: 69:Stable release 65: 64: 61: 60: 47: 43: 42: 39: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 1158: 1147: 1144: 1143: 1141: 1126: 1125: 1116: 1115: 1112: 1106: 1103: 1102: 1100: 1096: 1090: 1087: 1085: 1082: 1080: 1077: 1075: 1072: 1070: 1067: 1065: 1062: 1060: 1057: 1055: 1052: 1051: 1049: 1043: 1037: 1034: 1032: 1029: 1028: 1026: 1020: 1014: 1011: 1009: 1008:Visual Studio 1006: 1004: 1001: 999: 998:GNOME Builder 996: 994: 991: 989: 986: 984: 981: 979: 976: 974: 971: 969: 966: 965: 963: 961: 957: 951: 948: 946: 942: 938: 937:Visual Studio 935: 933: 930: 928: 925: 923: 920: 918: 915: 913: 910: 908: 905: 903: 900: 898: 895: 893: 890: 888: 885: 884: 882: 880: 876: 866: 863: 861: 858: 856: 853: 851: 848: 846: 843: 839: 836: 835: 834: 831: 829: 826: 822: 819: 818: 817: 814: 813: 811: 807: 801: 798: 796: 793: 791: 788: 786: 783: 781: 778: 776: 773: 771: 768: 766: 763: 762: 759: 756: 754: 750: 744: 741: 739: 736: 734: 731: 729: 726: 724: 721: 719: 716: 714: 711: 710: 708: 704: 698: 695: 693: 690: 688: 685: 683: 680: 678: 675: 673: 670: 668: 665: 664: 661: 657: 650: 645: 643: 638: 636: 631: 630: 627: 619: 617:0-8053-1670-1 613: 608: 607: 600: 599: 595: 591: 588: 587: 583: 566: 562: 556: 553: 550: 545: 542: 539: 534: 531: 526: 522: 516: 513: 497: 490: 487: 484: 479: 476: 460: 453: 450: 445: 444: 439: 433: 430: 418: 417: 412: 411:"LCC License" 406: 404: 402: 398: 391: 387: 384: 382: 379: 377: 374: 372: 369: 368: 364: 362: 355: 353: 351: 348: 340: 338: 336: 332: 328: 324: 320: 313: 311: 309: 305: 301: 297: 293: 286: 284: 282: 278: 274: 270: 266: 262: 258: 254: 251: 247: 240: 235: 233: 231: 227: 223: 219: 215: 210: 207: 205: 201: 197: 189: 187: 185: 181: 177: 176:free software 173: 169: 165: 161: 152: 140: 136: 132: 130: 126: 123: 120: 118: 114: 111: 108: 106: 102: 99: 96: 92: 88: 72: 70: 66: 62: 48: 44: 40: 38: 34: 19: 1122: 978:Code::Blocks 950:Watcom C/C++ 911: 738:Preprocessor 718:Header files 605: 596:Bibliography 569:. Retrieved 565:the original 555: 544: 533: 525:the original 515: 503:. Retrieved 489: 478: 466:. Retrieved 452: 441: 432: 420:. Retrieved 414: 359: 344: 325:as well as 317: 298:package for 291: 290: 271:and limited 269:system calls 244: 211: 208: 195: 193: 184:David Hanson 180:Chris Fraser 159: 158: 37:Developer(s) 1069:Objective-C 850:Windows CRT 306:of LCC. An 273:file system 246:id Software 172:open-source 133:LCC License 1045:Descendant 917:Norcroft C 743:Data types 692:Embedded C 571:6 November 392:References 94:Written in 81:2002-09-04 27:C compiler 1047:languages 879:Compilers 821:libhybris 723:Operators 713:Functions 347:MathWorks 341:MathWorks 292:lcc-win32 250:id Tech 3 1140:Category 1124:Category 1098:Designer 1013:NetBeans 1003:KDevelop 983:CodeLite 828:dietlibc 795:Variadic 770:File I/O 706:Features 365:See also 319:Pelles C 314:Pelles C 277:portable 261:bytecode 166:for the 122:Compiler 988:Eclipse 941:Express 697:MISRA C 505:22 July 381:Small-C 356:License 333:and an 287:lcc-win 241:Quake 3 145:.github 138:Website 129:License 79: ( 54: ( 968:Anjuta 865:uClibc 860:Newlib 838:EGLIBC 816:Bionic 785:String 733:Syntax 728:String 667:ANSI C 614:  468:5 July 443:GitHub 422:5 July 416:GitHub 350:MATLAB 294:is an 281:ported 253:engine 224:, and 202:using 168:ANSI C 1079:Limbo 993:Geany 973:CLion 897:Clang 845:klibc 833:glibc 800:POSIX 499:(PDF) 462:(PDF) 308:amd64 259:into 218:SPARC 214:Alpha 204:noweb 1089:Vala 1074:Alef 960:IDEs 927:SDCC 855:musl 790:Time 775:Math 765:Char 612:ISBN 573:2013 507:2012 470:2011 424:2011 304:fork 222:MIPS 182:and 149:/lcc 117:Type 56:1994 49:1994 1054:C++ 945:C++ 932:TCC 922:PCC 912:LCC 907:ICC 902:GCC 887:ACK 687:C23 682:C17 677:C11 672:C99 335:IDE 327:C17 323:C11 257:mod 248:'s 226:x86 190:LCC 174:or 160:LCC 147:.io 143:drh 31:LCC 1142:: 1084:Go 1059:C# 943:, 939:, 440:. 413:. 400:^ 337:. 232:. 220:, 216:, 186:. 1064:D 648:e 641:t 634:v 620:. 575:. 509:. 472:. 446:. 426:. 151:/ 98:C 83:) 58:) 20:)

Index

Christopher W. Fraser
Developer(s)
Stable release
C
Operating system
Cross-platform
Type
Compiler
License
drh.github.io/lcc/
retargetable compiler
ANSI C
open-source
free software
Chris Fraser
David Hanson
literate program
noweb
Alpha
SPARC
MIPS
x86
Common Intermediate Language
id Software
id Tech 3
engine
mod
bytecode
virtual machine
system calls

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.