ZHCUCO7B December   2024  – November 2025 F29H850TU , F29H859TU-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
  5. 2性能优化
    1. 2.1 编译器设置
      1. 2.1.1 启用调试和源代码交叉列
      2. 2.1.2 优化控制
      3. 2.1.3 浮点数学
      4. 2.1.4 定点除法
      5. 2.1.5 单精度与双精度浮点
      6. 2.1.6 链接时优化 (LTO)
    2. 2.2 存储器设置
      1. 2.2.1 从 RAM 执行代码
      2. 2.2.2 从闪存执行代码
      3. 2.2.3 数据放置
    3. 2.3 代码结构和配置
      1. 2.3.1 内联
      2. 2.3.2 内联函数
      3. 2.3.3 易失性变量
      4. 2.3.4 函数参数
      5. 2.3.5 启用更广泛的数据访问
      6. 2.3.6 自动代码生成工具
      7. 2.3.7 准确剖析代码
    4. 2.4 应用代码优化
      1. 2.4.1 SDK 优化库
      2. 2.4.2 使用库优化代码尺寸
      3. 2.4.3 C29 特别指令
      4. 2.4.4 C29 并行性
      5. 2.4.5 首选 32 位变量和写入
      6. 2.4.6 编码风格及其对性能的影响
  6. 3参考资料
  7. 4修订历史记录

浮点数学

-ffast-math 是建议用于浮点计算的编译器选项。此选项是多个选项的集合,其中两个显著提高性能的选项是 -fapx-funcs 和 -freassoc。这使编译器能够对浮点数学做出积极假设,让精度只会出现有限的损失。有关控制浮点行为的详细信息,请参阅 Clang 编译器用户手册和 C29 Clang 编译器工具用户指南。有关 -ffast-math 的详细信息,请参阅 Clang 编译器用户手册和 C29 Clang 编译器工具用户指南

使用 -ffast-math 时,编译器会将对许多标准 RTS 库函数的调用替换为相应的 TMU 指令。TMU 内置在 C29 CPU 中。

使用 C '/' 运算符的单精度浮点除法是使用 PREDIVF、SUBC4F(7次)和 POSTDIVF 指令实现的。使用 C '/' 运算符的双精度浮点除法是使用 PREDIVF、SUBC3F(19次)和 POSTDIVF 指令实现的。借助-ffast-math 编译器选项,单精度浮点除法是使用 DIVF(估算分母的倒数并与分子相乘)指令实现的。