到目前为止、我已经尝试了优化级别0和1、并使用-opt_for_speed 进行了尝试、但没有成功。 目前优化级别2似乎有某种原因、但-o1也是如此、直到我最终遇到相同的问题。 发生的情况是、编译器似乎随机选择函数(每次代码更改时似乎都是新函数)以进行优化。 禁用优化可以完全解决问题。
对优化的 Out 函数的调用会将我引导到一个包含所有 BRA @PC 指令的地址、这当然会将我的 PC 设置为0并且程序保持暂停。
我还应该注意的是、我的 FRAM2已满、FRAM 为82%、RAM 为81%。
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.
到目前为止、我已经尝试了优化级别0和1、并使用-opt_for_speed 进行了尝试、但没有成功。 目前优化级别2似乎有某种原因、但-o1也是如此、直到我最终遇到相同的问题。 发生的情况是、编译器似乎随机选择函数(每次代码更改时似乎都是新函数)以进行优化。 禁用优化可以完全解决问题。
对优化的 Out 函数的调用会将我引导到一个包含所有 BRA @PC 指令的地址、这当然会将我的 PC 设置为0并且程序保持暂停。
我还应该注意的是、我的 FRAM2已满、FRAM 为82%、RAM 为81%。
下面是一个很好的示例。 今天、我在以下优化级别进行了清理和重建

直到 现在、此函数从未出现过此问题。 它位于 stdlib.h 的 atoll 函数中。 这是函数调用。




到目前为止一切都很好。 直到我们单击以下代码行

在汇编语言中是...

函数被调用 fine (tact 中的指针)。 但该函数的汇编看起来缺少/优化了。

其余的暂停@PC 0
在-OPT1重复此操作会产生相同的结果。
在-opt0处、函数处于 tact 中并成功运行。
-opt0


只是为了澄清-无论我是单步执行还是自由运行代码、行为都是相同的。 两者都最终@PC 0
由于反汇编显示的是符号表中的函数名称、这意味着链接器尚未删除该函数。
相反、应怀疑正在运行的程序中的内容覆盖了包含该函数的 FRAM。