ios – 有哪些苹果平台允许内联汇编?
自从苹果公司宣布解码后,我一直在尝试解密一段时间,现在各种平台上的内联汇编状态是什么。
截至目前(Xcode 7.1.1),这是我观察到的: > OSX – 允许(我期待永远) 然而,这些都是可疑的结论,因为我没有每个市场上的应用程序来验证这一点。 我已经看到开源库和应用程序的一些帖子,当包含内联汇编和位码时,iOS应用程序将被拒绝。我看到一些帖子,tvOS是类似于watchOS,不会让你使用内联汇编(可能固定在最新的Xcode?) 有没有一些可靠的参考从苹果或..任何关于什么平台我可以使用内联汇编? 解决方法
在任何ARM平台(iOS,watchOS,tvOS)上,如果您提供混合的bitcode / asm存档,则只能与嵌入式asm相同的架构编译(见下文)。这意味着您可以提交针对该架构的完整二进制应用程序 – 提交位代码绝对没有任何优势(因此,苹果没有理由允许它)。
根据Apple docs位代码对于watchOS和tvOS是必需的,因此内联汇编被禁用。
On X86,一个包含比特码和X86 ASM混合的存档可以编译成64位应用程序。这不是一件明智的事情,因为手工制作的汇编程序大概是性能关键部分,但它可以工作。 在ARM上也是如此。 X86案例是因为X86指令集是X86_64的纯粹子集,这意味着任何X86汇编器都是有效的X86_64汇编器。在ARM上,64位处理器需要运行在32位状态才能执行32位代码。根据ARM docs,您不能在同一应用程序中混合32位和64位程序集(请参阅更改执行状态)
这意味着如果您提供了基于ARM架构ARCH的位线加内联asm的混合,实际上AppStore只能做(至少目前为止)编译ARCH的位代码,它可以让您(说)一个完整的32位应用程序在64位处理器上运行。重点是什么?首先上传一个没有位代码的普通32位可执行文件要简单得多。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |