gpt4 book ai didi

恒定除法未优化?

转载 作者:行者123 更新时间:2023-12-03 16:52:33 24 4
gpt4 key购买 nike

我有以下代码行:

#define A 360
#define B 360

temp = (s16_myvar * A) / B;

我的编译器(在本例中为 Windriver DIAB PPC,使用标准扩展优化设置 -XO)似乎没有将其优化为类似 temp = s16_myvar 的内容。当我查看汇编列表时,它似乎忠实地将 360 放入寄存器中,然后在进行乘法运算后,将结果除以 360。

有没有我可以使用的技巧来摆脱最终代码中的乘法和除法?

对于那些问“为什么?”的人,假设在某些配置中, B 不是 == A 并且您需要缩放变量。

最佳答案

只是一个假设:整数表达式,如 (a x) / b可以简化为(a / b) xbaa x不会溢出。可能是优化器设计者没有深入研究或者认为这样的表达不太可能/愚蠢。

更新 :

在 Olaf 发表评论后,溢出条件无关紧要,因为它是未定义行为的情况,因此运行时可以自由地返回任何值。

关于恒定除法未优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33027114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com