Fact-checked by Grok 2 weeks ago

Small Device C Compiler

The Small Device C Compiler (SDCC) is a , open-source, retargetable suite for , specifically designed for resource-constrained embedded systems such as 8-bit and 16-bit microcontrollers. It supports core C standards including ANSI C89, ISO C99, ISO C11, and ISO C23, while providing microcontroller-specific extensions like inline assembly and optimized data handling for types from char to long long. Developed initially by Sandeep Dutta and first released under the GNU General Public License (GPL) in 1999, SDCC was hosted on starting in December of that year, enabling community-driven enhancements over time. The project remains actively maintained by a volunteer developer community, with recent funding support announced in October 2025 from initiatives like the NGI0 Commons Fund and the Sovereign Tech Fund, culminating in the latest stable release, version 4.5.0, on January 28, 2025. SDCC's key strengths lie in its portability across host platforms—officially supporting GNU/Linux (amd64, x86, aarch64, ppc64), Windows (amd64, x86), macOS (amd64), and (aarch64)—and its backend support for a range of target architectures, including the Intel MCS-51 family, Maxim DS80C390, Freescale HC08, Zilog Z80 variants (such as and ), Padauk processors, STM8, , and WDC 65C02. Ongoing development includes work on 4000/5000/6000 series and additional Padauk variants, though support for PIC16 and PIC18 remains unmaintained. The compiler suite incorporates advanced optimizations such as loop invariant removal and , , and , alongside tools like an assembler, linker, simulator, and , making it a complete for firmware development in environments. Its emphasis on standards compliance and efficiency has established SDCC as a popular choice for open-source microcontroller programming, particularly where proprietary compilers are unavailable or undesirable.

History and Development

Origins and Early Development

The Small Device C Compiler (SDCC) originated in 1995 when Sandeep Dutta, a software engineer, initiated the project to develop a simple C compiler for programming an development board. At the time, commercial compilers for 8-bit microcontrollers like the family were expensive and often proprietary, motivating Dutta to create a free alternative tailored for embedded systems with limited resources. The initial version was a basic, standalone executable focused on generating code for these low-end devices, emphasizing portability and optimization for constrained environments. Early development faced significant challenges, as worked solo to build the from scratch without extensive prior experience in retargetable compilers. The project targeted an early version of as the host platform, leveraging its environment for development tools, while prioritizing the MCS-51 architecture as the primary backend due to its prevalence in embedded applications. This focus required careful design to handle the architecture's limitations, such as small memory spaces and lack of hardware support for advanced C features, all while ensuring the remained lightweight and efficient. After approximately four years of development, the first public release of SDCC occurred in , marking a milestone in providing a complete compiler suite for 8-bit targets. Initially hosted on for free distribution, the project quickly gained traction among hobbyists and embedded developers, later migrating to for better collaboration and version control, where it achieved high download rankings. SDCC has been licensed under the GNU General Public License (GPL) since its first public release, underscoring Dutta's commitment to open-source principles and enabling widespread adoption in resource-limited embedded programming communities. Early contributions expanded SDCC's scope beyond its MCS-51 roots. In particular, Michael Hope joined as a key developer, adding initial support for the architecture and refactoring the monolithic backend into a modular structure to improve retargetability for future processors. This separation of frontend parsing from backend code generation laid the groundwork for SDCC's evolution into a more versatile .

Key Milestones and Releases

The Small Device C Compiler (SDCC) project transitioned to in December 1999, shortly after the platform's launch, establishing it as one of the site's early hosted open-source initiatives and contributing to its sustained popularity with millions of downloads over the years. In the , SDCC underwent significant architectural enhancements, including refinements to its global scheme in the backend, which improved efficiency for 8-bit targets and facilitated retargeting to additional architectures. By 2010, efforts focused on documenting the compiler's original GPL licensing from its , its on portable platforms like , and strategies for enhanced retargetability through modular backend design, enabling easier adaptation to new microcontrollers. A notable shift occurred with the release of SDCC 3.0.0 in late 2010, which disabled support for AVR targets by default due to maintenance challenges and the rise of more specialized tools like avr-gcc, allowing developers to prioritize stable 8-bit platforms such as and Z80. Funding milestones bolstered SDCC's evolution, with the NGI Zero Commons Fund providing grants starting in the early to expand hardware support and implement machine-independent optimizations, while the Sovereign Tech Fund allocated €98,304 in 2025–2026 for enhancements in safety and security features tailored to systems. The project continued advancing standards compliance, culminating in the stable release of SDCC 4.5.0 on January 28, 2025, which introduced full support for ISO C23 features like atomic_flag operations on key ports, alongside ongoing backend optimizations for targets including STM8 and Z80 variants.

Features and Capabilities

Supported C Standards and Extensions

The Small Device C Compiler (SDCC) provides support for multiple ISO C standards, enabling developers to utilize modern C language features on embedded systems with limited resources. It implements ANSI C89 (equivalent to ISO C90) as its baseline, with progressive support for ISO C99, ISO C11, and ISO C23, though as a freestanding implementation, full compliance varies by target port and includes some deviations. For instance, SDCC adheres to C89 requirements for structure array initialization but may require explicit braces, and it supports C99 features like compound literals and designated initializers, albeit without variably modified types. C11 and C23 extensions, such as _Generic and bit-precise integers, are available via command-line options like --std-c11 or --std-c23, allowing code portability across constrained devices while inheriting limitations from prior standards. To accommodate microcontroller-specific needs, SDCC incorporates extensions beyond standard C, particularly for interrupt handling and hardware interaction. The __interrupt keyword defines interrupt service routines (ISRs), specifying the interrupt vector (e.g., __interrupt(1) for MCS51 timer overflow at address 0x000B), with options like __using(n) to select register banks for efficient context switching. Bit-addressable data types, such as __bit for 8051 and DS390 targets, enable single-bit variables in the bit-addressable memory space (0x20–0x2F), optimizing storage in resource-limited environments. The volatile qualifier ensures that accesses to hardware registers or shared variables are not optimized away, preserving exact read/write sequences critical for peripherals, though it does not guarantee atomicity in interrupt contexts. SDCC's data type support is tailored for 8-bit and 16-bit architectures, featuring an 8-bit char, 16-bit short and int, 32-bit long, and 64-bit long long (where supported, excluding ports like PIC14). Single-precision float (4 bytes) is implemented for numerical computations, with pointers sized from 1 to 4 bytes based on the memory model. Special types like __sfr and __sbit map directly to special function registers and their bits on targets such as MCS51, facilitating low-level hardware control without inline assembly. Named address spaces (e.g., __data for direct memory, __xdata for external) further extend type declarations for precise memory placement. Inline assembler integration allows embedding code within C functions using __asm...__endasm blocks for multi-line sequences or __asm__("instruction") for single lines, with automatic parameter passing via registers like DPL/DPH on MCS51. This enables fine-tuned performance without leaving the C environment. Compared to general-purpose compilers like , SDCC exhibits differences due to 8-bit constraints, such as restricted variadic functions on ports like PIC14 and PIC16, and optional support for / parameters in functions, prioritizing compact over full standard adherence.

Optimization Techniques

The Small Device C Compiler (SDCC) employs a suite of optimization techniques designed specifically for resource-constrained 8-bit microcontrollers, emphasizing code size reduction, minimized stack usage, and efficient execution on architectures with limited registers and non-orthogonal instruction sets, such as the 8051. These optimizations are integrated into the compiler's backend and can be controlled via command-line options, allowing developers to balance between code speed and size while targeting applications. Global register allocation in SDCC uses a polynomial-time based on tree decomposition to assign variables to the scarce registers available on 8-bit targets, thereby reducing stack spills and improving execution speed; for the 8051 architecture, it leverages specific registers like , , DPL, and for parameter passing and return values to minimize memory accesses. This approach is particularly effective on register-poor architectures, where it defaults to enabling optimizations except for certain ports like , ds390, pic14, and pic16, and can be enhanced with the --callee-saves option to reduce and code overhead. Peephole optimization applies rule-based to replace inefficient instruction sequences with more compact alternatives, such as eliminating redundant moves, and is enabled by default across MCU-independent passes to achieve instruction-level improvements. Users can disable it with --no-peep, customize rules via --peep-file, or apply it to using --peep-asm; for specific targets like PIC16, additional control is provided by --denable-peeps. This technique contributes to overall code density, with SDCC's implementation tailored for the irregular instruction sets of 8-bit MCUs. Loop unrolling and techniques in SDCC focus on embedded loops common in code, moving loop-invariant code out of iterations and replacing costly operations like multiplications with additions via induction variable analysis to avoid dynamic allocation and reduce execution time. These are applied during optimization passes, with warnings issued for potential increases in or usage, and can be disabled using --noinvariant for loop invariants or --noinduction for strength reduction. Such methods are crucial for resource-limited environments, ensuring efficient handling of repetitive tasks without excessive . Support for reentrant functions and is facilitated through options like --stack-auto, which places automatic variables and parameters on the to lower register pressure and usage, making functions reentrant by default on supported architectures. Keywords such as __reentrant and __interrupt (combined with __using for register banks in ) enable safe handling of concurrent execution, particularly on the 8051 where an external model can further minimize internal limitations; this is essential for to prevent . Compared to general-purpose compilers like and , SDCC's optimizations are specialized for non-orthogonal instruction set architectures (ISAs) like the 8051's banked model, resulting in superior code density on targets that are challenging for those tools due to few registers and irregular features; SDCC incorporates a test suite for validation but maintains simpler, more stable internals for 8-bit development.

Included Tools

The Small Device C Compiler (SDCC) distribution includes a comprehensive of development tools that extend beyond the core , enabling full firmware development workflows for embedded systems. These tools, derived from established open-source projects, facilitate , linking, , , and file handling, all optimized for resource-constrained 8-bit and 16-bit s. The assembler, known as sdas, is a retargetable tool that processes source files for various microcontroller architectures. It supports multiple targets, including the family and Z80, and provides features such as macro definitions for and the generation of relocatable object files in .rel format, which can be linked later without fixed addressing. Additionally, sdas produces assembly listings in .lst format for verification, ensuring developers can inspect the assembled code before further processing. The linker, sdld, integrates seamlessly with sdas and the SDCC compiler by combining relocatable object files and libraries into executable images. It handles memory mapping to allocate code, data, and stack segments according to target-specific constraints, supports library linking for modular development, and generates output in formats such as (.ihx) for programming or plain for direct loading. This capability is essential for producing deployable tailored to the limited address spaces of devices. For testing without physical hardware, SDCC bundles ucsim, a set of target-specific simulators that emulate execution environments. These simulators support architectures like the 8051 and Z80, allowing developers to run and verify compiled in a virtual setting, including peripheral interactions and handling, to catch issues early in the development cycle. The debugger, sdcdb, offers source-level debugging capabilities integrated with ucsim simulators, enabling precise analysis. It supports setting breakpoints at specific lines or addresses, stepping through execution, and inspecting variables and contents in real-time, which streamlines troubleshooting for complex programs. This tool enhances productivity by bridging simulation and actual debugging workflows. Rounding out the suite are additional utilities for post-processing tasks. The sdbinutils collection, adapted from , includes tools like sdar for creating and managing library archives, sdnm for extraction, and sdobjcopy for manipulation, all focused on binary handling to support custom build processes. Complementing these is packihx, a utility for converting between Intel HEX file variants, ensuring compatibility with various programming hardware and loaders.

Supported Platforms

Host Operating Systems

The Small Device C Compiler (SDCC) primarily supports GNU/Linux on x86, amd64, , and architectures, Microsoft Windows on x86 and amd64, and macOS on amd64 as host operating systems for development environments. These platforms enable users to compile, assemble, and link code for embedded targets directly on the host machine, with official binary releases and snapshots provided for amd64 variants of GNU/Linux, Windows, and macOS to ensure broad accessibility. Additionally, SDCC is known to function on (aarch64), though it is not officially maintained for that platform. SDCC facilitates cross-compilation from any supported host to a variety of targets, producing portable binaries that maintain consistency across development environments. Windows binaries, in particular, are generated via cross-compilation using MinGW32 on a host, while native compilation occurs on /Linux and macOS with . This approach allows developers to build for microcontrollers regardless of the host OS, leveraging the compiler's retargetable design without requiring host-specific modifications. Historically, SDCC originated in 1995 under the development of Sandeep Dutta on , focusing initially on 8051 microcontroller programming within a environment. The project moved to in December 1999, marking the beginning of broader platform expansion; support for Windows and macOS was added in the early 2000s through cross-compilation tools and native builds, respectively, to accommodate growing user bases in diverse ecosystems. SDCC maintains a minimal system footprint, typically requiring only standard build tools such as , make, , , and flex for compiling from source on systems including /Linux and macOS. Precompiled binaries for Windows eliminate the need for these dependencies, while overall resource demands remain low, supporting efficient operation even on older hardware configurations used in embedded development workflows.

Target Architectures

The Small Device C Compiler (SDCC) primarily targets 8-bit microcontrollers prevalent in systems, generating efficient code for resource-constrained environments. Its core supported architectures include the MCS-51 family (such as 8031, 8032, 8051, and 8052 variants), Maxim DS80C390, Freescale HC08/S08, STMicroelectronics STM8, and , and various derivatives (including Z80, Z80N, Z180, eZ80, R800, SM83, Rabbit 2000/2000A/3000/3000A, and TLCS-90). Additionally, it supports Padauk PDK14 and PDK15 devices. These targets enable SDCC to compile standard code into compact executables suitable for microcontrollers with limited RAM (often 128 bytes or less) and . Work-in-progress ports extend SDCC's reach to emerging or specialized 8-bit needs, such as 4000, 5000, and 6000 series, Padauk PDK13, and experimental F8/F8L variants (introduced in SDCC 4.5.0). These developments focus on enhancing compatibility with additional low-end processors while maintaining optimization for code density and speed. Unmaintained or obsolete targets include the Microchip PIC16 family (e.g., PIC16F84; 14-bit) and PIC18 family (e.g., PIC18Fxxx; 18-bit), as well as , whose support was abandoned around 2010 due to superior alternatives like avr-gcc. SDCC incorporates architecture-specific features to leverage hardware capabilities effectively. For the (8051), it handles banked memory through the __banked attribute and routines in crtbank.asm, supporting memory models like small, medium, large, and huge for efficient access to internal data, external RAM, and code spaces. Z80 variants benefit from stack-based operations, including complex instructions like ldir for block transfers, along with __sfr and __banked __sfr for special function registers. STM8 support includes integration with low-power modes, such as wait and active-halt, to minimize in battery-operated devices while preserving peripheral functionality. The growing list of targets reflects SDCC's : optimizing for 8-bit devices in cost-sensitive applications, where microcontrollers typically range from a few cents to about one per unit, bridging the gap between legacy 4-bit systems and more powerful 32/64-bit MCUs. This focus ensures high code efficiency on hardware with severe limitations, such as the 8051's 128-byte internal , prioritizing compact binaries and fast execution over full-featured general-purpose computing.

Usage and Community

Installation and Setup

The Small Device C Compiler (SDCC) can be acquired through pre-built binary packages available for Windows, macOS, Linux, and other platforms via the official SourceForge project files, or by downloading the source code for custom compilation using SVN checkout from the project's repository. On Unix-like systems including Linux and macOS, installation from source begins with unpacking the tarball (e.g., tar -xvjf sdcc-src-yyyymmdd-rrrr.tar.bz2), navigating to the extracted directory, running ./configure to detect dependencies, followed by make to build and make install (typically as root) to install into the default prefix like /usr/local. This process requires prerequisites such as GNU make, GCC, flex, and bison to handle parsing and building. Pre-built binaries for these platforms can alternatively be unpacked directly and added to the system PATH without compilation. For Windows, users can install via MSI executables like sdcc-x.y.z-setup.exe, which place binaries in a standard directory such as C:\Program Files\SDCC, or integrate with environments like or for command-line access by compiling from source using ./configure, make, and adjusting for tools like flex and . In or setups, ensure the PATH includes the SDCC bin directory post-installation to enable seamless use. Basic configuration involves setting environment variables such as SDCC_HOME to the installation root, SDCC_INCLUDE for header paths, and SDCC_LIB for libraries, while ensuring the bin directory is in the PATH. Target architectures are selected via command-line options like --target=mcs51 for Intel 8051-based devices during compilation. Installation can be verified by running sdcc -v or sdcc --version to display the version and configuration details. Common troubleshooting includes resolving path conflicts in multi-compiler environments by prioritizing SDCC in the PATH variable and using sdcc --print-search-dirs to inspect include and library search paths. For simulator integration, such as with tools like the S51 emulator, ensure proper library linking by specifying --lib-path if defaults fail, and check build logs from ./configure and make for dependency errors.

Applications and Adoption

The Small Device C Compiler (SDCC) is widely used for firmware development on 8051-based microcontrollers, particularly in resource-constrained embedded applications such as (IoT) devices, automotive sensors, and . For instance, SDCC enables efficient C programming for 8051 derivatives like the AT89S51 and DS80C400, supporting tasks in industrial automation and simple control systems where low-power, small-footprint code is essential. In automotive contexts, 8051-compatible processors developed with SDCC handle basic sensor interfaces and control logic in legacy and low-cost systems. applications leverage SDCC for microcontroller firmware in devices requiring compliance on 8-bit architectures. In retrocomputing, SDCC facilitates development for Z80 and 6502 architectures, including emulations and homebrew projects on vintage systems like the or . Hobbyists use it to compile C code for cross-platform retro emulators, benefiting from its optimizing backend for these classic 8-bit CPUs. Adoption of SDCC is evidenced by its strong presence on , alongside a 4.8/5 rating from 43 user reviews praising its reliability for targets. It is integrated into educational settings for microcontroller programming courses, serving as a free tool to teach C-based development on 8051 and similar platforms, often in labs focused on systems. The SDCC community remains active through dedicated mailing lists for development discussions and bug reporting, a comprehensive bug tracker on , and contributions via its SVN repository, fostering ongoing improvements by volunteers. Public engagement includes presentations at events like 2024, which highlighted SDCC's role in 8-bit support, and FrOSCon 2025, focusing on its application in for small devices. Compared to commercial compilers like Keil or IAR, SDCC is preferred in hobbyist and small-scale projects for its cost-free, open-source nature under the GPL license, providing comparable optimization for 8-bit targets without licensing fees. It integrates seamlessly with IDEs such as X for , allowing users to build and debug projects using SDCC alongside gputils for free setups. Looking ahead, SDCC continues enhancements toward full ISO C23 compliance, with version 4.5.0 already supporting core features, and plans for additional targets like the and TLCS-90 to meet embedded standards. These developments are supported by community-driven efforts to improve usability and standards conformance in constrained environments.

References

  1. [1]
    SDCC - Small Device C Compiler
    ### Summary of SDCC (Small Device C Compiler)
  2. [2]
    [PDF] SDCC Compiler User Guide
    SDCC (Small Device C Compiler) is free open source, retargettable, optimizing standard (ANSI C89 / ISO C90, ISO. C99, ISO C11 / ISO C17) C compiler suite ...
  3. [3]
  4. [4]
    SDCC Previous News and Changes
    December 21st, 2023: SDCC 4.4.0 RC1 released. SDCC 4.4.0 Release Candidate 1 source, doc and binary packages for amd64 GNU/Linux, amd64 Windows and amd64 macOS ...
  5. [5]
    SDCC | Sovereign Tech Agency
    Key facts. Status: Current; Investment Amount: €98,304.00; Investment Year(s): 2025, 2026. sdcc.Missing: NGI0 | Show results with:NGI0
  6. [6]
    Small Device C Compiler (SDCC) - Browse /sdcc/4.5.0 at ...
    Get an email when there's a new version of Small Device C Compiler (SDCC) ; 2025-01-28 · 2025-01-25 · 2025-01-15 ; 20.3 MB · 57.7 MB · 20.3 MB.
  7. [7]
    [PDF] SDCC - Small Device C Compiler
    Feb 3, 2024 · SDCC vs. GCC/LLVM. SDCC specializes in targets hard to support in GCC/LLVM: few registers, non-orthogonal architecture. Less steep learning ...
  8. [8]
    Small Device C Compiler (SDCC) download | SourceForge.net
    Rating 4.8 (43) · FreeSDCC is a retargettable, optimizing standard C (ANSI C89 / ISO C90, ISO C99, ISO C11 / C17, ISO C23) compiler that targets a growing list of architectures.Browse /sdcc-win64 at... · Files · Browse /sdcc-win32 at... · 43 Reviews
  9. [9]
    Re: [Sdcc-user] About SDCC AVR | Small Device C Compiler (SDCC)
    On Wed, Oct 13, 2010 at 9:20 AM, Bin Shi <pow...@gm...> wrote: > But why AVR was abandoned? > It is a popular kind of MCU. Because GCC for AVR is way better ...
  10. [10]
    Small Device C Compiler (SDCC) - Browse Files at SourceForge.net
    Download Latest Version sdcc-4.5.0-x64-setup.exe (9.4 MB). Email in envelope. Get an email when there's a new version of Small Device C Compiler (SDCC). Next.
  11. [11]
  12. [12]
    Small Device C Compiler (SDCC) Files - SourceForge
    SDCC Binary Kit Install Help ---------------------------- For Linux users: ================ To install: * Extract the binary kit to a temporary directory.Missing: guide | Show results with:guide
  13. [13]
    Small Device C Compiler (SDCC) Files - SourceForge
    SDCC Binary Kit Install Help ---------------------------- For Windows 9X/NT/2000/XP/Vista/7/8 users: ========================================== To install: ...Missing: guide | Show results with:guide
  14. [14]
    8051 Programming Using Small Device C Compiler (SDCC) : 5 Steps
    SDCC is a free opensource (GPL) C compiler for 8051 based microcontrollers. It consists of linker, assembler, simulator and debugger for developing software ...<|control11|><|separator|>
  15. [15]
    Using the SDCC compiler for the DS80C400 - Analog Devices
    SDCC is a free, open-source compiler for 8051 devices, compatible with the DS80C400's 24-bit addressing, used to build applications for the chip.Missing: IoT | Show results with:IoT
  16. [16]
    Using C to program the 8051 family| page 10 - EmbeddedRelated.com
    Jan 1, 2004 · IIRC, the 8048/8051 were built for Ford. They were intended >> for very small, simple automotive control applications with a >> few KB of ...Missing: IoT | Show results with:IoT
  17. [17]
    A Comprehensive Guide to Embedded C Programming with 8051
    Embedded C programming is often used in applications such as industrial automation, automotive systems, consumer electronics, and medical devices. Its key ...
  18. [18]
    programming - The Amstrad CPC news portal
    You can use SDCC to develop for the Amstrad CPC, e.g. with using the SDCC Code::Blocks template or the programming tutorials by Mochilote or with the CPCtelera ...<|separator|>
  19. [19]
    C Compiler SDCC 4.2.0 has been released, including future support ...
    Mar 9, 2022 · Among many new features, the ubiquitous compiler has started to support 6502 output. The development is still ongoing but progresses fast. SDCC ...<|control11|><|separator|>
  20. [20]
    Is it possible to program for retro computers or consoles using more ...
    Apr 11, 2025 · Look up "cross compilation." Pretty easy if you're targeting 68000 (heck, you can just use LLVM), 6502 (cc65) or Z80 systems (SDCC - https:// ...6502 vs. Z80 : r/retrocomputing - RedditTerminal for 6502 emulator : r/vintagecomputing - RedditMore results from www.reddit.com
  21. [21]
    Recent posts — 8bitworkshop documentation
    We'll compile a function with the CC65 C compiler for the 6502, and then with the SDCC (Small Device C Compiler) for the Z80. We'll call the function ...
  22. [22]
    Small Device C Compiler (SDCC) Files - SourceForge
    InfoDownloads / Week. Parent folder · 4.5.0, 2025-01-28. 59 · 4.4.0, 2024-01-29. 8 ... From exposed data to dark web chatter. All in one unified view. Move ...Missing: statistics | Show results with:statistics
  23. [23]
    A teaching media of using the busy bit and SDCC in displaying ...
    1. MCU 8051 IDE is suitable and can be used as an alternative media of teaching of Microcontroller in ALFHE class. · 2. The C language of SDCC can be used to ...
  24. [24]
    Small Device C Compiler (SDCC) Mailing Lists - SourceForge
    The Small Device C Compiler (SDCC), targeting 8-bit architectures · Code (SVN) · Experimental svn for mirroring experiments.Missing: community contributions
  25. [25]
    Small Device C Compiler (SDCC) / Bugs - SourceForge
    The Small Device C Compiler (SDCC), targeting 8-bit architectures. Brought to you by: benshi, drdani, epetrich, jesusc, and 3 others.Missing: community contributions
  26. [26]
    FOSDEM 2024 - The Small Device C Compiler (SDCC)
    32- and 64-bit architectures are well supported by the popular compilers GCC and LLVM. The situation is different for 8-bit architectures.Missing: FrOSCon | Show results with:FrOSCon
  27. [27]
    Lecture: The Small Device C Compiler for 8-bit firmware development
    Aug 17, 2025 · Summary. The Small Device C Compiler (SDCC) is a free C compiler targeting 8-bit architectures, including MCS-51, STM8, Padauk, Rabbit, S08.
  28. [28]
    Bye bye Keil 166 and 8051 (??)| page 4 - EmbeddedRelated.com
    Nov 2, 2005 · http://sdcc.sourceforge.net/ > > I was under the impression that SDCC is the same as GNU. Regardless, it's a > free toolset...and you get ...
  29. [29]
    MPLABX SDCC Toolchain - Rodrigo Almeida - Google Sites
    The main objective of this project is to promote the use of free programming toolchains for anyone interested in creating stuff with PIC16 and PIC18.
  30. [30]
    [PDF] Creating an SDCC-based development environment for the Rabbits
    Apr 8, 2025 · SDCC has good support for recent C standards up to current. ISO C23, and work on supporting the future C2Y standard has begun. It can.
  31. [31]
    [PDF] N3651: Named Address Space Type Qualifiers for C2Y
    Jul 23, 2025 · SDCC (a C compiler supporting ISO C23 with few gaps) will use this for the Toshiba TLCS-90 and Rabbit microcontrollers in SDCC 4.6.0. In.