所以我正在研究一些代码(对于x86),我需要获取指令的源点或目标点。为此我需要方向位,表示ModRM或REG是目的地还是源。此外,我需要能够处理立即值。到目前为止,我可以处理指令和它的主要操作码(以及前缀)。我想知道最简单的方法是什么,或者是否有人可以指出一些确定目标/源的好代码示例(例如寄存器,内存地址或直接操作数)。我见过很多解码器,但大多数解码器专门针对一件事而构建,而那些包含很多功能的解码器非常复杂。
答案 0 :(得分:1)
为什么不使用反汇编引擎?你可以看到他们如何解码字节(规范是在intel开发人员手册第1卷中)或让他们为你做所有繁重的工作,所以你可以改为处理他们的输出(这可能是纯文本和一些标志)。要看的两个开源引擎是BeaEngine(包括阳光下的每个指令,简单易用的界面)和ollydbg的disasm引擎(简单和紧凑,只能达到SSE1指令)。