打印
[STM32F1]

哪个效率高些编译后

[复制链接]
245|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
happy_10|  楼主 | 2022-5-14 21:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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的数组内;

使用特权

评论回复
沙发
dengdc| | 2022-5-14 21:32 | 只看该作者
都不好,为什么要入栈呢??

使用特权

评论回复
板凳
zhenykun| | 2022-5-14 21:35 | 只看该作者
是啊,在C语言中不要去操纵堆栈。。

使用特权

评论回复
地板
juventus9554| | 2022-5-14 21:38 | 只看该作者
直接改汇编操作,并且这部分代码也必须用汇编。。

使用特权

评论回复
5
xxrs| | 2022-5-14 21:41 | 只看该作者
push 是个函数,不是指令,现改成push_to_buf();

使用特权

评论回复
6
wyjie| | 2022-5-14 21:43 | 只看该作者
第二个应该是push_to_buf((REG_T)(m_data>>8));

使用特权

评论回复
7
dengdc| | 2022-5-14 21:46 | 只看该作者
一个做加法运算,一个做移位运算,看起来第一个效率要高些,但实际上可能并不如此。

使用特权

评论回复
8
jiajs| | 2022-5-14 21:49 | 只看该作者
如果m_data是局部变量,第一种写法要求m_data不能放在寄存器中,第二个的m_data则可以放在寄存器,寄存器访问要比内存访问快很多

使用特权

评论回复
9
yszong| | 2022-5-14 21:54 | 只看该作者
如果所用的cpu支持多位移位运算,两者的效率不会有太大的区别,但第二种更安全。

使用特权

评论回复
10
stly| | 2022-5-14 21:59 | 只看该作者
感觉跟用什么芯片也有关系

使用特权

评论回复
11
renyaq| | 2022-5-14 22:01 | 只看该作者
要具体问题具体分析

使用特权

评论回复
12
happy_10|  楼主 | 2022-5-14 22:05 | 只看该作者
嗯,预料中的结果,多谢大家啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

744

主题

7973

帖子

6

粉丝