能力值:
( LV3,RANK:30 )
|
-
-
26 楼
非常不错的一篇文章,需要慢慢品。
|
能力值:
( LV2,RANK:15 )
|
-
-
27 楼
大佬,有没有研究过ARM解析啊,我想做个ARM反汇编引擎,但是每次想到那种令人绝望的难度就放弃了,还是大佬有毅力
|
能力值:
( LV4,RANK:50 )
|
-
-
28 楼
又见飞刀z
大佬,有没有研究过ARM解析啊,我想做个ARM反汇编引擎,但是每次想到那种令人绝望的难度就放弃了,还是大佬有毅力
没碰过安卓开发,这个就不知道了。
|
能力值:
( LV13,RANK:317 )
|
-
-
29 楼
膜膜膜
|
能力值:
( LV3,RANK:20 )
|
-
-
31 楼
楼主思路倒是还可以、但是有一些地方定义的不太好(个人觉得)、就比如定义指令结构(add)数组那里、但是貌似没有按照白皮书要求、比如单字节操作码映射(00H - F7H)的04处写的是AL, Ib,但是代码确定义成了rAX、但是白皮书说道当寄存器宽度依赖于操作数大小属性时,使用eXX或rXX形式的寄存器标识符。eXX在16或32位大小可能的情况下使用;rXX在16、32或64位大小可能存在时使用。如eAX表示当操作数size属性为16时使用AX寄存器,当操作数size属性为32时使用eAX寄存器。rAX可以表示AX、EAX或rAX。
但是又说道当一个操作码需要一个特定的寄存器作为操作数时,寄存器由名称标识(例如,AX、CL或ESI)。名称指示寄存器的宽度是64 位、32位、16位还是8位。
所以说rXX是表示可能在16 、32、64位大小运行、04如果在32位汇编模式下明显是al、x64汇编模式下改变需要加上前缀48、但是类似这地方的还有很多处! (个人建议)、望楼主采纳!
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
好深奥啊,只看懂了AMD YES
|
能力值:
( LV4,RANK:50 )
|
-
-
33 楼
小曾HanFeng
楼主思路倒是还可以、但是有一些地方定义的不太好(个人觉得)、就比如定义指令结构(add)数组那里、但是貌似没有按照白皮书要求、比如单字节操作码映射(00H - F7H)的04处写的是AL, Ib,但是 ...
你没有看明白我的代码,rAX后面有一个_8BIT,其实就是AL。我那样子写只是好看而已,你可以理解为我把特殊的例子转为一般的规则。出现04的时候就能按照一般的规则解析了。
|
|
|