您好:
最近编写并行汇编的时候出现了很奇怪的问题,希望各位技术支持能解答下.
现象:多条指令并行执行的时候,单步调试,,结果存放在寄存器中,发现有些指令执行完后,寄存器中的值没有变化, 但是Simulator下执行是很正常的. 有时候改变该指令执行的功能单元的时候,该指令会正常执行!
希望能解决这个问题,多谢!
Tommy Song:
有的指令的执行结果是有延迟的,也就是说执行之后需要几个Cycle才能得到最终结果。例如LDW指令,其延时周期数是4,意味着指令执行4个cycle之后,内存的值才会load到寄存器中。更详细内容请参考sprugh7的3.4节。
Zhan Xiang:
c6000的汇编复杂程度较高,如果对性能不是要求到极致,您可以尝试使用编译器提供的intrinsic指令,通过该方式告诉编译器你要使用某些特殊指令,让编译器帮你做优化,效率也是很高的。
si cheng:
回复 Zhan Xiang:
您好:
我简化了我的代码,上传到论坛,麻烦各位技术支持看下,出现的问题在 出错说明.txt文档中有详细说明.
多谢!