【问题标题】:Is there a program to convert assembly to C++? [duplicate]是否有将程序集转换为 C++ 的程序? [复制]
【发布时间】:2011-03-15 03:32:30
【问题描述】:

是否有将程序集转换为 C 或 C++ 的程序? 我做了很多搜索,但找不到任何有用的东西。 有一个名为“Boomerang”的程序;它看起来很棒,只是我想要的,但是当我尝试使用它时它非常不稳定并且崩溃。 (boomerang)

还有其他免费程序可以做到这一点吗?

【问题讨论】:

  • @PaulR 该问题已被删除。
  • @JL2210:谢谢 - 现在关闭了一个更有用的副本。

标签: c++


【解决方案1】:

您正在寻找的是反编译器。

你最终会得到一些并不比 ASM 源代码更好的东西,而且我很确定你最终会得到 C,而不是 C++。

【讨论】:

  • 我不认为我想要一个反编译器,我有汇编代码,但我想把它变成 c++。
【解决方案2】:

很少有工具能够进行转换,例如 Regolix 从 ASM 转换为 C 和 Datatek 将 ASM 转换为 C/C++/Cobol/C#。但是,我认为转换后的代码的维护可能会出现问题。

【讨论】:

  • 是的,我查看了这两个 Relogix,我不明白我认为它是内置的,并且不知道如何使用它。和datatek,您必须为此付费。我看了,但我没有看到任何关于下载的信息,你必须打电话给他们谈谈购买。
【解决方案3】:

这是不可能的。

这是做不到的。

这是凡人无法掌握的。

好吧,除非 C 代码使用嵌入式汇编。但即使在那里也有点不确定。

请注意,反编译器不会“将程序集转换为 C”。反编译器尝试近似程序的原始源代码。映射不一定是完美的,也不可能用于任意汇编(同样,除非您在生成的 C 中使用内联汇编)。

【讨论】:

  • 嗯?不......它不会是完美的,但让它至少更高一点以便更容易使用仍然是一个好的开始。
  • -1 反编译代码的维护可能很困难,但可以做到。
  • @zoli2k:不,对于任意组装,它无法完成。 C 的功能不是汇编语言的松散超集。例如,假设我的程序集由“TST %r1”组成。该指令使处理器计步器加 1,但如果我不使用结果,则没有其他效果。没有 C 代码等同于这条单独的指令。还有许多其他示例——读取处理器内部寄存器、直接写入 I/O 设备,甚至是 HLT 指令。我说的是对的。
  • @zoli2k:一个简单的例子是一个由 10 个 HLT 指令组成的函数。这没有 C 等价物。由 10 个“TST %r1”组成的同上。或者,例如,一个完全没有功能的程序(参见muppetlabs.com/~breadbox/software/tiny/teensy.html)。仅仅因为反汇编程序可以找到包含指令的 some 代码的等效项,并不意味着它可以为指令的 all 使用找到等效项。发帖人要求的是一个转换器——即一个可逆映射。
  • 有趣的是,对于游戏 Transport Tycoons Deluxe(又名 TTD),这件事就完成了。是的,它包含大量的TST %r1 指令。所以?这只是意味着反编译器发出了一个宏。
猜你喜欢
  • 2011-05-20
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 2021-09-13
  • 2013-07-14
  • 2014-01-24
相关资源
最近更新 更多