A.2.1 寻址方式编码
以下缩写用于记录寻址方式:
A (direct Address)直接寻址:指令没有 ModR/M 字节;操作数的地址直接编码于指令中;没
有 SIB 字节.(如 far JMP(EA))
EA 00104000 1 jmp far 001B:00401000
C (Control regs) ModR/M 的 reg 域指定为控制寄存器(如 MOV(0F20,0F22))
0F20C0 mov eax, cr0
D (Debug regs) ModR/M 的 reg 域指定为调试寄存器(如 MOV(0F21,0F23))
0F21C0 mov eax, dr0
E 操作码后跟随有一个 ModR/M 字节,操作数为通用寄存器(GPR—General-Purpose Register)
或者一个内存地址.(在 ModR/M 表中的左边栏中查找对应的内存或寄存器)若为内存 地址,该地址通过段寄存器和基寄存器、索引寄存器、比例因子,以及偏移量中的任意部 分计算得出.
F (Flag regs) EFLAGS/RFLAGES 寄存器
G (General-purpose regs) ModR/M 为通用寄存器(如,AX(000))(在 ModR/M 表中找顶部的通
用寄存器)
I (Immediate data) 立即数:操作数的值被嵌入在指令接下来的字节中。
J 指令中包含一个相对偏移量被加至指令指针寄存器(如 JMP(0E9),LOOP)
M (Memory) ModR/M 字 节 可 能 仅 编 码 内 存 操 作 数 ( 如
BOUND,LES,LDS,LSS,LFS,LGS,CMPXCHG8B)
N ModR/M 字节的 reg 域指定为紧缩四字的 MMX 寄存器(所谓“紧缩×××数据”是指多个
8/16/32 位的×××数据组合成为一个 64 位的数据: 紧缩字节(Packed Byte): 8 个字节组合成一个 64 位的数据; 紧缩字 (Packed Word): 4 个字组合成一个 64 位的数据; 紧缩双字(Packed Doubleword): 2 个双字组合成一个 64 位的数据; 紧缩 4 字 (Packed Quadword):一个 64 位数据.)
O 没有 ModR/M 字节.操作数的偏移被编码为字或双字(依据地址大小属性决定).没有 SIB 字节.(如 MOV(A0-A3))
如: A000104000 mov al,byteptr[00401000]
P ModR/M 的 reg 域指定为紧缩四字的 MMX 寄存器
Q 操作码后跟随一字节 ModR/M 指定操作数,操作数为 MMX 寄存器或者内存地址.若为内
存地址,该地址通过段寄存器和基寄存器、索引寄存器、比例因子,以及偏移量中的任意
部分计算得出.
R ModR/M 的 R/M 域可能仅为通用寄存器(如 MOV (0F20-0F23))
S (Segment register) ModR/M 的 reg 域为段寄存器(如 MOV(8C,8E))
U ModR/M 的 R/M 域为 128 位的 XMM 寄存器
V ModR/M 的 reg 域为 128 位的 XMM 寄存器
W 操作码后跟随一字节 ModR/M 指定操作数,操作数为 128 位的 MMX 寄存器或者内存地
址.若为内存地址,该地址通过段寄存器和基寄存器、索引寄存器、比例因子,以及偏移
量中的任意部分计算得出.
X 内存寻址为 DS:rSI 寄存器对(如 MOVS,CMPS,OUTS,LODS)
Y 内存寻址为 ES:rDI 寄存器对(如 MOVS,CMPS,STOS,SCAS)
A.2.2 操作数类型编码
以下缩写用于记录操作数类型:
a 两个单字内存操作数或两个双字内存操作数,依据操作数尺寸属性决定(仅在 BOUND 指
令中使用)
b 字节,不论操作数尺寸属性
c 字节或字,依据操作数尺寸属性决定
d 双字,不论操作数尺寸属性
dq 八字(Double-quadword),不论操作数尺寸属性
p 32 位,48 位或者 80 位指针,依据操作数尺寸属性决定
pd 128 位紧缩双精度浮点数
pi 四字 MMX 寄存器(如 mm0)
ps 128 位紧缩单精度浮点数
q 四字操作数,不论操作数尺寸属性
s 6 字节或 10 字节伪描述符(pseudo-descriptor)
ss 128 位紧缩单精度浮点数的标量部分(scalar element of a 128-bit packed single-precision
floating data)
si 双字整数寄存器(如 eax)
v 字,双字或四字(64 位模式),依据操作数尺寸决定
w 字,不论操作数尺寸
z 在 16 位模式中为字,在 32 位或 64 位环境中为双字
转载于:https://blog.51cto.com/haidragon/2097476