1. 何为OPCode
在计算机科学领域中,操作码(Operation Code, OPCode)被用于描述机器语言指令中,
指定要执行某种操作的那部分机器码,构成OPCode的指令格式和规范由处理器的
指令规范指定。除了指令本身以外通常还有指令所需要的操作数,可能有的指令不需要显示
的操作数。这些操作数可能是寄存器中的值,堆栈中的值,某块内存的值或者IO端口中
的值等等。
OPCode在不同的场合中通常具有不同的含义,例如PHP虚拟机(Zend VM)、
java虚拟机(JVM)以及一些软件保护虚拟机中的最小操作单元都
可以称之为OPCode。
在本节课中,介绍的是Intel 80x86 CPU的OPCode
2. 常用单字节OPCode概览A -- 40~4F
opcode asm using
0x40 inc eax emit(0x40)
0x41 inc ecx emit(0x41)
0x42 inc edx emit(0x42)
0x43 inc ebx emit(0x43)
0x44 inc esp emit(0x44)
0x45 inc ebp emit(0x45)
0x46 inc esi emit(0x46)
0x47 inc edi emit(0x47)
0x48 dec eax emit(0x48)
0x49
dec
ecx emit(0x49)
0x4a
dec
ebx emit(0x4a)
0x4b
dec
ebx emit(0x4b)
0x4c
dec
esp emit(0x4c)
0x4d
dec
ebp emit(0x4d)
0x4e
dec
esi emit(0x4e)
0x4f
dec
edi emit(0x4f)
2. 常用单字节OPCode概览B -- 50~5F
opcode asm using
0x50 push eax emit(0x50)
0x51
push
ecx emit(0x51)
0x52
push
edx emit(0x52)
0x53
push
ebx emit(0x53)
0x54
push
esp emit(0x54)
0x55
push