2.4.4.C 语言的饱和运算¶
若要在 C28x 上用 C 语言执行高效的饱和运算,请使用三元 ?: 运算符。
使用以下代码中的 if 结果和 -O3:
| 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 指令:
| C 源代码 | 生成的汇编代码 |
|---|---|
intsaturate_opt(intsum,intmax,intmin){sum=(sum>max)? max: sum;sum=(sum<min)? min: sum;returnsum;} |
||saturate_opt||: MINAL,AHMAXAL,AR4LRETR |
