其他分享
首页 > 其他分享> > 经典变长指令-SIB

经典变长指令-SIB

作者:互联网

一、回顾Mod/M结构

Intel 64 and IA-32 Architectures Instruction Format
image
SIB由ModR/M来决定,同时Displacement(偏移)和Immediate(立即数)也是由ModR/M来决定

二、SIB的组成部分(结构图)

image
image

三、示例

88 84 48

1、88-->是Opcode,查Table A-2表-->得出操作指令是MOV
2、88的具体含义为-->MOV Eb,Gb
image
3、见到 Eb,Gb明白84为ModR/M字段
4、接下来来拆分ModR/M-->10 000 100 (按照ModR/M结构图来进行查询(可看上一篇文章)
5、接下来查表Table2-2
image
6、发现得到的与之前有所不同,当遇到[--][--]这种情况仅依靠ModR/M无法来确定,需要继续查询SIB
7、此时为通过ModR/M确定成-->[--][--]+disp32,接下来通过中间的000位确定Gb,因为此时的宽度为b所以是8个字节,所以为AL
image
8、通过以上确定了48为SIB的结构(组成部分和格式可看第二部分) 将48拆分-->01 001 000,然后查表Table 2-3-->Base为EAX,Index为ECX*2
image
9、最后补全-->MOV BYTE PTR DS:[EAX + ECX*2 +disp32],AL disp32是偏移的值而且宽度为32,就说明,在使用的时候后面会被吃进去4个字节
image

标签:ModR,--,MOV,SIB,88,指令,Gb,经典
来源: https://www.cnblogs.com/Mkd1R/p/15772802.html