ZHCU876Z July 2001 – October 2023 SM320F28335-EP
以下是其他选项的详细说明:
--advice:performance[=all|none] | 如果启用三角函数加速器 (TMU) 支持 (--tmu_support) 且 --fp_mode=strict,则当编译器遇到可以在 --fp_mode=relaxed 下用 TMU 硬件指令替换的函数时,会生成建议。这些函数调用包括浮点除法、sqrt、sin、cos、atan 和 atan2。 此外,当使用--float_support=fpu32 对 EABI 进行编译时,启用此选项会导致在检测到双精度浮点运算提供建议。由于 EABI 双精度数为 64 位,请考虑将双精度数更改为浮点数,以提高 FPU32 模式下的性能。 |
--float_operations_allowed= {none|all|32|64} | 限制允许的浮点运算类型。默认为 all。如果设置为 none、32 或 64,则检查应用程序是否将在运行时执行运算。例如,如果在命令行上指定了 --float_operations_allowed=32,则编译器将在生成双精度运算时发出错误消息。这可以用来确保双精度运算不会意外地被引入到应用程序中。检查是在进行宽松模式优化后执行的,因此完全删除非法运算不会产生任何诊断消息。 |
--fp_mode={relaxed|strict} | 默认的浮点模式为 strict。要启用宽松浮点模式,请使用 --fp_mode=relaxed 选项。宽松浮点模式会使双精度浮点计算和存储在可能的情况下转换为单精度浮点。这种行为不符合 ISO 要求,但会加快代码速度,准确性会有降低。宽松模式下会发生以下具体的变化:
|
--fp_reassoc={on|off} | 启用或禁用浮点算术的重新关联。默认为 on。 |
因为浮点值的精度有限,并且浮点运算是四舍五入的,所以浮点算术既不具有结合性,也不具有分配性。。例如,(1 + 3e100) - 3e100 不等于 1 + (3e100 - 3e100)。如果严格遵循 IEEE 754,编译器通常不能重新关联浮点运算。使用 --fp_reassoc=on 时,允许编译器重新关联代数,但代价是某些运算的精度会降低。 | |
当 --fp_reassoc=on 时,可能会生成 RPT MACF32 指令。由于 RPT MACF32 指令计算两个部分和,然后将它们加在一起来计算整个累加值,因此在串行浮点乘法累加循环中,结果的精度可能有所不同。 | |
--fp_single_precision_constant | 致使所有未添加后缀的浮点常量都被视为单精度值。默认情况下,如果未使用此选项,则此类常量会按照 EABI 输出的预期隐式转换为双精度常量。如果浮点常量始终符合 32 位浮点数所支持的范围,那么将它们视为此类常量可以提高性能。 此选项可与 --fp_mode 和 -float_support 选项的任何设置一起使用。 |
--preinclude=filename | 在编译开始时包含 filename 的源代码。这可用于建立标准的宏定义。在包含搜索列表上的目录中搜索文件名。文件按照指定的顺序进行处理。 |
--printf_support={full| nofloat|minimal} |
支持更小、有限版本的 printf 函数系列(sprintf、fprintf 等)和 scanf 函数系列(sscanf、fscanf 等)运行时支持函数。有效值为:
|
没有运行时错误检查来检测是否使用了未包含支持的格式说明符。--printf_support 选项位于 --run_linker 选项之前,并且必须在执行最终链接时使用。 | |
--sat_reassoc={on|off} | 启用或禁用饱和算术的重新关联。 |