Small Device C Compiler
Small Device C Compiler | |
---|---|
Basic data
|
|
Current version | 4.0.0 (January 30, 2020) |
operating system | Linux , Windows , Mac |
programming language | C. |
category | C compiler |
License | GPL ( Free Software ) |
sdcc.sourceforge.net |
The Small Device C Compiler ( SDCC ) is an open source C - cross compiler for microcontroller . In addition to the compiler, the software suite includes a linker , assembler , simulator and debugger . Its design is designed for adaptation to other 8-bit target systems ( retargetable ). The software is under the GNU General Public License .
SDCC was used to port the real-time operating system of the FreeRTOS project to the 8051 -based microcontroller series from Silicon Laboratories .
Supported target architectures
- Intel 8051 and its variants
- Zilog Z80 and binary compatible variants.
- Zilog Z180
- Rabbit 2000 and the binary compatible variant Rabbit 3000
- Rabbit 3000A and the binary compatible variant Rabbit 4000
- Zilog eZ80 in Z80 mode.
- Sharp LR35902 ( Game Boy's CPU )
- Freescale HC08
- Freescale S08
- STMicroelectronics STM8
- Toshiba TLCS-90
- Padauk Technology PDK14 and PDK15.
In progress:
- Padauk Technology PDK13.
- Microchip PIC microcontroller variants PIC16 and PIC18
Optimizations
Some of the architectures supported by SDCC differ significantly from other common ones, which is why SDCC has significantly different optimizations compared to other compilers such as GCC and LLVM . For example, most of the target architectures are CISC with a small number of registers. For most target architectures, SDCC uses an optimal register allocator based on tree decomposition , the runtime of which is exponential in the number of registers. The register allocation is done byte by byte (so far only fully implemented for STM8).
Individual evidence
- ↑ The small_device_c_compiler Open Source Project on Open Hub: Languages Page . In: Open Hub . (accessed on September 26, 2018).
- ↑ Rainer Leupers, Peter Marwedel: Retargetable Compiler Technology for Embedded Systems: Tools and Applications. Springer, 2001, p. 126.