定长指的是:
只要Opcode确定,这条指令的长度就确定了,这就是定长
而不是 Opcode 的长度就是指令的长度
要记住通用寄存器的顺序,有利于理解硬编码
0 EAX
1 ECX
2 EDX
3 EBX
4 ESP
5 EBP
6 ESI
7 EDI
1、PUSH/POP
50 PUSH EAX
51 PUSH ECX
52 PUSH EDX
53 PUSH EBX
54 PUSH ESP
55 PUSH EBP
56 PUSH ESI
57 PUSH EDI
58 POP EAX
59 POP ECX
5A POP EDX
5B POP EBX
5C POP ESP
5D POP EBP
5E POP ESI
5F POP EDI
2、INC/DEC
0X40 - 0X47 INC ERX
0X48 - 0X4F DEC ERX
3、MOV Rb, ib(immediate byte)
0XB0 - 0XB7
4、MOV ERb, id(immediate double)
0XB8 - 0XBF
5、XCHG EAX, ERX:
90 XCHG EAX, EAX(NOP) //这里就可以说明了NOP是怎么来的了,因为将EAX与EAX交换毫无意义。
91 XCHG EAX, ECX