Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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
Parsing 从“英特尔x86语法程序集”识别操作数类型_Parsing_Assembly_X86 - Fatal编程技术网

Parsing 从“英特尔x86语法程序集”识别操作数类型

Parsing 从“英特尔x86语法程序集”识别操作数类型,parsing,assembly,x86,Parsing,Assembly,X86,我正在研究一种解析x86英特尔语法汇编代码并生成抽象表示的方法。具体来说,我试图理解如何将操作数分类为以下已知x86操作数类型之一:寄存器、内存、常量/立即数操作数、标签(如中所述) 例如, 转换此原始程序集的片段: push ebp mov ebp, esp push -1 push __ehhandler$_main mov eax, DWORD PTR fs:0 在操作数抽象程序集的这段代码中: push register mov register, regist

我正在研究一种解析x86英特尔语法汇编代码并生成抽象表示的方法。具体来说,我试图理解如何将操作数分类为以下已知x86操作数类型之一:寄存器、内存、常量/立即数操作数、标签(如中所述)

例如,

转换此原始程序集的片段

push    ebp
mov ebp, esp
push    -1
push    __ehhandler$_main
mov eax, DWORD PTR fs:0
在操作数抽象程序集的这段代码中:

push    register
mov register, register
push    constant
push    constant
mov register, memory

非常感谢关于此任务复杂性的任何指导,或具有相关功能的工具的指针

如果你能汇编代码,只要把它拆开。。。操作码将告诉您指令所处理的操作数类型。
Tomislav

如果你能汇编代码,只需将其反汇编成bk。。。操作码将告诉您指令所处理的操作数类型。
Tomislav

如果你能汇编代码,只需将其反汇编成bk。。。操作码将告诉您指令所处理的操作数类型。
Tomislav

如果你能汇编代码,只需将其反汇编成bk。。。操作码将告诉您指令所处理的操作数类型。

Tomislav

这看起来就像简单的指令解码。如果一个愚蠢的芯片能做到这一点,你也能做到吗?听起来像是一个简单的汇编解析器。不过,有一个观察结果是:
\uuuehhandler$\umain
很可能是一个表示地址的符号,
push
正在推送该符号的值(即,它是
推送常量
而不是
推送内存
)。检测操作数类型将是这里最繁琐的任务(但并不困难)。如果你能用at&t符号而不是英特尔来解析程序集,你的生活会简单得多。我并没有像来自否决票的反馈那样要求代码。我举了一个我想要实现的例子,一个链接到一个我从中获得了一些理解的页面,并希望能为我提供一些可以获得更多信息的指针。虽然到目前为止我确实从答案中获得了一些理解,但我不明白为什么它会被否决。最终使用distorm库来完成这项工作。感谢您的有用回复。这看起来就像简单的指令解码。如果一个愚蠢的芯片能做到这一点,你也能做到吗?听起来像是一个简单的汇编解析器。不过,有一个观察结果是:
\uuuehhandler$\umain
很可能是一个表示地址的符号,
push
正在推送该符号的值(即,它是
推送常量
而不是
推送内存
)。检测操作数类型将是这里最繁琐的任务(但并不困难)。如果你能用at&t符号而不是英特尔来解析程序集,你的生活会简单得多。我并没有像来自否决票的反馈那样要求代码。我举了一个我想要实现的例子,一个链接到一个我从中获得了一些理解的页面,并希望能为我提供一些可以获得更多信息的指针。虽然到目前为止我确实从答案中获得了一些理解,但我不明白为什么它会被否决。最终使用distorm库来完成这项工作。感谢您的有用回复。这看起来就像简单的指令解码。如果一个愚蠢的芯片能做到这一点,你也能做到吗?听起来像是一个简单的汇编解析器。不过,有一个观察结果是:
\uuuehhandler$\umain
很可能是一个表示地址的符号,
push
正在推送该符号的值(即,它是
推送常量
而不是
推送内存
)。检测操作数类型将是这里最繁琐的任务(但并不困难)。如果你能用at&t符号而不是英特尔来解析程序集,你的生活会简单得多。我并没有像来自否决票的反馈那样要求代码。我举了一个我想要实现的例子,一个链接到一个我从中获得了一些理解的页面,并希望能为我提供一些可以获得更多信息的指针。虽然到目前为止我确实从答案中获得了一些理解,但我不明白为什么它会被否决。最终使用distorm库来完成这项工作。感谢您的有用回复。这看起来就像简单的指令解码。如果一个愚蠢的芯片能做到这一点,你也能做到吗?听起来像是一个简单的汇编解析器。不过,有一个观察结果是:
\uuuehhandler$\umain
很可能是一个表示地址的符号,
push
正在推送该符号的值(即,它是
推送常量
而不是
推送内存
)。检测操作数类型将是这里最繁琐的任务(但并不困难)。如果你能用at&t符号而不是英特尔来解析程序集,你的生活会简单得多。我并没有像来自否决票的反馈那样要求代码。我举了一个我想要实现的例子,一个链接到一个我从中获得了一些理解的页面,并希望能为我提供一些可以获得更多信息的指针。虽然到目前为止我确实从答案中获得了一些理解,但我不明白为什么它会被否决。最终使用distorm库来完成这项工作。感谢您的有用回复。操作码肯定会告诉类型,我们正在寻找一个工具,可以为我早。所以我最终找到了一个“distorm”。谢谢操作码肯定会告诉我这些类型,我之前一直在寻找一个可以帮我做到这一点的工具。所以我最终找到了一个“distorm”。谢谢操作码肯定会告诉我这些类型,我之前一直在寻找一个可以帮我做到这一点的工具。所以我最终找到了一个“distorm”。谢谢操作码肯定会告诉我这些类型,我之前一直在寻找一个可以帮我做到这一点的工具。所以我最终找到了一个“distorm”。谢谢