stm32的变量定义,32b是不是效率更高?

2019-12-28 17:49发布

如题,如果工作再32位模式,是不是32位最好,8位或者16位在读取的时候还要增加移位和对齐操作。

Thumb模式呢?

懂编译器和熟悉ARM的出来说说,主要是M3,乘除法效率方面。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
EMC菜鸟
1楼-- · 2019-12-30 04:41
同意楼上说的,51的那种思维不适合ARM了,没必要去抠那么仔细,代码的可读性、可扩展行、可移植性更重要!
擦鞋匠
2楼-- · 2019-12-30 05:07
 精彩回答 2  元偷偷看……
wye11083
3楼-- · 2019-12-30 09:17
擦鞋匠 发表于 2017-5-16 13:56
小弟也一直被这个问题困扰...
之前似懂非懂的听人说,使用32位数据格式会提高代码运行速率(尽管其实使用ui ...

cm不支持arm指令集。。所以只有thumb模式了。
状态切换只要一条ljmp,没有损耗。
擦鞋匠
4楼-- · 2019-12-30 14:48
wye11083 发表于 2017-5-16 15:09
cm不支持arm指令集。。所以只有thumb模式了。
状态切换只要一条ljmp,没有损耗。 ...

额,大神别嫌小弟啰嗦啊,我还有一个疑问...
在LR寄存器或者PC寄存器中一般特意将LSB置1以表示Thumb状态
我的疑问是:
既然CM3/CM4根本就不支持ARM指令,那么...这一步有什么意义?
难道只是为了跟经典的ARM7处理器兼容???
还是说,置1表示16位Thumb,不置1表示32位Thumb(类似于ARM指令)???
恳请神指教,也请其它神过来围观...
flash3g
5楼-- · 2019-12-30 19:29
感觉还是用uint32_t好点
wye11083
6楼-- · 2019-12-30 22:13
擦鞋匠 发表于 2017-5-16 15:43
额,大神别嫌小弟啰嗦啊,我还有一个疑问...
在LR寄存器或者PC寄存器中一般特意将LSB置1以表示Thumb状态
我 ...

我记得之前在哪个手册里看到的,cm是有那么几条32位指令的——所以绝大多数时候PC的LSB都是1。

一周热门 更多>