首页
社区
课程
招聘
[求助]如何制作反汇编引擎…
发表于: 2009-7-31 16:20 6149

[求助]如何制作反汇编引擎…

2009-7-31 16:20
6149
最近一直在整理intel cpu中所有的指令

一路走来今天在多媒体这里遇到点问题

在SSE中指令SFENCE的机器码是 OF AE /7

但是在SSE2中指令CLFLUSH的机器码同样是 OF AE /7

我当时就傻了

这要是做反汇编引型该怎么弄啊!!!

请大哥们帮忙解答一下啊!

反汇编的时候怎么区分他们,还有这两条指令的具体意思都是什么啊(抱着intel的指令文档看了半天也没搞明白
大哥们帮忙啊
在线等……

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没人理会我啊………………
2009-7-31 18:47
0
雪    币: 2575
活跃值: (502)
能力值: ( LV2,RANK:85 )
在线值:
发帖
回帖
粉丝
3
据说看Intel手册就会写了
2009-7-31 23:36
0
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
4
直接下OD的反汇编引擎源码来看,论坛就有
2009-8-1 08:24
0
雪    币: 202
活跃值: (10)
能力值: ( 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有解释的
2009-8-1 14:08
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
大哥,你看清楚我的问题了吗?
2009-8-2 14:06
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
当ModR/M字节的6,7位,即mod位为11B时,这个指令是sfence,当是00,01,10时,为clflush
2009-8-3 09:24
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这个怎么看啊大哥?能说明一下吗
那个mod/rm的表
我看不太明白……
2009-8-3 12:57
0
雪    币: 202
活跃值: (10)
能力值: ( 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)
2009-8-4 11:27
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
手册的Vol.2A 2-4页开始讲解的ModR/M部分是很清楚的
2009-8-4 11:28
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢了大哥
现在清楚多了
以后还要向你多多请教
2009-8-9 20:26
0
雪    币: 558
活跃值: (43)
能力值: ( LV12,RANK:220 )
在线值:
发帖
回帖
粉丝
12
阅读Intel开发者手册第二卷指令集参考,第2章,附录部分以及第3章的前小部分
2009-8-9 22:29
0
游客
登录 | 注册 方可回帖
返回
//