能力值:
(RANK:10 )
|
-
-
2 楼
照着Intel手册的编码矩阵做就行了。
|
能力值:
(RANK:300 )
|
-
-
3 楼
我写过一个简单的 dasm (没有 floating point 指令 ),就是把 Intel 指令集的几个表用 array 做出来
主要的 opcode 表有两个,分?是 1 byte 指令表和 2 byte 指令表
还有其它的表
表的 element 是一个自定的 struct,它的 member 有 opcode, 操作数,和其它东西
制作这些表很累… 累死人
|
能力值:
( LV13,RANK:970 )
|
-
-
4 楼
兄弟做反汇编器。支持!
|
能力值:
( LV12,RANK:650 )
|
-
-
5 楼
我的想法就是把opcode当作array的下标,我试试先。
这几天ZOJ上没法做题,正好有时间。
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
好呀,绝对支持roba!
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
反汇编可以肯很多的实现,最快的应该是查表!你说的用OPCODE当下标,这是编译器的事,现在的编译器已经做得够好的,以前人工做的优化,现在编译器也可以帮你做了。我个人感觉反汇编器重要的是智能,而不是速度!
|
能力值:
( LV13,RANK:370 )
|
-
-
8 楼
用hash是行不通的,因为如果算上SSE、SSE2、3DNOW!等指令集的话,你会发现opcode必须是3个字节的,这是其一。
其二,因为有prefix的缘故,例如假设在默认32位的情况下:
6635 : xor eax, 00000000
35 : xor ax, 0000
这还只是一个prefix的情况,而prefix是可以有多个的,而且它们的排列是可以不按照顺序的。如果这样的话,光是用hash来解决prefix就会产生一个巨大的集合。
|
能力值:
( LV12,RANK:650 )
|
-
-
9 楼
prefix数目有限,我想可以用预先的处理解决。
不过要想支持更多的指令集,是个大问题……
|
能力值:
(RANK:460 )
|
-
-
10 楼
偶最近也在搞这个阿――因为找不到合适的库。
或者可以考虑构造特殊的哈希函数来定位,不过没有试过,而且毕竟在汇编中查寻表算法在这种情况下效率最高。
|
|
|