相关疑难解决方法(0)

为什么所有现代 x86 掩码都会将计数移至 CL 中的 5 个低位

我正在深入研究 x86 ASM 中的左移和右移操作,例如shl eax, cl

\n\n

来自 IA-32 英特尔架构软件开发人员\xe2\x80\x99s 手册 3

\n\n
\n

所有 IA-32\n 处理器(从 Intel 286 处理器开始)都会将移位计数屏蔽为 5 位,从而导致最大计数为 31。此屏蔽在所有操作模式\n 中完成(包括虚拟 8086模式)以减少指令的最大执行时间。

\n
\n\n

我试图理解这个逻辑背后的原因。也许它以这种方式工作是因为在硬件级别上很难使用 1 个周期实现寄存器中所有 32(或 64)位的移位?

\n\n

任何详细的解释都会有很大帮助!

\n

x86 assembly bit-shift cpu-architecture cpu-registers

4
推荐指数
1
解决办法
1744
查看次数