发布于 ,更新于 

x86 扩展传送指令

x86 扩展传送指令

x86 扩展传送指令包含了两种指令

1. 符号扩展传送指令 MOVSX

把寄存器或者内存的值,符号扩展到更大的寄存器中。 有如下操作数匹配方式:
1
2
3
4
5
6
MOVSX reg16, reg8/mem8 
MOVSX reg32, reg8/mem8
MOVSX reg64, reg8/mem8
MOVSX reg32, reg16/mem16
MOVSX reg64, reg16/mem16
MOVSXD reg64, reg32/mem32

2. 零扩展传送指令 MOVZX

把寄存器或者内存的值,零扩展到更大的寄存器中。 有如下操作数匹配方式:
1
2
3
4
5
MOVZX reg16, reg8/mem8
MOVZX reg32, reg8/mem8
MOVZX reg64, reg8/mem8
MOVZX reg32, reg16/mem16
MOVZX reg64, reg16/mem16

AT&T 格式的扩展传送指令

  1. 传送方向改为从左至右
  2. 指令后面加上 B、W 指明操作数大小
  3. MOVSXD 也可以用 MOVSXL 来代替
1
2
3
4
5
6
7
8
9
10
11
12
13
movsxb reg8/mem8, reg16 
movsxb reg8/mem8, reg32
movsxb reg8/mem8, reg64
movsxw reg16/mem16, reg32
movsxw reg16/mem16, reg64
movsxd reg32/mem32, reg64
movsxl reg32/mem32, reg64

movzxb reg8/mem8, reg16
movzxb reg8/mem8, reg32
movzxb reg8/mem8, reg64
movzxw reg16/mem16, reg32
movzxw reg16/mem16, reg64