Overview
ISO/IEC TR 18037:2008 - Programming languages - C - Extensions to support embedded processors is a Technical Report that defines language extensions to ISO/IEC 9899:1999 (C99) to better support embedded processors. The document addresses gaps between standard C and typical embedded-hardware features by specifying fixed-point arithmetic, named address spaces and named-register storage classes, and a standardized approach for basic I/O hardware addressing (the model). It is intended as guidance for compiler writers, tool vendors and embedded developers to improve portability and performance of C code on constrained and specialized processors.
Key Topics
- Fixed-point arithmetic
- New fixed-point data types and keywords, support for a range of precisions.
- Rules for rounding, saturation/overflow behavior, conversions, constants, operations and function interfaces.
- Standard header support (for example, ) and formatted I/O considerations.
- Named address spaces & named-register storage classes
- Mechanisms to declare variables in multiple distinct memory banks or special register spaces.
- Address-space type qualifiers, pointer rules, and library support to exploit multi-banked memory in embedded architectures.
- Named-register specifiers to map objects to machine registers and ensure correct side effects.
- Basic I/O hardware addressing
- Abstract model for I/O register designators, I/O groups, buffers and direct/indirect register access.
- Header-level specification () and recommended semantics for atomicity, read-modify-write operations and multi-addressing.
- Implementation guidance and migration
- Annexes provide implementation techniques, migration paths, and considerations for compiler vendors, plus C++ compatibility notes and features explicitly excluded.
Applications and Users
- Practical for embedded systems that require:
- DSP-style signal processing (FIR filters, wireless baseband), where fixed-point performance matters.
- Multi-bank memory architectures that need explicit address-space control to optimize throughput.
- Low-level peripheral access and deterministic hardware I/O through a standard iohw model.
- Primary users:
- Embedded software engineers and firmware developers
- Compiler and toolchain implementers seeking portable fixed-point and address-space semantics
- Hardware/SoC designers coordinating software/hardware interfaces
- Safety-critical and performance-sensitive system integrators seeking deterministic behavior
Related Standards
- ISO/IEC 9899:1999 (C99) - base language that TR 18037 extends
- C++ compatibility annexes within the TR discuss migration issues for C++ users
Keywords: ISO/IEC TR 18037:2008, C extensions, fixed-point arithmetic, embedded processors, named address spaces, named-register, , embedded C, compiler support, I/O hardware addressing.