2

所以我正在处理一些代码(对于 x86),我需要在其中获取指令的源点或目标点。为此,我需要指示 ModRM 或 REG 是目标还是源的方向位。我还需要能够处理即时值。到目前为止,我可以处理指令,它是主要的操作码(连同前缀)。我想知道最简单的方法是什么,或者是否有人可以指出一些确定目标/源的好代码示例(例如寄存器、内存地址或立即操作数)。我见过很多解码器,但其中大多数都是专门为一件事而构建的,而包含很多功能的解码器非常复杂。

4

1 回答 1

1

为什么不直接使用反汇编引擎?您可以查看它们如何解码字节(规范在英特尔开发人员手册第 1 卷中)或让它们为您完成所有繁重的工作,因此您可以改为处理它们的输出(可能是纯文本和一些标志)。要看的两个开源引擎是 BeaEngine(包括阳光下的每条指令,简单易用的界面)和 ollydbg 的 disasm 引擎(简单而紧凑,仅适用于 SSE1 指令)。

于 2011-07-22T05:10:33.410 回答