TI中文支持网
TI专业的中文技术问题搜集分享网站

编译、调试问题

各位专家:

       在调试过程中,会出现简单的赋值语句执行结果不正确现象,查看反汇编代码,发现如下情况:

       正确编译结果为:

                                    LDW    B4;       NOP;       STD    B4, B15[12];

       错误编译结果为:

                                     SWBP 0;        NOP;        STD   B4,B15[12];

       遇到错误结果重新编译后能得到正确的结果

       请问专家产生以上现象的原因是什么?查了一下感觉不像是堆栈溢出,怎么避免???

       非常感谢!!!

         

Allen35065:

设置了不同的调试选项?使用了不同的编译器版本?

li yanlong:

回复 Allen35065:

设置的是相同的调试选项,相同的编译器版本。把L2中的资源放到共享里就不出现了,但是从map看不存在L2溢出的问题。。。。

Na Li7:

把这两条代码的16进制贴上来看看?包括前后几个32bit代码,一条说明语句对应的7个32bit哈,SWBP按理说不是用户代码能用的

li yanlong:

回复 Na Li7:

您好:

        正确的赋值语句:  FDCD            LDW.D2T2    *B15[15],B4

                                       6C6E             NOP

                                       DD45             STW.D2T2    B4,*B15[10]

 

        错误的赋值语句:  FDCD            SWBP    0

                                       6C6E             NOP

                                       DD45             STW.D2T2    B4,*B15[9]

 

感觉还是堆栈问题,把大数组从L2放到共享就没出现了,但是我看map文件,L2的空间还有富余

赞(0)
未经允许不得转载:TI中文支持网 » 编译、调试问题
分享到: 更多 (0)