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.

编译、调试问题



各位专家:

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

       正确编译结果为:

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

       错误编译结果为:

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

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

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

       非常感谢!!!

         

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

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

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

  • 您好:

            正确的赋值语句:  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的空间还有富余