OSX的x86-64程序集libc例程在哪里?

首先,一些有用的链接到OSX的Libc代码:

  • Git: https : //github.com/aosm/Libc.git (带有OSX不同迭代的标签)
  • HTML: http : //www.opensource.apple.com/source/Libc/

在那里,可以看到Libc 825.40.1(OSX 10.8.5)仍然具有像memcpy这样的函数的公共asm实现。 特别是在x86_64/string/bcopy_sse42.s 。 但是,从版本997.1.1(OSX 10.9)开始,它们中的大多数似乎都消失了。 虽然有一些留在x86_64/string 。 从这里可以看到: http : //www.opensource.apple.com/source/Libc/Libc-997.90.3/x86_64/string/ 。

来源是否已关闭其他来源? 查看OSX 10.8和10.9之间的差异并不表示它们可能已移动到源树内部的位置。

调试在OSX 10.9上运行的二进制文件时,很难错过对_platform_memmove的引用。 实际上,如果我们看一下bcopy.c的来源,我们会看到:

 #include  void bcopy(const void *src, void *dst, size_t n) { _platform_memmove(dst, src, n); } 

所以也许这会产生一些有用的东西。 但由于某些原因,我找不到(_)platform_memmove ,无论是因为缺乏贪婪的能力还是宏观技巧。 有人能帮我找到吗?

编辑 :我试图寻找platform / string.h ,但就像那个邮件列表海报一样,我无法在源代码树中找到它。

编辑 :在OSX _platform_memmove$VARIANT$Nehalem上编译一个使用Xcode的clang(接近3.4)调用memcpy的源文件,并在Instruments下运行它,显示正在调用_platform_memmove$VARIANT$Nehalem 。 这让我相信专业的asm变体仍然存在于某个地方。

编辑 :转储libsystem.dylib不给我评论,但至少它给了我汇编,似乎有例程:

  • Ivy Bridge (代表Nehalem)
  • Nehalem (在我的系统中选择,2011 Core i7)
  • Merom处理器
  • SSE4.2 (大概类似于较旧的Libc中的SSE 4.2版本)
  • SSE3
  • SSE2
  • 纯量
  • 未知