intel X86指令格式分析

本文详细解析了Intel X86指令格式,包括寄存器编号、指令结构、操作码、ModR/M、SIB及寻址方式等。通过实例展示了如何编码实现不同类型的寻址,如直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址。
摘要由CSDN通过智能技术生成
 

先说一下寄存器编号

0         1        2         3         4        5        6       7
EAX  ECX  EDX   EBX   ESP   EBP   ESI   EDI

intel指令格式如下图所示:


Mod为00、01和10时,R/M=000(eax)时,有效地址分别是[eax]、disp8[eax]和disp32[eax],Mode为11时,操作数是寄存器EAX。Mod与R/M共5位,能构成32种组合。

Opcode是操作码,1或2个字节,有时Reg/Opcode也可以扩展用来表示操作信息。

R/M为100时表示ModR/M后带有SIB;R/M为101时表示SIB后是一个disp32,如果没有SIB,直接跟在在ModR/M后

Scale为00、01、10、11指示index放大0、2、4、8倍

index为index寄存器序号

base为base寄存器序号


下面举例说明:

add eax, eax 指令码:03 C0,Opcode为03,Mod为11,R/M为000

add eax, 1 指令码:83 C001,Opcode为03,Mod为11,R/M为000,由于83表示,表示还带一个imm8,就是最后的01

从中不难看出,寄存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值