打印
[应用相关]

编译后哪个效率高些

[复制链接]
1557|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sourceInsight|  楼主 | 2019-10-19 12:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


#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的数组内;

使用特权

评论回复
沙发
feiqi1| | 2019-10-19 12:16 | 只看该作者
没有详细比较过,不清楚

使用特权

评论回复
板凳
androidbus| | 2019-10-19 12:16 | 只看该作者

都不好,为什么要入栈呢

使用特权

评论回复
地板
litengg| | 2019-10-19 12:19 | 只看该作者
是啊,在C语言中不要去操纵堆栈

使用特权

评论回复
5
qiangweii| | 2019-10-19 12:20 | 只看该作者
直接改汇编操作,并且这部分代码也必须用汇编

使用特权

评论回复
6
shashaa| | 2019-10-19 12:23 | 只看该作者
push 是个函数,不是指令,现改成push_to_buf();

使用特权

评论回复
7
xia00| | 2019-10-19 12:23 | 只看该作者
第二个应该是push_to_buf((REG_T)(m_data>>8));
一个做加法运算,一个做移位运算,看起来第一个效率要高些,但实际上可能并不如此

使用特权

评论回复
8
hfdy01| | 2019-10-19 12:26 | 只看该作者
如果m_data是局部变量,第一种写法要求m_data不能放在寄存器中,第二个的m_data则可以放在寄存器,寄存器访问要比内存访问快很多。

使用特权

评论回复
9
CallReceiver| | 2019-10-19 12:26 | 只看该作者
如果所用的cpu支持多位移位运算,两者的效率不会有太大的区别,但第二种更安全。

使用特权

评论回复
10
boy1990| | 2019-10-19 12:30 | 只看该作者
push_to_buf((REG_T)(m_data>>8));是把m_data的低字节压上去这是大端还是说小端?

使用特权

评论回复
11
bbapple| | 2019-10-19 12:30 | 只看该作者
push_to_buf((REG_T)m_data);在大端模式下是把高字节压上去还是低字节压上去?

使用特权

评论回复
12
wanglaojii| | 2019-10-19 12:33 | 只看该作者
我觉得你的REG_T一般来说是指寄存器类型,也就是说几位机,而第2种好像只能在8位机下工作。

使用特权

评论回复
13
laozhongyi| | 2019-10-19 12:33 | 只看该作者
第一种才要考虑大端小端的问题。

使用特权

评论回复
14
Edisons| | 2019-10-19 12:36 | 只看该作者
大端情况下,push_to_buf(*(((REG_T*)&m_data)++));压入的是低字节,小端情况下,压入的是高字节。

使用特权

评论回复
15
_gege| | 2019-10-19 12:36 | 只看该作者
是啊,你这些在8位机下讨论才有意义。

使用特权

评论回复
16
Mozarts| | 2019-10-19 12:38 | 只看该作者
如果REG_T是int(16位或32位),push_to_buf(*(((REG_T*)&m_data)++));压入的不是m_data的低字节也不是m_data的高字节,而是与m_data相邻的int。

使用特权

评论回复
17
Listate| | 2019-10-19 12:39 | 只看该作者
两个变异后,结果是一样的,都是直接地址访问了一个字节,然后放入通用寄存器,然后调用函数.
keil 4环境.

使用特权

评论回复
18
zhouhuanの| | 2019-10-19 12:40 | 只看该作者
个人喜欢这样写:
push_to_buf((((REG_T*)&m_data)[1]));

使用特权

评论回复
19
木木guainv| | 2019-11-15 11:49 | 只看该作者
这个怎么比较

使用特权

评论回复
20
xiaoqizi| | 2019-11-15 12:00 | 只看该作者
看不懂汇编语言啊

使用特权

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

本版积分规则

138

主题

1619

帖子

1

粉丝