ft calc(ft x, ft y) { ft r; r = __builtin_mult_fr1x16(x, y); return r; }__builtin_mult_fr1x16展开后的汇编代码为:// line 29 R0.L = R0.L * R1.L (T); R0 = R0.L (X); W[FP + 16] = R0;因而完成这样一个运算将只需要一个cycle的时间。这里的乘法运算使用了(T)尾缀,文档里这样解释:Signed fraction with truncation. Truncate Accumulator 9.31 format value at bit 16. (Perform no rounding.) Saturate the result to 1.15 precision in destination register half. Result is between minimum -1 and maximum 1-2-15 (or, expressed in hex, between minimum 0x8000 and maximum 0x7FFF).这种计算方式直接将累加器里的数进行截断而不进行任何舍入的处理。1.2 multr_fr1x16这个函数定义为:/* Performs a 16-bit fractional multiplication of the two input ** parameters. The result is rounded to 16 bits. Whether the ** rounding is biased or unbiased depends what the RND_MOD bit ** in the ASTAT register is set to. */