C6000软件优化经验总结(3)
<P>八、</P>
<P>      <STRONG> 1、源程序</STRONG></P>
<P> for (k = 0; k < NB_PULSE; k++)</P>
<P> {</P>
<P>  i = codvec[k];</P>
<P>  j = sign[i]; </P>
<P>  index = mult(i, Q15_1_5);</P>
<P>  track = sub(i, extract_l(L_shr(L_mult(index, 5), 1)));</P>
<P>  if (j > 0)</P>
<P>  {</P>
<P>   if (i < l_subfr) code[i] = add(code[i], 4096); </P>
<P>   codvec[k] += (2 * L_SUBFR);</P>
<P>  }</P>
<P>  else</P>
<P>  {</P>
<P>   if (i < l_subfr) code[i] = sub(code[i], 4096); </P>
<P>   index = add(index, 16);</P>
<P>  }</P>
<P>  if (indx[track] < 0)</P>
<P>  {</P>
<P>   indx[track] = index;</P>
<P>  }</P>
<P>  else</P>
<P>  {</P>
<P>   if (((index ^ indx[track]) & 16) == 0)</P>
<P>   {</P>
<P>    if (sub(indx[track], index) <= 0)</P>
<P>    {</P>
<P>     indx[track] = shl((indx[track] & 16), 3)</P>
<P>                + shr(extract_l(L_mult((indx[track] &                 15), NB_POS)), 1) + (index & 15);</P>
<P>    }</P>
<P>    else</P>
<P>    {</P>
<P>     indx[track] = shl((index & 16), 3)</P>
<P>               + shr(extract_l(L_mult((index & 15),                  NB_POS)), 1) + (indx[track] & 15);</P>
<P>    }</P>
<P>   }</P>
<P>   else</P>
<P>   {</P>
<P>    if (sub((indx[track] & 15), (index & 15)) <= 0)</P>
<P>    {</P>
<P>     indx[track] = shl((index & 16), 3)</P>
<P>                + shr(extract_l(L_mult((index & 15),                   NB_POS)), 1) + (indx[track] & 15);</P>
<P>    }</P>
<P>    else</P>
<P>    {</P>
<P>     indx[track] = shl((indx[track] & 16), 3)</P>
<P>               + shr(extract_l(L_mult((indx[track] & 15),                NB_POS)), 1) + (index & 15);</P>
<P>    }</P>
<P>   }</P>
<P>  }</P>
<P> }</P>
<P>      <STRONG> 2、优化后的程序</STRONG></P>
<P> for (k = 0; k < 8; k++)</P>
相关资讯