在Objective c程序(Xcode)中使用汇编代码
Posted
技术标签:
【中文标题】在Objective c程序(Xcode)中使用汇编代码【英文标题】:using assembly code inside Objective c program (Xcode) 【发布时间】:2014-08-15 12:21:48 【问题描述】:有没有办法在 Objective C 程序中使用汇编代码。我正在为 OSX 开发一个应用程序,并希望在 Objective C 代码旁边使用汇编代码。我搜索了互联网并找到了this 但我无法成功实现这些方法中的任何一个。任何帮助将不胜感激。
【问题讨论】:
检查 SO 帖子 [此处][1] 这可能会有所帮助。 [1]:***.com/a/5525647/334091 请注意,需要为每个 CPU 单独编写程序集。 PowerPC 已成为过去,但我们仍然在 OSX 上使用 x86 和 x86_64。 【参考方案1】:是的,当然。
您可以像在 C 中一样在 Objective-C 中使用 GCC 样式的内联汇编。您还可以在汇编源文件中定义函数并从 Objective-C 中调用它们。下面是一个简单的内联汇编示例:
int foo(int x, int y)
__asm("add %1, %0" : "+r" (x) : "r" (y));
return x;
还有一个类似的如何使用独立程序集文件的最小示例:
** myOperation.h **
int myOperation(int x, int y);
** myOperation.s **
.text
.globl _myOperation
_myOperation:
add %esi, %edi // add x and y
mov %edi, %eax // move result to correct register for return value
ret
** foo.c **
#include "myOperation.h" // include header for declaration of myOperation
...
int x = 1, y = 2;
int z = myOperation(x, y); // call function defined in myOperation.s
【讨论】:
以上是关于在Objective c程序(Xcode)中使用汇编代码的主要内容,如果未能解决你的问题,请参考以下文章
如何在objective-c中使对象在整个应用程序中保持活动状态
如何在ios objective-c 应用程序中使屏幕的全部内容滚动
Objective C / IOS5 - 根视图 - 从空应用程序模板构建 (XCODE)