Difference between SHL and SAL in 80x86

前端 未结 7 1570
有刺的猬
有刺的猬 2020-12-17 08:56

I have learned how to work with 80x86 assembler, so in bit-wise shift operation, I faced a problem with SAL and SHL usage. I means the difference between lines of code as fo

7条回答
  •  无人及你
    2020-12-17 09:16

    I would also have a look at the table in the Intel 64 and IA-32 Architectures Software Developer's Manuals Volume 2 "SAL/SAR/SHL/SHR—Shift" which contains a table with:

    D0 /4             SHL r/m8, 1
    REX + D0 /4       SHL r/m8**, 1
    D2 /4             SHL r/m8, CL
    REX + D2 /4       SHL r/m8**, CL
    C0 /4 ib          SHL r/m8, imm8
    REX + C0 /4 ib    SHL r/m8**, imm8
    D1 /4             SHL r/m16,1
    D3 /4             SHL r/m16, CL
    C1 /4 ib          SHL r/m16, imm8
    D1 /4             SHL r/m32,1
    REX.W + D1 /4     SHL r/m64,1
    D3 /4             SHL r/m32, CL
    REX.W + D3 /4     SHL r/m64, CL
    C1 /4 ib          SHL r/m32, imm8
    REX.W + C1 /4 ib  SHL r/m64, imm8
    
    D0 /4             SAL r/m8, 1
    REX + D0 /4       SAL r/m8**, 1
    D2 /4             SAL r/m8, CL
    REX + D2 /4       SAL r/m8**, CL
    C0 /4 ib          SAL r/m8, imm8
    REX + C0 /4 ib    SAL r/m8**, imm8
    D1 /4             SAL r/m16, 1
    D3 /4             SAL r/m16, CL
    C1 /4 ib          SAL r/m16, imm8
    D1 /4             SAL r/m32, 1
    REX.W + D1 /4     SAL r/m64, 1
    D3 /4             SAL r/m32, CL
    REX.W + D3 /4     SAL r/m64, CL
    C1 /4 ib          SAL r/m32, imm8
    REX.W + C1 /4 ib  SAL r/m64, imm8
    

    By comparing both parts, we see that each operand choice has the same encoding for both SHL and SAL, so they are identical.

    Mystical's quote follows in the same section further confirming it.

提交回复
热议问题