代码空间优化小结
代码量优化理念
当我们使用的芯片代码空间大小接近饱和的时但还有功能需要实现的时候就需要缩减代码量,代码量的缩减就好比连连看游戏,将相同的东西抵消,变成一个可重复执行的函数,这样就可以达到节省代码量的效果。代码量的优化也可能会有其他的代价,例如降低代码的可读性和运行效率,这一点是要在优化前进行权衡的。
1、合并相同的指令
优先寻找代码中重复执行的指令,这些重复指令可以封装为函数,通过重复调用同一个函数来达到减少代码量的目的。但这些重复执行的指令不应该不小于跳转函数和退出函数的指令大小,不然就是负优化了。
例子如下:
uint8_t c;
void func(uint8_t a, uint8_t b)
{
if(1 == a)
c = 1;
else if(2 == a)
c = 2;
else if(3 == a)
c = 3;
if(1 == b)
c = 1;
else if(2 == b)
c = 2;
else if(3 == b)
c = 3;
}
以上代码可以改为:
uint8_t c;
static void c_init(uint8_t val)
{
if(1 == val)
c = 1;
else if(2 == val)
c = 2;
else if(3 == val)
c = 3;
}
void func(uint8_t a, uint8_t b)
{
c_init(a);
c_init(b);
}