开发环境:IAR:6.60.1.5099
优化等级: high balance
file:///D:/Program%20Files/wizdata/temp/b5126e70-0bf1-4b94-9f28-592a80d0b25d/128/index_files/e250c490-0043-46c9-981b-aa5f4de74bcb.jpg
现象:有一个工程需要增加一个通信功能,该功能总共有4个函数,称为 A,B,C,D,其中A函数调用B,C,D,A函数被工程中的原来的函数调用。在A函数内,BCD函数均被流水调用多次(30次)。
B函数的调用一般形式为 B(0x12,pbuf) 每次调用B的pbuf参数2都是一样的,参数1是各种常数,不要问我为什么参数2不变为啥还要这个参数,我也不知道,历史传承。
调用树简单如下所示:
file:///D:/Program%20Files/wizdata/temp/b5126e70-0bf1-4b94-9f28-592a80d0b25d/128/index_files/a7f13c97-1a01-486b-8c39-24108d60c82a.png
两种写法:
mode-1 将A,B,C,D 函数放置在init.c 中,main.c 中extern A();mode-2 将A,B,C,D 函数放置在main 中,main.c 头声明 A();
发现代码空间差距2K,mode-2 代码空间较大 |