我想优化/减少我的软件的内存使用。我正在研究的一种方法是寻找删除冗余和不必要的代码。在我的软件中有很多功能(最多 3000 个)可以通过功能启用机制激活/停用。我要做的是找出一个特性使用了多少 RAM/FLASH,然后开始评估最大的那些,看看它们是否需要(可以从代码中安全地删除不需要的特性)。另请注意,一个函数本身可能有多个特性。
我们的代码看起来像这样:
void foo (void)
{
if(TRUE == feature1_enable)
{
doSomething;
}
if(TRUE == feature2_enable)
{
doSomething;
}
//rest of the code
}
如何计算 if 语句中的代码使用了多少 FLASH?我不能使用最终链接映射文件,因为它只提供有关函数的数据,而不是其中的单个语句。我想到的一种解决方案是从 C 代码中创建一个汇编列表文件 (.alst),然后计算 if 语句中指令的大小,这不过是这些代码行使用的 FLASH 数量。
请让我知道我是否走在正确的轨道上,或者是否有更好/更简单的方法来做到这一点?
我正在使用:处理器:MPC5554(POWER PC 架构)
编译器:WindRiver Diab
如果逻辑正确,我最终会编写一个脚本来搜索启用并进行所需的计算。