@傲娇so_good@风之追梦者看这里:


Description
Shifts the bits in the first operand (destination operand) to the left or right by the
number of bits specified in the second operand (count operand). Bits shifted beyond
the destination operand boundary are first shifted into the CF flag, then discarded. At
the end of the shift operation, the CF flag contains the last bit shifted out of the destination
operand.
The destination operand can be a register or a memory location. The count operand
can be an immediate value or the CL register. The count is masked to 5 bits (or 6 bits
if in 64-bit mode and REX.W is used). The count range is limited to 0 to 31 (or 63 if
64-bit mode and REX.W is used). A special opcode encoding is provided for a count
of 1.
上述参考说明:
32 bit 环境下:
“The count is masked to 5 bits, The cout range is limited to 0 to 31.”
在因特尔指令编码里,计数器为5bits,自然是0-1Fh,而imm8是8bits,所以大于31的数都会“环绕”。而且对移动一位的情况有特殊编码。