使用ccs5.4模拟c6678环境编程,想学习使用汇编语言进行优化,故将写好的线性汇编程序编译后在模拟运行时拷贝出反汇编代码,准备对代码进行分析,在反汇编中编译器使用了如下的并行排布方式:
90fa1aac: 00830001 SPMASK D2
90fa1ab0: 03D008F3 ||^ MV.D2 B20,B7
90fa1ab4: 000340F1 || MVD.M1 A0,A0
90fa1ab8: 0420805B || ADD.L2 4,B8,B8
90fa1abc: 7100202B || [!B2] MVK.S2 0x0040,B2
90fa1ac0: 02901FD9 || MV.L1X B4,A5
90fa1ac4: 039CA1E1 || ADD.S1 A5,A7,A7
90fa1ac8: C1C52A64 || [ A0] LDW.D1T1 *+A17[A9],A3
我将反汇编代码复制整理后写成函数重新编译,编译器报Resource conflict in loop buffer at cycle 8, modulo cycle 1错误
删掉MV.L1X B4,A5或ADD.S1 A5,A7,A7中的任意一条即可去除这个错误,应该是编译器认为这两条语句在资源使用上有冲突,但为什么之前它自己优化出的反汇编中可以这么使用呢?