2、優(yōu)化后的程序
value = 0;
bitsp = bits;
bitnop= &bitno[mode][0];
j = *bitnop++;
j1 = *bitnop++;
j2 = *bitnop++;
j3 = *bitnop++;
j4 = *bitnop++;
_nassert(loop[mode]>=35);
for (i = 0; i < loop[mode]; i++)
{
value = value*2 + *bitsp++;
j--;
if (j == 0)
{
*prm++ = value;
value = 0;
j = j1;
j1 = j2;
j2 = j3;
j3 = j4;
j4 = *bitnop++;
}
}
3、優(yōu)化說明
源程序按照數(shù)據(jù)位流定義取出參數(shù),為雙重循環(huán)結構,優(yōu)化中采用重新根據(jù)位流的bit長度定義循環(huán)次數(shù),化簡為單重循環(huán),然后優(yōu)化循環(huán),去除boundary,使pipeline的數(shù)目最小。
十一、copy程序的優(yōu)化
1、源代碼:
Word16 i;
for (i = 0; i < L; i++)
{
y[i] = x[i];
}
2、改編代碼:
(1)要求數(shù)組長度能被2整除
Word32 i;
Word32 temp;
int *p1 = (int *)&x[0];
int *q1 = (int *)&y[0];
for (i = 0; i < L/2; i++)
{
temp = *p1++;
*q1++ = temp;
}
(2)要求數(shù)組長度能被4整除
Word32 i;
Word32 temp1, temp2;
Word32 *pin1, *pin2, *pout1, *pout2;
pin1 = (Word32 *)&x[0];
pin2 = (Word32 *)&x[2];
pout1= (Word32 *)&y[0];
pout2= (Word32 *)&y[2];
for (i = 0; i < L/4; i++)
{
temp1 = *pin1;
temp2 = *pin2;
pin1+=2;
pin2+=2;
*pout1= temp1;





