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.

[参考译文] CCS/PROCESSOR-SDK-AM437X:为什么在 CCS7.4的调试模式和发布模式下进行编译时生成不同的机器码?

Guru**** 2186445 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/796482/ccs-processor-sdk-am437x-why-do-you-generate-different-machine-codes-when-compiling-in-debug-mode-and-release-mode-in-ccs7-4

器件型号:PROCESSOR-SDK-AM437X

工具/软件:Code Composer Studio

我有如下代码:

void syscpudebughandler (void)

   ArmDebugHandler (((PFAPPDEBUGHANDLER) CAL_AppDebugHandler);
   返回;

但是、我在发布时会得到不同的机器代码:

         syscpudebughandler():
8007edfc:  E30A0AF4           movw      r0、#0xaaf4
8007e00:  E3480002           movt      r0、#0x8002
8007e04:  EAFFFEC           b         ArmDebugHandler

和在调试中:

294      {
         syscpudebughandler():
8009c3e4:  E92D4800           推      送{r11、lr}
8009c3e8:  E28DB004           添加       了 r11、sp、#4
295          ArmDebugHandler (((PFAPPDEBUGHANDLER) CAL_AppDebugHandler);
8009c3ec:  E30100D4           movw      r0、#0x10d4
8009c3f0:  E3480003           movt      r0、#0x8003
8009c3f4:  EB000001           BL        ArmDebugHandler
296          返回;
8009c3f8:  E320F000           nop        
297      }
8009c3fc:  E8BD8800           pop       {r11、PC}

为什么在发布模式下编译函数调用之前没有栈指令、在函数调用之后没有栈指令?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    版本配置可能在较高层面上启用了编译器优化、而调试配置可能不启用。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、

    我明白了。