-5

我正在尝试在二进制文件中显示汇编指令,但我该怎么做?
我怎么知道 MOV 的参数(例如)是指针还是数字?
这是出于教育目的,我知道有 GDB 和其他工具。

提前致谢!

4

3 回答 3

1

你是说反汇编?那么您有很多工具可供选择,例如:

  • OllyDbg
  • 国际开发协会
  • 对象转储

如果你想把它集成到现有的程序中,那么你需要一个反汇编引擎,比如BeaEngine或 diStorm。

于 2012-07-13T13:01:11.117 回答
1

您可以利用binutils中的许多库,例如BFDopcodes

BFD 二进制文件描述符库,用于进行低级操作。

opcodes库用于汇编和反汇编机器指令。

于 2012-12-29T23:26:02.610 回答
0

您可能会从源代码中找到有用的信息到模拟器,它必须在执行模拟指令之前执行相同的解码任务。

我强烈建议首先针对一个小子集,理想情况下是裸机 8086,然后按照它们历史上发生的相同顺序添加扩展。这将帮助您决定在查找更多信息时忽略哪些内容。以免不知所措。

对于 MOV 操作,操作数由第二个字节 MOD-REG-REG/MEM 字节指定(以最一般的形式)。操作数几乎总是寄存器或内存位置(指针,可能使用“索引寄存器”即时构建)。只有少数指令接受文字操作数(一个数字)并且仅作为,并且在第 180 页的1979 8086 手册表中清楚地标记了它们。

于 2012-12-30T09:12:52.643 回答