【问题标题】:How can i find out the symbol name the compiler generated for my code?如何找出编译器为我的代码生成的符号名称?
【发布时间】:2011-08-05 14:25:27
【问题描述】:

我知道这是一个非常愚蠢的问题。我对编译器的真正工作原理几乎一无所知。

但最近我想找到编译器为我的 ivar 生成的符号名称,我的方法。 我在哪里以及如何知道答案? (我只使用了一些IDE。所以如果解决方案最好是简单的。如果您提供的说明非常明确,那将有很大的帮助)

(顺便问一下,有什么参考资料可以让我了解这样的事情吗?)

PS.我是 IOS 开发人员。如果 gcc 和 LLVM 在这个问题上的答案不同,我想知道两者。

【问题讨论】:

  • 这不是一个愚蠢的问题。需要考虑的一件事 GCC 编译 C、C++、Java、Objective-C、Objective-C++、Pascal 等。所有这些语言的设计和工作方式都不同,并且具有不同的功能,因此 GCC 或 Llvm 不会只做一件事。听起来你真正想知道的是 C 和 Objective-c 是如何编译的。由于 Objective-c 是 C 的“顶级”,你可能想先学习 C。

标签: objective-c gcc compiler-construction symbols llvm


【解决方案1】:

您可以使用nm 转储二进制对象的内容。然后,每个编译器都有自己的修改方式。我建议你看看Name mangling for objective C in wikipedia,它将帮助你了解 mangling 的工作原理。

【讨论】:

    【解决方案2】:

    当然,GCC 和 Clang 必须具有兼容的名称修改方案,因为它们可以使用彼此的代码。

    【讨论】:

      【解决方案3】:

      如果您使用的是 XCode 3,请选择一个源文件,然后从 Build 菜单中选择“Show Assembly Code”。

      显然 XCode 4 用户不需要汇编代码 :-(

      【讨论】:

        猜你喜欢
        • 2014-06-24
        • 1970-01-01
        • 1970-01-01
        • 2014-05-29
        • 1970-01-01
        • 1970-01-01
        • 2014-04-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多