"How much would the output file change if we compiled C code using the XC8 compiler?"
So I tried to compile C code that I made and compared the each output HEX file depend on each optimization level.
I will use below C code, It will be friendly if you learned C language
/* TODO <INSERT USER APPLICATION CODE HERE> */ for(i=2;i<=9;i++){ for(j=2;j<=9;j++){ LATA = i*j; } } |
Now let's see the result! XC8 Compiler has three kinds of optimization level such as Free, Standard, and Professional mode
XC8 Compiler version: v1.45
| Free mode | Standard mode | Professional mode |
Flash memory used | 80 bytes | 69 bytes | 50 bytes |
rate | 1 | 0.86 | 0.65 |
- Free mode
Memory Summary: Program space used 50h ( 80) of 2000h words ( 1.0%) Data space used Ah ( 10) of 3F0h bytes ( 1.0%) EEPROM space used 0h ( 0) of 100h bytes ( 0.0%) Data stack space used 0h ( 0) of 3F0h bytes ( 0.0%) Configuration bits used 0h ( 0) of 4h words ( 0.0%) ID Location space used 0h ( 0) of 4h bytes ( 0.0%) |
- Standard mode
Memory Summary: Program space used 45h ( 69) of 2000h words ( 0.8%) Data space used Ah ( 10) of 3F0h bytes ( 1.0%) EEPROM space used 0h ( 0) of 100h bytes ( 0.0%) Data stack space used 0h ( 0) of 3F0h bytes ( 0.0%) Configuration bits used 0h ( 0) of 4h words ( 0.0%) ID Location space used 0h ( 0) of 4h bytes ( 0.0%) |
- Professional mode
Memory Summary: Program space used 32h ( 50) of 2000h words ( 0.6%) Data space used 7h ( 7) of 3F0h bytes ( 0.7%) EEPROM space used 0h ( 0) of 100h bytes ( 0.0%) Data stack space used 0h ( 0) of 3F0h bytes ( 0.0%) Configuration bits used 0h ( 0) of 4h words ( 0.0%) ID Location space used 0h ( 0) of 4h bytes ( 0.0%) |
As we see the result of compiler depend on the optimization level, In case of Standard mode, The size of hex file can be reduced to 0.85 ratio. In case of Professional mode, The size of hex file can be reduced to 0.65 ratio.
As you may expect, As the size of an Hex file decreases, it will execute much more faster and save the flash memory which stores the hex file.
I think that Free mode also can use for embedded programming but if you use the standard version or professional version, you can save the flash memory and execute code much more faster.
'Embedded' 카테고리의 다른 글
코드 주석 처리하기(단축키) (0) | 2019.01.08 |
---|---|
CAN 통신 - CAN Tranceiver의 통신 레벨 (0) | 2019.01.06 |
CAN 통신(캔 통신) Message IDs(메시지 IDs) (0) | 2019.01.06 |
CAN 통신(캔 통신) 소개하기 (0) | 2019.01.06 |
How can i select the optimization level of compiler on MPLAB X? (0) | 2019.01.02 |