S32DS_Optimization优化选项
S32DS3.4的选项, 右击工程后出现的选项
'char' is signed
- 让
char
类型为有符号, 类似signed char
- 让
'bitfield' is unsigned
- 当声明不使用
signed
/unsigned
时, 控制位字段是否无符号; 默认signed
(因为基本整形(int
等)也是signed
)
- 当声明不使用
Function sections
- 默认情况下, 函数放在.text节, 变量在.data节, 启用该优化会将函数放在独立的节
- 使用时, 要在代码中用#pragma section指令将函数放入特定的节, 确保设备加载器/连接器支持, 注意访问属性和节的访问属性是否匹配
Data sections
- 将全局变量放入独立的节
- 使用时, 要在代码中用#pragma section指令将函数放入特定的节, 确保设备加载器/连接器支持, 注意访问属性和节的访问属性是否匹配
No common uninitialized
- 启用后, 编译器不再为未初始化的全局变量和静态变量分配内存, 而是当作未定义符号, 在运行时定义, 可减小代码大小, 提高运行效率.
- 可能的风险: 如果程序使用了未初始化的全局变量/静态变量, 会访问到随机的值, 可能出现意外的结果
Do not inline functions
- 开启时禁用内联函数, 强制编译器按普通方式编译. 一般在调试时使用
Assume freestanding environment
- 告诉编译器当前代码运行在独立的环境中, 不依赖于操作系统, 这样编译器会对代码进行特殊优化
- 确保真的运行在独立环境, 操作系统相关函数,变量,库,头文件不可用
Disable builtin
- 禁用内建函数(编译器提供的预定义函数)
Single precision constants
- 告诉编译器在生成代码时使用浮点数常量的确切值
Link-time optimizer
- 在链接时对代码进行优化
Diasble loop invariant move
- 循环不变移动, 对循环中的不变量进行移动, 减少重复计算, 提高效率