Assembly 如何读取汇编指令的方向位和源或目标
因此,我正在编写一些代码(针对x86),其中需要获取指令的源或目标点。为此,我需要一个方向位,表示ModRM或REG是目标还是源。我还需要能够处理即时值。到目前为止,我可以处理指令及其主要操作码(以及前缀)。我想知道最简单的方法是什么,或者是否有人能给我指出一些确定目标/源的好代码示例(例如寄存器、内存地址或立即操作数)。我见过很多解码器,但大多数都是专门为一件事而设计的,而且包含很多功能的解码器非常复杂。为什么不使用反汇编引擎呢?您可以查看它们是如何解码字节的(规范在《英特尔开发人员手册》第1卷中),也可以让它们为您完成所有繁重的工作,这样您就可以处理它们的输出(可能是纯文本和一些标志)。要查看的两个开源引擎是BeaEngine(包括sun下的每一条指令,简单易用的接口)和ollydbg的disasm引擎(简单紧凑,只支持SSE1指令) 啊,我忘了我在这附近有ollydbg的来源。我来看看。Assembly 如何读取汇编指令的方向位和源或目标,assembly,decoding,disassembly,machine-instruction,Assembly,Decoding,Disassembly,Machine Instruction,因此,我正在编写一些代码(针对x86),其中需要获取指令的源或目标点。为此,我需要一个方向位,表示ModRM或REG是目标还是源。我还需要能够处理即时值。到目前为止,我可以处理指令及其主要操作码(以及前缀)。我想知道最简单的方法是什么,或者是否有人能给我指出一些确定目标/源的好代码示例(例如寄存器、内存地址或立即操作数)。我见过很多解码器,但大多数都是专门为一件事而设计的,而且包含很多功能的解码器非常复杂。为什么不使用反汇编引擎呢?您可以查看它们是如何解码字节的(规范在《英特尔开发人员手册》第1