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 |