ZHDA315 September 2026 MSPM0C1103 , MSPM0C1103-Q1 , MSPM0C1104 , MSPM0C1104-Q1
优化级别标志可配置为:以牺牲性能为代价,偏向更小的编译器生成代码体积;或以牺牲代码体积为代价,偏向更佳性能。需要注意的是,由于优化算法和代码生成方法各不相同,编译器的选择会直接影响代码体积。
| 代码优化级别 | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| IDE | Keil | O0 | O1 | O2 | O3 | Ofast | Os balanced | Oz image size | Og |
| CCS | O0 | O1 | O2 | O3 | Ofast | Os | Oz | / | |
| IAR | None | Low | Medium | High | High-speed | High-Balanced | High-Size | / | |
| 优化级别选项 | 优化摘要 | 执行的优化 |
|---|---|---|
| -O0 | 不执行任何优化。建议在需要最大限度可调试性时使用此选项。 | 无 |
| -O1、-O | 启用受限的优化。在代码体积与可调试性之间提供良好的折衷。 |
|
| -O2 | 启用大多数优化。禁用某些可能导致编译器生成代码体积增大的优化。 |
|
| -O3 | 启用 -O2 可用的所有优化,以及另一些可能增大编译器生成代码体积的优化。建议在优化性能时使用此选项,但这很可能会增大代码体积。 |
|
| -Og | 启用受限的优化,同时保持可调试性。启用 -O1 可用的所有优化,并附加 -O2 中的部分优化。 |
|
| -Os | 启用 -O2 可用的所有优化,外加旨在减小代码体积的附加优化。与 -Oz 选项相比,-Os 选项会避免那些可能损害性能的代码体积优化。 |
|
| -Oz | 启用 -O2 可用的所有优化,外加旨在减小代码体积的附加优化。与 -Os 选项相比,-Oz 选项会执行额外的代码体积优化,而这些优化可能损害性能。若以减小代码体积为优先,建议使用此优化设置。 |
|
| -Ofast | 已弃用此选项。此选项启用 -O3 可用的所有优化,外加额外的激进优化,但这些优化不保证严格符合语言标准。若需要此行为,建议将 -O3 选项与 -fast-math 结合使用。 |
|
关于不同优化级别下汇编代码影响的示例,请参阅 TI Arm Clang 编译器工具用户指南。