This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28035: CLA程序为何编译出大量的空指令

Part Number: TMS320F28035

  err = fabs(ClaLoop->err);
00009196:   73E10000    MMOV32     MR2, *MAR0, UNCF
00009198:   7E20000A    MABSF32    MR2, MR2
0000919a:   74E08CD0    MMOV32     @0x8cd0, MR2
0000919c:   7FA00000    MNOP       
0000919e:   7FA00000    MNOP       
000091a0:   7FA00000    MNOP       
119           if(ClaLoop->err < -1.0)
000091a2:   73E10000    MMOV32     MR2, *MAR0, UNCF
000091a4:   78C2BF80    MCMPF32    MR2, #0xbf80
000091a6:   7FA00000    MNOP       
000091a8:   7FA00000    MNOP       
000091aa:   7FA00000    MNOP       
000091ac:   79840074    MBCNDD     0x74, LT
000091ae:   7FA00000    MNOP       
000091b0:   7FA00000    MNOP       
000091b2:   7FA00000    MNOP       
132           else if( ClaLoop->err > 1.0)
000091b4:   73E10000    MMOV32     MR2, *MAR0, UNCF
000091b6:   78C23F80    MCMPF32    MR2, #0x3f80
000091b8:   7FA00000    MNOP       
000091ba:   7FA00000    MNOP       
000091bc:   7FA00000    MNOP       
000091be:   798500CA    MBCNDD     0xca, LEQ
000091c0:   7FA00000    MNOP       
000091c2:   7FA00000    MNOP       
000091c4:   7FA00000    MNOP       
134               if(ClaLoop->out < CpuLoop->max_duty)
000091c6:   7FD1000C    MMOV16     MAR0, MR1, #0xc
000091c8:   7FA00000    MNOP       
000091ca:   7FA00000    MNOP       
000091cc:   7FA00000    MNOP       
000091ce:   73E10000    MMOV32     MR2, *MAR0, UNCF
000091d0:   7FD00004    MMOV16     MAR0, MR0, #0x4
000091d2:   7FA00000    MNOP       
000091d4:   7FA00000    MNOP       
000091d6:   7FA00000    MNOP       
000091d8:   73F10000    MMOV32     MR3, *MAR0, UNCF
000091da:   7D00000B    MCMPF32    MR3, MR2
000091dc:   7FA00000    MNOP       
000091de:   7FA00000    MNOP       
000091e0:   7FA00000    MNOP       
000091e2:   798300A6    MBCNDD     0xa6, GEQ
000091e4:   7FA00000    MNOP       
000091e6:   7FA00000    MNOP       
000091e8:   7FA00000    MNOP       
136                   ClaLoop->err_sum += ClaLoop->err;
000091ea:   7FD00002    MMOV16     MAR0, MR0, #0x2
000091ec:   7FF00000    MMOV16     MAR1, MR0, #0x0
000091ee:   7FA00000    MNOP       
000091f0:   7FA00000    MNOP       
000091f2:   73E10000    MMOV32     MR2, *MAR0, UNCF
000091f4:   73F20000    MMOV32     MR3, *MAR1, UNCF
000091f6:   7C20002E    MADDF32    MR2, MR3, MR2
000091f8:   74E10000    MMOV32     *MAR0, MR2
137                   if( err > (  CpuLoop->ref*0.0625) )
000091fa:   7FD10008    MMOV16     MAR0, MR1, #0x8
000091fc:   7FA00000    MNOP       
000091fe:   7FA00000    MNOP       
00009200:   7FA00000    MNOP       
00009202:   73E10000    MMOV32     MR2, *MAR0, UNCF
00009204:   778A3D80    MMPYF32    MR2, #0x3d80, MR2
00009206:   73F08CD0    MMOV32     MR3, @0x8cd0, UNCF
00009208:   7D00000B    MCMPF32    MR3, MR2
0000920a:   7FA00000    MNOP       
0000920c:   7FA00000    MNOP       
0000920e:   7FA00000    MNOP       
00009210:   79850078    MBCNDD     0x78, LEQ
00009212:   7FA00000    MNOP       
00009214:   7FA00000    MNOP       
00009216:   7FA00000    MNOP       

见上面debug时获取的汇编代码,赋值语句,比较语句,编译出来都有大量的空指令。我的CLA程序执行时间需要尽可能的短。所以,有什么办法(比如有什么设置选项)可以减少空指令嘛。