shr(7,dest) 是否比 shr(1,dest) 花费更多时间?

Does shr(7,dest) take more time than shr(1,dest)?

我正在学习 汇编语言艺术,第 2 版这本书。我刚开始学习 shr 和 shl 指令,我想知道移动较大的量是否会比移动较小的量花费更多的时间。 shr(1,dest) vs shr(7,dest).

如果说明的语法有误,我深表歉意。

http://agner.org/optimize/ 有 x86 CPU 的指令时序和微架构指南。

立即(编译时间常数)计数的移位和循环是最近的 AMD 和 Intel 的单周期延迟。

按 1 以外的任何计数循环进位都很慢,但可能是恒定时间。 (数据依赖时序使得无序执行依赖跟踪更加棘手,所以我认为他们只取最大值。

另一件奇怪的事情:显然 IvyBridge / Haswell 为短格式 ROL / ROR 旋转 1 操作码采用了额外的 uop,因此与具有 imm8 的普通操作码相比,吞吐量是一半计数 1.

回复:HLA:C 和 C++ 编译器现在对内部函数(转换为内联指令的函数)有很好的支持。 HLA 不再有那么多用例,我想我记得读过。根据一些我不记得的消息来源(抱歉 >.<),这些天你还不如学习普通的 asm。很多时候,您可以通过 C/C++.

中的内在函数使用矢量指令(或位操作,如 popcount)获得加速

如果您在学习 HLA 方面很开心,并且认为它很有用,那么祝您好运。