1、指令编码(硬编码)的结构

3、定长指令与变长指令

除了Opcode之外,其他的都是可选的,所以Opcode是一个硬编码的灵魂

 

Opcode ModR/M SIB这3个决定了整个指令的长度

Displacement Immediate的长度由前3个(Opcode ModR/M SIB)决定

 

Opcode决定 ModR/M 的有无

ModR/M决定 SIB 的有无

2、什么是定长指令?什么是变长指令??

定长指令就是Opcode确定了,整个指令的长度就确定了

比如55 就是 push ebp

变长指令就是 仅仅通过 Opcode是无法确定整个指令的长度

3、定长指令与变长指令

 

3、如何区分指令定长还是变长?

3、定长指令与变长指令

此表是主表,是整个 硬编码 学习阶段最最重要的表 (此表在2541页)

 

Opcode 后面没有 ModR/M 的时候,就是定长指令

Opcode 后面有 ModR/M的时候就是变长指令

 

怎么判断Opcode后面有没有ModR/M呢????

这里有一个小技巧

查文档的时候,当看到E ,G这种东西,Opcode后面肯定有ModR/M,肯定是变长指令

 

具体查 E G是什么东西,可以查书籍2536页

E是内存地址或寄存器

G是通用寄存器

 

下面介绍一下Zz表示法

b:代表byte

v: Word, doubleword, quadword

例: Gb,假如G是EAX的话 Gb就是AL

3、定长指令与变长指令

 

相关文章:

  • 2021-09-24
  • 2022-02-28
  • 2022-12-23
  • 2021-12-08
  • 2021-11-19
  • 2022-12-23
  • 2021-10-20
猜你喜欢
  • 2022-12-23
  • 2021-08-16
  • 2021-12-23
  • 2022-12-23
  • 2021-12-04
  • 2021-05-20
相关资源
相似解决方案