Xcode的objective-c编译器是否针对位移进行了优化?

时间:2010-06-25 10:29:52

标签: objective-c bit-manipulation

Xcode中的objective-c编译器是否知道更好,或者如果我使用位移进行乘法和除法除以2的幂,它会更快吗?

NSInteger parentIndex = index >> 1; // integer division by 2

1 个答案:

答案 0 :(得分:1)

这不是1980年代的一点吗?处理器最近是否在同一时间运行这些说明?我记得在我的68000天里,当一个div超过100个周期并且只有3或4个换档时...不确定在处理器已经移动的情况下就是这种情况了。

为什么不让编译器生成汇编程序文件并查看它生成的内容并运行一些基准测试。

我在网上发现这可能会对你有所帮助......虽然它是'C'但我认为大多数选项都是一样的。

Q: How can I peek at the assembly code generated by GCC?

Q: How can I create a file where I can see the C code and its assembly
   translation together?

答:使用-S(注意:大写S)切换到GCC,它会将汇编代码发送到扩展名为.s的文件。例如,以下命令:

gcc -O2 -S -c foo.c

将生成的汇编代码保留在文件foo.s。

如果要将C代码与转换为它的程序集一起使用,请使用如下命令行:

gcc -c -g -Wa,-a,-ad [其他GCC选项] foo.c> foo.lst

将组合的C /汇编列表输出到文件foo.lst。

如果您需要获取汇编代码并编译/链接程序,您可以将-save-temps选项提供给GCC(这将保留当前目录中包含.s文件的所有临时文件) ,或使用-Wa,aln = foo.s选项指示汇编程序将C代码的汇编转换(连同十六进制机器代码和一些附加信息)输出到以=命名的文件。