GCC -fobjc-direct-dispatch 选项到底有啥作用?

Posted

技术标签:

【中文标题】GCC -fobjc-direct-dispatch 选项到底有啥作用?【英文标题】:What exactly does GCC -fobjc-direct-dispatch option do?GCC -fobjc-direct-dispatch 选项到底有什么作用? 【发布时间】:2010-05-08 14:34:08 【问题描述】:

GCC 手册说:

-fobjc-direct-dispatch

允许快速跳转到消息调度程序。在 达尔文这是通过 comm 页面完成的。

我可以假设这个标志消除了动态调度吗?它是如何工作的? 如果直接链接,我相信它应该和 C 函数调用一样快。

【问题讨论】:

【参考方案1】:

不,动态调度仍然存在(呼叫仍然通过objc_msgSend)。并且此选项当前与 x86(-64) 没有任何区别。

来自http://developer.apple.com/legacy/mac/library/documentation/DeveloperTools/gcc-3.3/gcc/Objective_002dC-Dialect-Options.html

对于一些由 Objective-C 程序非常频繁调用的函数(例如objc_msgSend),在高内存中存在特殊的入口点,可以直接跳转到(例如,通过 PowerPC 上的“bla”指令)以提高性能。 fobjc-direct-dispatch 选项将导致生成此类跳转。此选项仅与 NeXT 运行时一起可用;此外,使用-fobjc-direct-dispatch 选项构建的程序只能在 Mac OS X 10.4 (Tiger) 或更高版本的系统上运行。

【讨论】:

遗憾的是,文档链接现在已损坏;我不确定是否仍然存在等效文件! 感谢@earltedly,***.com/a/21257633/28768 也有更多信息

以上是关于GCC -fobjc-direct-dispatch 选项到底有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章

Mac OSX 上的 GCC——多个版本的 gcc

mingw和gcc的关系?mingw具有gcc的全部核心编译功能吗

gcc 和 g++/gcc-c++ 有啥区别?

ubuntu系统下怎么安装gcc编译器

GCC:在 GCC 版本之间伪装

arm gcc 内嵌汇编,gcc该是啥选项呢