c++ - 将C++代码编译成汇编然后反汇编

标签 c++ linux gcc disassembly intermediate-language

有谁知道如何将 C++ 代码转换为汇编代码,然后执行相反的操作? 前进的方式很简单:

g++ -S

我想分析输出,看看它是否被正确编译(现在只是出于好奇,但它可以有一些应用程序)。但是,我对汇编的了解非常有限,输出也很难理解(如果我使用优化 (-O) 或使用调试信息 (-g) 进行编译,情况尤其如此)。

是否有用于 C++ (GCC) 的反汇编程序来生成 C++ 代码?如果没有,是否有我可以将 C++ 代码编译成然后从中返回的任何中间表示?

似乎有一些方法可以将 C++ 转换为 C here . GCC 对此有什么帮助吗?

最佳答案

将汇编语言反编译回 C++ 是可能的(例如,使用 HexRays ),但在一些限制条件下——主要是虽然你得到的 C++ 将正确反射(reflect)基本算法,但它可能看起来不太像原始源代码(尽管 C++ 名称改组确实有助于保持比您通常使用许多其他语言更接近原始代码的内容)。

关于c++ - 将C++代码编译成汇编然后反汇编,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7961966/

相关文章:

c++ - 确定升压变体中的最大 sizeof()

c++ - 在 C++ 中声明指向结构的指针会自动为其成员分配内存。我错了吗?

linux - 使用 VB.NET 将文档加载/保存到 SFTP Linux 服务器

linux - 如何从 pid 获取 xid(反之亦然)?

c - 这个地址指向哪个函数?

c++ - 使用带有 boost::array<char, n> 的 boost::iostreams::array_sink

c++ - 将 std::weak_ptr 与 std::shared_ptr 一起用于阴影

c++ - 在 MSVC 中获取负 `time_t` 的 DST

c++ - 用于用户输入的 Linux C++ gdb 命令

gcc - 创建一个无需 gnat-tools 即可链接的静态 Ada-Library