打印

cortex m0上32位乘法结果怎么保存?

[复制链接]
1497|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
隐身的鱼|  楼主 | 2017-7-19 11:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教下,在cortex m0上要作一个32位乘法,定义了一个long long型.用于结果保存.
但结果但结果始终只是保留最低的32位,,,不明白原因,想要全部结果.
unsigned long uAD;
long long sum=0;
uAD=0x7f55fef3;
sum=uAD * uAD;
结果单步执行,sum为0x65451aa9,高位的3f566fd8被丢掉了...
如何处理,请大神指点下.谢.

win7下用vc++验证,结果一样.

相关帖子

沙发
df_flying| | 2017-7-19 16:36 | 只看该作者
本帖最后由 df_flying 于 2017-7-19 16:38 编辑

long long  在32位机有的编译器跟long 效果一样。你可以使用 double 浮点型计算下,ST库的话用uint64_t试试

使用特权

评论回复
板凳
airwill| | 2017-7-21 06:16 | 只看该作者
很遗憾地告诉你:  Cortex-M0 内核只支持 32位*32位, 结果为32位的 MUL 指令.
不支持 UMULL, SMULL 等 64 位结果的乘法指令.

使用特权

评论回复
地板
oayzw| | 2017-7-22 18:23 | 只看该作者
马克学习围观

使用特权

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

本版积分规则

3

主题

8

帖子

0

粉丝