用指针访问变量比直接使用变量程序大了很多,如何优化?

2020-01-13 18:25发布

指针nec_code指向数组,按下面的写法足足比直接写数组元素多了200字节ROM,有无办法优化?
  1.                     *nec_code     >>= 1;
  2.                     if(*(nec_code+1) & 0x01) *nec_code     |= 0x80;
  3.                     *(nec_code+1) >>= 1;
  4.                     if(*(nec_code+2) & 0x01) *(nec_code+1) |= 0x80;
  5.                     *(nec_code+2) >>= 1;
  6.                     if(*(nec_code+3) & 0x01) *(nec_code+2) |= 0x80;
  7.                     *(nec_code+3) >>= 1;
  8.                     if(u8_ir_bit_data == 1)  *(nec_code+3) |= 0x80;
复制代码


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
retention
1楼-- · 2020-01-14 12:22
neutronlmk 发表于 2019-4-2 22:09
我想把程序做成模块化,如果不使用指针就只能用全局变量来传递参数了。 ...

函数的参数不也是一样能传递内容?只不过没有指针所能涵括的数据量大而已
zhaoyuanxian
2楼-- · 2020-01-14 13:26
现在的问题是看看你的那一大堆算法能不能优化了
mcu5i51
3楼-- · 2020-01-14 15:50
 精彩回答 2  元偷偷看……
kutf
4楼-- · 2020-01-14 18:17
你这个算法就是做一次整数的右移操作。看看有没有机器指令。应该几句话就能搞定的。不需要用这么复杂的c语言实现
qinxg
5楼-- · 2020-01-14 22:58
要用nec_code++;  *nec_code处理.   
*(nec_code+3): 先算加法, 再偏移量寻址, 再处理.   数组是固定地址寻址
liwei_jlu
6楼-- · 2020-01-15 01:54
读取4字节数据到本地变量后,本地变量处理,完成后再把这四个数据写回去