首先,64Bit Mode的指令格式,基础是IA32 Mode的指令格式,二者的主要区别在于REX Prefix的加入,也就是intel实际上是在IA32的指令基础上扩展成的64Bit Mode指令.

所以看这篇文章之前必须了解IA32的编码,如果不了解可以看我写的IA32指令格式文章,链接 https://blog.csdn.net/ross1206/article/details/81661804

 

64 Bit-Mode SMD指令格式

X86 指令格式及编码解析 (64Bit Mode)

  1. REX Prefix
 
  X86 指令格式及编码解析 (64Bit Mode)


0x40 – 0x4F 都是REX prefix

 

其中REX prefix的结构如下图所示

X86 指令格式及编码解析 (64Bit Mode)

可见,其实REX Prefix就是对ModR/M和SIB(如果存在)的扩展

w位来指定到底是32位还是64位的操作数据的宽度;

R来扩展ModR/M中的reg域;

X来扩展SIB中的index

B来扩展ModR/M中的rm或者SIB中的base,取决于是否有SIB

以下的图示更加直观的说明以上的工作方式

X86 指令格式及编码解析 (64Bit Mode)

X86 指令格式及编码解析 (64Bit Mode)

 X86 指令格式及编码解析 (64Bit Mode)

相关文章:

  • 2021-10-04
  • 2022-12-23
  • 2021-09-18
  • 2022-01-21
  • 2022-02-06
  • 2022-12-23
  • 2022-12-23
  • 2021-12-09
猜你喜欢
  • 2021-05-28
  • 2021-04-12
  • 2021-08-24
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案