搜索

pdf文档 C++ Exceptions for Smaller Firmware

6.74 MB 237 页 0 下载 48 浏览 0 评论 0 收藏
所属分类: 后端开发 / C++
语言 格式 评分
英语
.pdf
3
摘要
文档讨论了C++异常在嵌入式固件中的应用及其挑战。固件开发者通常避免使用C++异常的原因包括对动态内存、堆、malloc的需求,无界内存使用,二进制大小增加,以及对整个C++ STL、异常表和运行时类型信息(RTTI)的依赖。此外,异常处理还涉及非确定性类型比较(dynamic_cast)、帧展开和帧评估等性能问题。文档还提到通过优化异常处理机制,如减少代码生成、压缩unwind信息和仅支付一次异常机制的费用,可以提高C++异常的效率和可扩展性。
AI总结
本文探讨了固件开发者为何避免使用C++异常,并分析了C++异常在嵌入式系统中面临的挑战及优化方法。 ### 固件开发者避免C++异常的原因 1. **资源消耗**: - 需要动态内存管理(堆、malloc)。 - 可能导致内存使用失控。 - 增加二进制文件大小,需要完整的C++标准库(STL)、异常表和运行时类型信息(RTTI)。 2. **性能问题**: - 异常处理增加了运行时开销,包括非确定性的类型比较(dynamic_cast)。 - 栈展开和函数调用的二进制搜索导致执行时间变长。 3. **复杂性**: - 异常处理机制涉及复杂的底层操作,增加了开发和维护的难度。 ### C++异常的优化与未来方向 1. **优化方法**: - 通过减少代码生成和优化 unwind 信息,降低异常处理的开销。 - 只为需要异常处理的函数支付相关成本,避免全局影响。 2. **未来改进方向**: - 简化C++的异常处理机制,使其更高效、更易于使用。 - 参考Herb Sutter提出的“零开销原则”,优化C++的异常和RTTI实现。 ### 总结 C++异常在嵌入式固件中的应用面临资源和性能限制,但通过工具和优化方法,未来有望在不显著增加开销的情况下更好地支持异常处理。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 225 页请下载阅读 -
文档评分
请文明评论,理性发言.