经典变长指令-SIB

一、回顾Mod/M结构

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

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

经典变长指令-SIB
经典变长指令-SIB

三、示例

88 84 48

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

上一篇:蓝桥杯·寒假百校真题大联赛_购物车


下一篇:本地获取nginx服务端时间