工具/软件:Code Composer Studio
您好,
我正在测量SRAM上堆栈段的使用情况。
对于测试,程序设计为包含不同数量的局部变量,如1.01万或1000。
(我的实验是在使用Code Composer Studio v7的MSP432P401R评估板上进行的。)
然而,随着实验的进行,发生了一些奇怪的事情。
即局部变量的数量会影响程序的汇编代码。
如果局部变量的数量为10, 则使用LDM或STM汇编代码存储在堆栈中。
但是,由于局部变量的数量大于100, 因此调用了另一个函数。
函数的名称是"__aebi_memcpy(), __aebi_memcpy4(), __aebi_memcpy8(),memcpy()",用包含推入和POP代码的'.asmfunc stack_usage(0)'指定。
(在CCS v7的调试模式下检查了所有汇编代码和函数调用。)
1.我得出这样的结论是因为ARM编译器的优化(例如函数内联)。
这是正确的猜测吗? 还是有其他原因呢?
如果是,我想让编译器不要 随意使用该函数。
这意味着,我想让我的程序只使用诸如LDM或STM之类的汇编代码,而不是memcpy()。
我已经使用了一个名为--disable_inlining的编译器选项,但没有任何效果。
有什么办法可以做吗?
谢谢你