[应用相关] 编译后哪个效率高些呢

[复制链接]
1134|12
 楼主| happy_10 发表于 2018-9-4 20:06 | 显示全部楼层 |阅读模式
#define INT8U REG_T

INT16U m_data

push_to_buf(*(((REG_T*)&m_data)++));

push_to_buf((REG_T)(m_data<<8));

把m_data,放到一个REG_T的数组内;
zhuhuis 发表于 2018-9-4 20:09 | 显示全部楼层
都不好,为什么要入栈呢??
songqian17 发表于 2018-9-4 20:12 | 显示全部楼层
是啊,在C语言中不要去操纵堆栈。。
zwll 发表于 2018-9-4 20:14 | 显示全部楼层
直接改汇编操作,并且这部分代码也必须用汇编。。
juventus9554 发表于 2018-9-4 20:25 | 显示全部楼层
push 是个函数,不是指令,现改成push_to_buf();
houcs 发表于 2018-9-4 20:28 | 显示全部楼层
第二个应该是push_to_buf((REG_T)(m_data>>8));
dingy 发表于 2018-9-4 20:32 | 显示全部楼层
一个做加法运算,一个做移位运算,看起来第一个效率要高些,但实际上可能并不如此。
renyaq 发表于 2018-9-4 20:37 | 显示全部楼层
如果m_data是局部变量,第一种写法要求m_data不能放在寄存器中,第二个的m_data则可以放在寄存器,寄存器访问要比内存访问快很多
xxrs 发表于 2018-9-4 20:40 | 显示全部楼层

如果所用的cpu支持多位移位运算,两者的效率不会有太大的区别,但第二种更安全。
 楼主| happy_10 发表于 2018-9-4 20:44 | 显示全部楼层

搞定了,呵呵,犯了低级错误……结贴啦,多谢各位
 楼主| happy_10 发表于 2018-9-4 20:48 | 显示全部楼层

嗯,预料中的结果,先结贴吧,多谢大家啦
heimaojingzhang 发表于 2018-9-5 10:05 | 显示全部楼层
感觉跟用什么芯片也有关系
paotangsan 发表于 2018-9-5 11:33 | 显示全部楼层
要具体问题具体分析
您需要登录后才可以回帖 登录 | 注册

本版积分规则

744

主题

7973

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部