3、定长指令与变长指令

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

除了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、如何区分指令定长还是变长?

此表是主表,是整个 硬编码 学习阶段最最重要的表 (此表在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

 

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值