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.

[参考译文] TMS570LS31x:最坏情况堆栈分析(CG_xml 和调用图)

Guru**** 2589280 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/982345/tms570ls31x-worst-case-stack-analysis-cg_xml-and-call-graph

1.使用 CG_xml 栈分析工具时,是否可以在调用图中查看汇编函数最坏情况下的栈使用情况(WCS)? 运行调用图时,我只能看到 WCS =??? 用于汇编函数。

仅供参考,当变量被声明并仅在循环中使用时,CG_xml 栈分析工具如何计算或确定最坏情况栈使用(WCS)?

就像测试一样、当我在 for 循环中声明变量并仅在 for 循环中使用该变量时、然后为该测试构建运行调用图时、该特定函数的 WCS 似乎没有任何差异。 此变量声明是否对函数的 WCS 有任何影响? 此外、项目中的优化设置为关闭。

例如、放置以下代码的函数的 WCS 没有区别:

对于(I = 0;I < 3;I++)

int test_count = 2;
test_count = test_count + 3;

(笑声)

谢谢、
Eric

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

    [引用 user="Eric Y"]是否可以在调用图中查看汇编函数最坏情况下的堆栈使用情况(WCS)?

    默认情况下、汇编函数使用的堆栈数量未知。  汇编程序员可以通过添加类似于...的代码行来更改此设置。

    name_for_function:.asmfunc stack_usage(12);使用12字节的栈空间 

    要了解有关.asmfunc 指令的更多信息、 请在 TI ARM 汇编工具手册中搜索 短语 标记函数边界。   

    [引用 user="Eric Y"]当变量仅在循环中声明和使用时,CG_xml 栈分析工具如何计算或确定最坏情况下的栈使用情况(WCS)?

    此类局部变量的处理方式与函数开头声明的变量相同。  在本例中、我怀疑局部变量被分配给寄存器、而不是堆栈。   

    更多背景... 编译器一次为所有局部变量分配空间、而不考虑它们在函数中的作用域。  此操作使用的堆栈数量记录在 DWARF 调试信息中、其属性名为 DW_AT_FRAME_BASE DW_AT_TI_max_FRAME_SIZE。  所有 CG_xml 实用程序的源代码都在软件包中。  要查看 call_graph 的代码、请查看文件 install_location_ofd\call_graph.pl。   

    谢谢、此致、

    乔治