Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何读取汇编指令的方向位和源或目标_Assembly_Decoding_Disassembly_Machine Instruction - Fatal编程技术网

Assembly 如何读取汇编指令的方向位和源或目标

Assembly 如何读取汇编指令的方向位和源或目标,assembly,decoding,disassembly,machine-instruction,Assembly,Decoding,Disassembly,Machine Instruction,因此,我正在编写一些代码(针对x86),其中需要获取指令的源或目标点。为此,我需要一个方向位,表示ModRM或REG是目标还是源。我还需要能够处理即时值。到目前为止,我可以处理指令及其主要操作码(以及前缀)。我想知道最简单的方法是什么,或者是否有人能给我指出一些确定目标/源的好代码示例(例如寄存器、内存地址或立即操作数)。我见过很多解码器,但大多数都是专门为一件事而设计的,而且包含很多功能的解码器非常复杂。为什么不使用反汇编引擎呢?您可以查看它们是如何解码字节的(规范在《英特尔开发人员手册》第1

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

为什么不使用反汇编引擎呢?您可以查看它们是如何解码字节的(规范在《英特尔开发人员手册》第1卷中),也可以让它们为您完成所有繁重的工作,这样您就可以处理它们的输出(可能是纯文本和一些标志)。要查看的两个开源引擎是BeaEngine(包括sun下的每一条指令,简单易用的接口)和ollydbg的disasm引擎(简单紧凑,只支持SSE1指令)

啊,我忘了我在这附近有ollydbg的来源。我来看看。