怎么做?我需要采取什么步骤,要考虑哪些陷阱和陷阱?

最佳答案

由于Apple Devforums提供了一些内部帮助,因此我已经做到了这一点,如果您是专门的iPhone开发人员,则应该注册。

首先是__asm __(),而不是普通的asm()。

其次,默认情况下,XCode生成一个编译目标,该目标针对ARM Thumb指令集编译内联汇编,因此usat被不认为是正确的指令。要解决此问题,请在目标服务器上执行“获取信息”。向下滚动到“GCC 4.0-代码生成”部分,然后取消选中“为Thumb编译”。然后,如果将Active SDK设置为“Device”,则下面的代码片段将可以正常编译

inline int asm_saturate_to_255 (int a) {
  int y;
  __asm__("usat %0, #8, %1\n\t" : "=r"(y) : "r"(a));
  return y;
}

自然,现在它无法与iPhone Simulator一起使用。但是TargetConditionals.h定义了您可以#ifdef针对。即TARGET_OS_IPHONE和TARGET_IPHONE_SIMULATOR。

关于iphone - 如何在iPhone上进行内联汇编?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/238010/

10-11 14:59