OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4220|回复: 5

如果函数参变是用4个8位的参数好还是4个32位的参数好呢?或4个32位数

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-7-13
在线时间
3 小时
发表于 2021-1-20 23:17:11 | 显示全部楼层 |阅读模式
1金钱
请教一个问题,C语言函数参变是用4个8位的参数好还是一个32位的参数好?

如果用4个8位,传送参数时可能是4个入栈动作,而32位的是一个动作;
但如果用4个8位函数内部就不需要32位去移位操作,函数简单些
用32位写函数内部需要移位处理;
从占用内存角度来说 4个8位是占用一个32位的空间,两者一样, 这里是这样的吗?我不能肯定;


如果函数参变是用4个8位的参数好还是4个32位的参数好呢?
8位数在32位ARM内核好像是比32位数还要多出移位动作?
这样比较感觉4个 32位更划得来,
但从占用内存角度来说 4个32位占用空间可能比4个8位多;

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

114

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2583
金钱
2583
注册时间
2019-10-18
在线时间
414 小时
发表于 2021-1-21 11:10:51 | 显示全部楼层
对于我自己个人来说,肯定是怎么4个参数,软件可读性怎么好怎么来,这点时间STM耗的起,RAM也耗的起.
不然回头来一看,我原来写的啥就忘了.
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3874
金钱
3874
注册时间
2017-3-7
在线时间
1690 小时
发表于 2021-1-21 11:16:02 | 显示全部楼层
额,不知道你是什么应用场景,会考虑这些,感觉程序运行差异就是几个指令周期。用结构体组合下,传指针感觉会好点
回复

使用道具 举报

8

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2018-12-21
在线时间
126 小时
发表于 2021-1-21 20:22:03 | 显示全部楼层
你确实可以将4bytes打包成一个参数传入,这样堆栈操作就可以减少。但是程序内需要做分解操作,这样总时间没有任何优势。
至于该不该把8位参数扩充成32位的,我建议这么做。因为变量数据字长与处理器寄存器字长一致的时候处理起来是最快的。因为变量字长低于寄存器字长的时候,为了保证语言的规定,需要屏蔽掉可能溢出的高位数据,只保留变量本身的字长。比如,两个8位数相加,实际上在寄存器是两个最多8位有效的32位数相加,得到的32位结果要屏蔽掉高24位才能输出到下一级,这种规范有效位的操作确实会占用时间。但是如果你的程序只支持8位输入,对于32位扩展输入没有支持意义或者会出错,使得你需要在程序里面还要把扩充的32位数据再限制会8位,那么这个位提升就没有任何必要,直接使用8位数据就可以。
回复

使用道具 举报

8

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2018-12-21
在线时间
126 小时
发表于 2021-1-21 20:27:21 | 显示全部楼层
0x00000000 发表于 2021-1-21 20:22
你确实可以将4bytes打包成一个参数传入,这样堆栈操作就可以减少。但是程序内需要做分解操作,这样总时间没 ...

我的建议是,确实能够得到时间优化得情况下,建议牺牲一点空间,因为ARM得MCU基本上都有很大的存储资源,耗得起。但是CPU时间相对来说还是比较紧缺的,毕竟就一个72MHz的Cortex-M3嘛。跟2楼说的差不多。
那么对于可读性与效率的权衡呢?我建议在没有办法取得重大效率突破的情况下,或者没有办法把某种方案由不可能实现变为可能实现的情况下,优先保证可读性。毕竟,对于非致命的效率损耗来说,可维护性更加重要。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2021-1-22 02:00:15 | 显示全部楼层
重要的是方便使用。。。不是组合参数。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 22:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表