Low-cost deterministic C++ exceptions for embedded systems
MetadataShow full item record
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.
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.3307346conference
Proceedings of the 28th International Conference on Compiler Construction (CC ’19)
Copyright © 2019 Copyright held by the owner/author(s). Publication rights licensed to ACM. This work has been made available online in accordance with publisher policies or with permission. Permission for further reuse of this content should be sought from the publisher or the rights holder. This is the author created accepted manuscript following peer review and may differ slightly from the final published version. The final published version of this work is available at https://doi.org/10.1145/3302516.3307346.
Items in the St Andrews Research Repository are protected by copyright, with all rights reserved, unless otherwise indicated.