2.4.4.C 语言的饱和运算

若要在 C28x 上用 C 语言执行高效的饱和运算,请使用三元 ?: 运算符。

使用以下代码中的 if 结果和 -O3

表 2.7 使用 if 的饱和运算 - 效率低下
C 源代码 生成的汇编代码
intsaturate(intsum,intmax,intmin){if(sum>max)sum=max;if(sum<min)sum=min;returnsum;}
||saturate||: MOVZAR6,ALMOVAL,AR4CMPAH,AR6MOVAR6,AH,LTCMPAL,AR6MOVAR6,AL,GTMOVAL,AR6LRETR

使用 ?: 会生成更高效的 MAX/MIN 指令:

表 2.8使用 ?: 的饱和运算- 高效
C 源代码 生成的汇编代码
intsaturate_opt(intsum,intmax,intmin){sum=(sum>max)? max: sum;sum=(sum<min)? min: sum;returnsum;}
||saturate_opt||: MINAL,AHMAXAL,AR4LRETR