iPhone为thumb编译

iPhone为thumb编译,iphone,compilation,thumb,Iphone,Compilation,Thumb,我听说在iPhone目标设置中关闭“为拇指编译”可能是一个好主意,以提高性能。不过,我找不到这个设置。因为我在当前项目中找不到它,所以我决定创建一个新的(在那里我可以找到并设置它),并将我的文件复制到其中(同时更新我正在使用的所有库) 但现在看来,这种设置似乎也从这个新项目中消失了。无论我选择什么SDK,模拟器或设备,设置都不会显示在目标设置中!然而,我似乎仍然突然在“用户定义”类别下有一个名为GCC_THUMB_SUPPORT的变量。这是什么 我尝试创建一个新目标,但设置也不会显示在该目标中(

我听说在iPhone目标设置中关闭“为拇指编译”可能是一个好主意,以提高性能。不过,我找不到这个设置。因为我在当前项目中找不到它,所以我决定创建一个新的(在那里我可以找到并设置它),并将我的文件复制到其中(同时更新我正在使用的所有库)

但现在看来,这种设置似乎也从这个新项目中消失了。无论我选择什么SDK,模拟器或设备,设置都不会显示在目标设置中!然而,我似乎仍然突然在“用户定义”类别下有一个名为GCC_THUMB_SUPPORT的变量。这是什么


我尝试创建一个新目标,但设置也不会显示在该目标中(甚至连GCC_THUMB_支持都不会显示)。

GCC_THUMB_支持是正确的变量。只需将其设置为“否”即可禁用THUMB代码生成。
一般的经验法则是,如果代码是浮点型的,则禁用它:)
更多关于这个

更新:
为THUMB指令集编译的建议(实际上是从iPhone 3GS开始)。

为THUMB编译”应该在Target/Get Info/GCC 4.2-代码生成下。如果不存在(如果不存在,我会很惊讶),设置用户定义的变量


请记住,这只会在一小部分情况下提高性能,您在处理之前应该了解这些情况。

我发现编译器设置(“GCC 4.2-代码生成”、“GCC 4.2-语言”等)仅在活动SDK设置为设备时才会显示在“目标信息构建设置”窗口中,并且“用户定义”类别仅在激活SDK为模拟器时显示


是的,如果你要处理大量的浮点运算(例如浮点音频处理),那么禁用Thumb编译可以大大提高性能。当然,这不是一种万能的神奇加速(据说Thumb编译的代码在某些情况下可以运行得更快),因此,您可能只会发现禁用Thumb在您的代码存在这种瓶颈时才有用。

ARM的标准指令集是4字节。使用“为Thumb编译”,编译器可以使用2字节的指令。这会导致库小得多,但速度也较慢(有些争议)。更重要的是,在ARMv6下运行存在问题。在我们的例子中,我们无法从Monotouch生成稳定的输出(在MT4.0 alpha中修复)。在Xcode中,您可以通过单击目标并在“构建”下查找并搜索“thumb”来找到设置“.Mine在GCC4.2-代码生成下,但有时在LVVM GCC4.2下


从iPhone4、4g和5开始,这仍然相关吗?@weichsel,clang呢?现在在xcode中使用。。。thumb模式的东西仍然相关吗?上面的标志几乎不相关,因为iPhone 3GS:)我更新了我的原始答案,并添加了一个指向thumb/ARM编译相关的好SO线程的链接。