Intel指令手册符号意义

来源:互联网 发布:淘宝一件代发教程 编辑:程序博客网 时间:2024/05/21 12:11

近日需要自己构造几条指令,查Intel手册,发现在讲解指令的部分有许多符号不知什么意义。

特整理如下,对于直接查看某条指令的解释,而没时间去从头看指令手册的人也许有点帮助。


/digit -- 0到7之间的数字,用于只使用寄存器/内存操作数的指令的 ModR/M字节,作为指令扩展码

/r -- 表明指令的ModR/M字节既包含寄存器操作数,又包含内存操作数

cb -- 相对于下一条指令的字节偏移值

cw -- 相对于下一条指令的字偏移值

cd -- 相对于下一条指令的双字偏移值

cp -- 绝对远指针

ib, iw, id -- ib:1字节立即数;iw:2字节立即数;id:4字节立即数

+rb, +rw, +rd --寄存器代码,从0到7,被加到操作数字节:

根据处理器操作模式,rb rw rd对应:AL = 0 AX= 0 EAX = 0;CL = 1 CX = 1 ECX = 1;DL = 2 DX = 2 EDX = 2;BL = 3 BX = 3 EBX = 3;AH = 4 SP = 4 ESP = 4;CH = 5 BP = 5 EBP = 5;DH = 6 SI = 6 ESI = 6;BH = 7 DI = 7 EDI = 7

+i -- 用于浮点指令的数字,表示ST(i)之一

rel8 -- 8位相对地址,范围:-128~ 127

rel16, rel32 -- 同一段内的相对地址

ptr16:16,ptr16:32 -- 远指针,典型应用于跨段指令

r8 -- 8位通用寄存器

r16 -- 16位通用寄存器

r32 -- 32位通用寄存器

imm8 -- 8位立即数

imm16 -- 16位立即数

imm32 -- 32位立即数

r/m8 -- 8位通用寄存器或内存字节

r/m16 -- 16位通用寄存器或内存字节

r/m32 -- 32位通用寄存器或内存字节

m -- 16位或32位内存操作数

m8 -- 由DS:(E)SI或ES:(E)DI指向的内存字节

m16 -- 由DS:(E)SI或ES:(E)DI指向的内存字

m32 -- 由DS:(E)SI或ES:(E)DI指向的内存双字

m64 -- 内存四字,仅用于CMPXCHG8B指令

m16:16, m16:32-- 包含两个数据的内存指针操作数,引号前面的是段地址,引号后面的是偏移地址

m16&32,m16&16, m32&32 -- 包含数据对的内存操作数

moffs8, moffs16,moffs32 -- 分别表示类型为字节、字、双字的内存变量

Sreg -- 段寄存器,ES=0,CS=1, SS=2, DS=3, FS=4, GS=5

m32real,m64real, m80real -- 单精度、双精度、扩展双精度内存浮点操作数

m16int, m32int,m64int -- 字型、双字型、四字型内存整数操作数

ST or ST(0) --FPU寄存器堆栈栈顶元素

ST(i) -- 从FPU寄存器堆栈栈顶数起的第i个元素,i =0,1,2,3,4,5,6,7

mm -- MMX寄存器,从MM0到MM7

mm/m32 -- MMX寄存器的低32位或32位内存操作数

mm/m64 -- MMX寄存器或64位内存操作数

xmm -- 128位XMM寄存器,从XMM0到XMM7

xmm/m32 -- XMM寄存器或32位内存操作数

xmm/m64 -- XMM寄存器或64位内存操作数

xmm/m128 -- XMM寄存器或128位内存操作数

0 0
原创粉丝点击