能力值:
( LV2,RANK:10 )
|
-
-
2 楼
没人理会我啊………………
|
能力值:
( LV2,RANK:85 )
|
-
-
3 楼
据说看Intel手册就会写了
|
能力值:
( LV17,RANK:1820 )
|
-
-
4 楼
直接下OD的反汇编引擎源码来看,论坛就有
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
最近研究反汇编引擎的人是不是挺多的.这两个周刚在公司做了一个反汇编引擎,不过现在只解码常用指令,没有处理扩展指令.
你说的这个问题很容易啊,你所说的0f ae是一个opcode extension指令,也就是说,0f ae有很多条指令对应的:fxsave, fxrstor, ldmxcsr, strxcsr,clfush,lfence, mfence, sfence,怎么区分呢?因为opcode extension是包含在后续的ModR/M字节中的reg/opcode位中解释的.你看manual vol2b appendix A A-22有解释的
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
大哥,你看清楚我的问题了吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
当ModR/M字节的6,7位,即mod位为11B时,这个指令是sfence,当是00,01,10时,为clflush
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
这个怎么看啊大哥?能说明一下吗
那个mod/rm的表
我看不太明白……
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
对于Mod R/M字节,你根据MOD位和R/M位的组合,来得到左边一栏的Effective Address的项;你根据reg位,得到上面一行REG的项
对于上面一行的REG项和当MOD==11B时的寄存器的选择,根据opcode编码时的属性指定的(比如当reg == 00B或者MOD == 11B R/M == 000B时,如果操作数是32位的,则使用EAX,如果是16位则使用AX,若是8位,则使用AL,若指定使用MMX寄存器则使用MM0,若指定使用XMM寄存器,则使用XMM0)
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
手册的Vol.2A 2-4页开始讲解的ModR/M部分是很清楚的
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
谢谢了大哥
现在清楚多了
以后还要向你多多请教
|
能力值:
( LV12,RANK:220 )
|
-
-
12 楼
阅读Intel开发者手册第二卷指令集参考,第2章,附录部分以及第3章的前小部分
|
|
|