Compiler Comparison
The following charts show the combined results from several volunteers who have provided this data. CCS has not
verified this information. Anyone who wishes to contribute their comments or product reviews to this page, please
forward information to marketing@ccsinfo.com.
Jump To Menu: · CCS · Microchip · Hi-tech · IAR · Forest Electronics · B Knudsen · Sourceboost
|   | CCS - C v.4 | Microchip C18 v.3.00/C30 v.2.05 | HI-TECH PICC v.9.50 | IAR Embedded Workbench v.2.21 |
| Section 1: | ||||
| Supported Parts | PIC 12-bit (10F2xx, etc.) PIC 14-bit (16F877A, etc.) PIC 16-bit (18F4520, etc.) PIC 24-bit (dsPIC30F2010, PIC24Fxx, etc.) |
C18 = PIC 16-bit (18F4520, etc.) C30 = PIC 24-bit (dsPIC, PIC24, etc.)       |
PICC = PIC 12-bit (10F2xx, etc.) PICC = PIC 14-bit (16F877A, etc.) PICC18 = PIC 16-bit (18F4520, etc.) dsPICC = PIC 24-bit (dsPIC, PIC24, etc.) |
PIC16/17= PIC 14-bit (16F877A, etc.) PIC18 = PIC 16-bit (18F4520, etc.) dsPIC = PIC 24-bit (dsPIC, PIC24, etc.)   |
| Platforms Available | Windows, Linux   |
Windows   |
Windows, Linux, Mac OS, Sun | Windows   |
| Price | License: 12-bit = $50 14-bit = $150 16-bit = $200 24-bit = $250 12-bit, 14-bit + IDE = $350 12-bit, 14-bit, 16-bit + IDE = $500 24-bit + IDE = $350 12-bit, 14-bit, 16-bit, 24-bit + IDE = $600 Maintenance: (30-60 days included) 12-bit = $40/year 14-bit = $100/year 16-bit = $125/year 24-bit = $150/year 12-bit, 14-bit + IDE = $200/year 12-bit, 14-bit, 16-bit + IDE = $250/year 24-bit + IDE = $175/year 12-bit, 14-bit, 16-bit, 24-bit + IDE = $275/year |
License: 16-bit + IDE = $495 24-bit + IDE = $895                               |
License: 12-bit, 14-bit + IDE = $950 16-bit + IDE = $950 24-bit + IDE = $1,150 16-bit, 24-bit + IDE = $2,400 Support: 12-bit, 14-bit + IDE = $250 16-bit + IDE = $250 24-bit + IDE = $250 16-bit, 24-bit + IDE = $250   |
License: 14-bit + IDE = $2,695 16-bit + IDE = $2,695 24-bit + IDE = $2,695        Includes: 1-year Warranty                 |
| H/W Development Kits Available | Yes | Yes | No | No |
| Integrates Into MPLAB | Yes | Yes | Yes | Yes |
| Section 2: | ||||
| Automatic RAM Allocation (Some compilers require you to specify which bank to allocate variable) |
Yes | No | No | No |
| Data Types | Integers:
int1 int8 int16 int32 Float: 32-bit   |
Integers:
int8 int16 int32     Float: 32-bit for C18/C30 64-bit for C30 |
Integers:
int1 int8 int16 int32 Float: 24-bit 32-bit |
Integers:
int8 int16 int32     Float: 32-bit   |
| Standard C Constants | Yes | Yes | Yes | Yes |
| Standard C Statements | Yes | Yes | Yes | Yes |
| Standard C Operators | Yes | Yes | Yes | Yes |
| Standard C Pre-Processor Directives | Yes | Yes | Yes | Yes |
| Extended Compiler Control Directives | 24 Extensions | 13 Extensions | 15 Extensions | 5 Extensions |
| Recursion | No | Yes | No | No |
| Inline Assembly | Yes | Yes | Yes | Yes |
| Variable Number of Parameters | Yes | Yes | Yes | No |
| printf User re-direction | Yes | Yes | No | No |
| Arrays of Bit | Yes | No | No | No |
| Orphaned (un-used) Functions Removed | Yes | No | No | Yes |
| Reference Parameters | Yes | Yes | No | No |
| ISR (With context saving/restoring) |
Yes | Yes | Yes | No |
| Pointers to Constants | Yes | Yes | Yes | Yes |
| Function Overloading | Yes | No | No | No |
| Default Parameters | Yes | No | No | No |
| Can Locate C Data in Non-RAM Memory | Yes | No | No | No |
| Example Programs/Drivers | Yes 130 examples |
Yes 4 examples |
Yes 14 examples |
Yes 5 examples |
| Automatic Packing of Bit Variables | Yes | No | Yes | No |
| Section 3: | ||||
| Standard C char/string Functions | Yes | Yes | Yes | Yes |
| Standard C Math Functions | Yes | Yes | Yes | Yes |
| Standard C File System Functions | No | No | No | Yes |
| Standard C Dynamic Memory Functions | Yes | No | No | Yes |
| Dynamic RS232 Library (Dynamic meaning can use any pins, any number of ports, even if it has no hardware peripheral) |
Yes | No | No | No |
| Dynamic SPI Library | Yes | No | No | No |
| Dynamic I2C Library | Yes | No | No | No |
| printf/getc IO Library | Yes | Yes | Yes | Yes |
| Ext Device Drivers | Yes 140 Drivers |
No   |
No   |
No   |
| PIC® MCU Specific Built-in Functions | Yes 80 Functions |
Yes 54 Functions |
No   |
No   |
| Delay Functions | Yes | Yes | No | No |
| RTOS | Yes Only with IDE |
No   |
Yes With purchase of a seperate application |
No   |
| Section 4: | ||||
| IDE | Yes | Yes | Yes | Yes |
| Debugger Within IDE | Yes | Yes | Yes | Yes |
| New Project Wizard | Yes | Yes | Yes | Yes |
| Integrated Source Level Debugger | Yes | Yes | Yes | Yes |
| Context Sensitive Help (When F1 is |
Yes | No | Yes | Yes |
| C-Metrics Calculator | Yes | No | No | No |
| Automatic Document Generator | Yes | No | No | No |
| Flow Chart Editor | Yes | No | No | No |
| Spell Checker | Yes | No | No | No |
| Section 5: | ||||
| Program to Read an I2C Temp Sensor and Display Result on LCD | ROM: 1638 RAM: 34 |
ROM: 3036 RAM: 293 |
ROM: 3879 RAM: 30 |
ROM: 7838 RAM: 148 |
| Floating Point Example 1: |
Time: 27.5 us ROM: 350 RAM: 28 |
Time: 42.5 us ROM: 416 RAM: 286 |
Time: 83.4 us ROM: 428 RAM: 22 |
Time: 27.6 us ROM: 454 RAM: 33 |
| Formatted Print Example 2: |
ROM: 296 RAM: 12 |
ROM: 2083 RAM: 295 |
ROM: 1705 RAM: 37 |
ROM: 5042 RAM: 190 |
| Function to Calculate CRC on a 50 Byte RAM Array | Time: 481 us ROM: 544 RAM: 74 |
Time: 991 us ROM: 687 RAM: 289 |
Time: 506 us ROM: 858 RAM: 66 |
Time: 890 us ROM: 1022 RAM: 137 |
The following chart shows the combined results from several volunteers who have provided this data. CCS has not
verified this information. Anyone who wishes to contribute their comments or product reviews to this page, please
forward information to marketing@ccsinfo.com.
Jump To Menu: · CCS · Microchip · Hi-tech · IAR · Forest Electronics · B Knudsen · Sourceboost
|   | CCS - C v.4 | Forest Electronics v14 C Compiler | B Knudsen CC5X CC8E C Compilers | Sourceboost C Compiler |
| Section 1: | ||||
| Supported Parts | PIC 12-bit (10F2xx, etc.) PIC 14-bit (16F877A, etc.) PIC 16-bit (18F4520, etc.) PIC 24-bit (dsPIC30F2010, PIC24Fxx, etc.) |
PIC 14-bit (16F877, etc.) PIC 16-bit (PIC18F4520, etc.)       |
CC5X = PIC 12-bit (10F2xx, etc.) CC5X = PIC 14-bit (16F877A, etc.) CC8E = PIC 16-bit (18F4520, etc.)   |
PIC 14-bit (16F877A, etc.) PIC 16-bit (18F4520, etc.)     |
| Platforms Available | Windows, Linux   |
Windows   |
Windows   |
Windows   |
| Price | License: 12-bit = $50 14-bit = $150 16-bit = $200 24-bit = $250 12-bit, 14-bit + IDE = $350 12-bit, 14-bit, 16-bit + IDE = $500 24-bit + IDE = $350 12-bit, 14-bit, 16-bit, 24-bit + IDE = $600 Maintenance: (30-60 days included) 12-bit = $40/year 14-bit = $100/year 16-bit = $125/year 24-bit = $150/year 12-bit, 14-bit + IDE = $200/year 12-bit, 14-bit, 16-bit + IDE = $250/year 24-bit + IDE = $175/year 12-bit, 14-bit, 16-bit, 24-bit + IDE = $275/year |
License: 14-bit = $115 16-bit = $160   Support: Basic: $65/year Full: $110/year                       |
License: CC5X: 12-bit, 14-bit, 16-bit = $250 CC5X: 12-bit, 14-bit, 16-bit + IDE = $520   CC8E: 16-bit = $250 CC8E: 16-bit + IDE = $520             |
License: Lite: 14-bit, 16-bit + IDE = $4.99 Standard: 14-bit, 16-bit + IDE = $29.95 Full: 14-bit, 16-bit + IDE = $69.95 Pro: 14-bit, 16-bit + IDE = $149.95   Support: Full = $69.95/year Pro = $199.95/year                 |
| H/W Development Kits Available | Yes | Yes | No | Yes |
| Integrates Into MPLAB | Yes | Yes | Yes | Yes |
| Section 2: | ||||
| Automatic RAM Allocation (Some compilers require you to specify which bank to allocate variable) |
Yes | Yes | Yes | Yes |
| Data Types | Integers:
int1 int8 int16 int32 Float: 32-bit   |
Integers:
int1 int8 int16 int32   Float: 32-bit   |
Integers:
int1 int8 int16 int24 int32 Float: 16-bit 32-bit |
Integers:
int1 int8 int16 int32         |
| Standard C Constants | Yes | Yes | Yes | Yes |
| Standard C Statements | Yes | Yes | Yes | Yes |
| Standard C Operators | Yes | Yes | Yes | Yes |
| Standard C Pre-Processor Directives | Yes | Yes | Yes | Yes |
| Extended Compiler Control Directives | 24 Extensions | 22 Extensions | No Extensions | No Extensions |
| Recursion | No | Yes | No | No |
| Inline Assembly | Yes | Yes | Yes | Yes |
| Variable Number of Parameters | Yes | Yes | Yes | No |
| printf User re-direction | Yes | Yes | No | No |
| Arrays of Bit | Yes | No | Yes | Yes |
| Orphaned (un-used) Functions Removed | Yes | No | Yes | Yes |
| Reference Parameters | Yes | No | No | Yes |
| ISR (With context saving/restoring) |
Yes | Yes | Yes | No |
| Pointers to Constants | Yes | Yes | Yes | Yes |
| Function Overloading | Yes | No | No | Yes |
| Default Parameters | Yes | No | No | No |
| Can Locate C Data in Non-RAM Memory | Yes | No | No | No |
| Example Programs/Drivers | Yes 130 examples |
Yes 7 examples |
Yes 8 examples |
Yes 16 examples |
| Automatic Packing of Bit Variables | Yes | Yes | No | No |
| Section 3: | ||||
| Standard C char/string Functions | Yes | Yes | No | Yes |
| Standard C Math Functions | Yes | Yes | No | No |
| Standard C File System Functions | No | No | No | No |
| Standard C Dynamic Memory Functions | Yes | No | No | Yes |
| Dynamic RS232 Library (Dynamic meaning can use any pins, any number of ports, even if it has no hardware peripheral) |
Yes | Yes | No | No |
| Dynamic SPI Library | Yes | Yes | No | No |
| Dynamic I2C Library | Yes | Yes | No | No |
| printf/getc IO Library | Yes | Yes | No | Yes |
| Ext Device Drivers | Yes 140 Drivers |
Yes 3 Drivers |
No   |
No   |
| PIC® MCU Specific Built-in Functions | Yes 80 Functions |
Yes 6 Functions |
No   |
Yes 15 Functions |
| Delay Functions | Yes | Yes | No | Yes |
| RTOS | Yes Only with IDE |
No   |
No   |
Yes   |
| Section 4: | ||||
| IDE | Yes | Yes | No | Yes |
| Debugger Within IDE | Yes | Yes | No | Yes |
| New Project Wizard | Yes | Yes | No | Yes |
| Integrated Source Level Debugger | Yes | Yes | No | Yes |
| Context Sensitive Help (When F1 is |
Yes | No | No | No |
| C-Metrics Calculator | Yes | No | No | No |
| Automatic Document Generator | Yes | No | No | No |
| Flow Chart Editor | Yes | No | No | Yes |
| Spell Checker | Yes | No | No | No |
| Section 5: | ||||
| Program to Read an I2C Temp Sensor and Display Result on LCD | ROM: 1638 RAM: 34 |
ROM: 3750 RAM: 20 |
ROM: 1060 RAM: 26 |
ROM: 2595 RAM: 54 |
| Floating Point Example 1: |
Time: 27.5 us ROM: 350 RAM: 28 |
Time: 60.0 us ROM: 454 RAM: 23 |
Time: 16.88 us ROM: 236 RAM: 20 |
No Float Support     |
| Formatted Print Example 2: |
ROM: 296 RAM: 12 |
ROM: 970 RAM: 19 |
No printf Library   |
ROM: 887 RAM: 52 |
| Function to Calculate CRC on a 50 Byte RAM Array | Time: 481 us ROM: 544 RAM: 74 |
Time: 3700 us ROM: 1550 RAM: 273 |
Time: 597 us ROM: 780 RAM: 125 |
RAM Greater Than 512 Bytes Required To Run Program |


