Low-cost deterministic C++ exceptions for embedded systems
Abstract
The C++ programming language offers a strong exception mechanism for error handling at the language level, improving code readability, safety, and maintainability. However, current C++ implementations are targeted at general-purpose systems, often sacrificing code size, memory usage, and resource determinism for the sake of performance. This makes C++ exceptions a particularly undesirable choice for embedded applications where code size and resource determinism are often paramount. Consequently, embedded coding guidelines either forbid the use of C++ exceptions, or embedded C++ tool chains omit exception handling altogether. In this paper, we develop a novel implementation of C++ exceptions that eliminates these issues, and enables their use for embedded systems. We combine existing stack unwinding techniques with a new approach to memory management and run-time type information (RTTI). In doing so we create a compliant C++ exception handling implementation, providing bounded runtime and memory usage, while reducing code size requirements by up to 82%, and incurring only a minimal runtime overhead for the common case of no exceptions.
Citation
Renwick , J , Spink , T & Franke , B 2019 , Low-cost deterministic C++ exceptions for embedded systems . in Proceedings of the 28th International Conference on Compiler Construction (CC ’19) : February 16–17, 2019, Washington, DC, USA . ACM , Washington, DC, USA , pp. 76–86 , 28th International Conference on Compiler Construction , Washington DC , United States , 16/02/19 . https://doi.org/10.1145/3302516.3307346 conference
Publication
Proceedings of the 28th International Conference on Compiler Construction (CC ’19)
Type
Conference item
Collections
Items in the St Andrews Research Repository are protected by copyright, with all rights reserved, unless otherwise indicated.