gpt4 book ai didi

c++ - 在早期的C和C++编译器中,手动移位与乘法和除法的相关性如何?

转载 作者:行者123 更新时间:2023-12-02 10:38:25 26 4
gpt4 key购买 nike

今天,通常最好信任编译器。但是,在简单的处理器和用汇编语言编写代码的时代,程序员知道移位不仅可以更快,而且在编译为二进制文件时可以节省宝贵的内存。

当C和C++编译器还很年轻时,汇编程序员是否像在汇编中那样通过移位遵循传统,还是可以信任编译器来优化它呢?是否由于使用未优化的编译器而倾向于继续移位?

如今,关于位转移的观点似乎存在冲突。有教育方面的内容表达了为什么它比乘法快。但这并不总是转换为最佳代码。然而,对于旧代码和新代码都发现算法和表达式的显式转换是很常见的。

对于其他观点,我对从历史中学习很感兴趣。在20世纪80年代和80年代,经验丰富的程序员如何考虑是位移还是乘/除?是否有某种使这项工作大为淘汰的技术,例如投机执行或分支预测?

我发现最难理解的是,我最经常遇到的代码是针对一个非常小的常数(例如1或2)进行移位的。我希望这些移位对于编译器而言最容易识别。为什么有人选择仍然使用这种类次呢?

我可能做出了一些错误的假设。我也欢迎对此主题发表任何评论。

最佳答案

要记住的重要一点是,编译器本身必须在相当严格的内存约束下运行。如果在需要高效计算的时候必须使用移位,或者让编译器包括优化代码的选择,然后在编译器可用于其他所有内容的存储空间减少的情况下进行选择,那么前一种选择将比今天更受欢迎。 。

关于c++ - 在早期的C和C++编译器中,手动移位与乘法和除法的相关性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58241935/

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