我正在深入研究 x86 ASM 中的左移和右移操作,例如shl eax, cl
来自 IA-32 英特尔架构软件开发人员\xe2\x80\x99s 手册 3
\n\n\n\n\n所有 IA-32\n 处理器(从 Intel 286 处理器开始)都会将移位计数屏蔽为 5 位,从而导致最大计数为 31。此屏蔽在所有操作模式\n 中完成(包括虚拟 8086模式)以减少指令的最大执行时间。
\n
我试图理解这个逻辑背后的原因。也许它以这种方式工作是因为在硬件级别上很难使用 1 个周期实现寄存器中所有 32(或 64)位的移位?
\n\n任何详细的解释都会有很大帮助!
\n