在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中使对象在整个应用程序中保持活动状态

在Objective c程序(Xcode)中使用汇编代码

如何在ios objective-c 应用程序中使屏幕的全部内容滚动

Objective C / IOS5 - 根视图 - 从空应用程序模板构建 (XCODE)

Objective C / Xcode仅在视频中启用横向[重复]

如何用XCode创建Objective-c和C++的混编工程?