从swift调用程序集中定义的函数

时间:2016-09-09 22:25:23

标签: swift swift2

我知道在swift中可以使用@_silgen_name attr在swift模块中的函数上与c互操作。有没有办法用汇编文件中定义的符号来做到这一点?我想使用Swift进行系统调用。这就是我要问的原因。

1 个答案:

答案 0 :(得分:2)

创建bridge header.h文件并将该函数的原型放在该文件中。

例如汇编代码:

.globl _add // make it global so that others can find this symbol
....
_add: // int add(int a, int b)
  movl %esi, %eax
  addl %edi, %eax
  ret

然后在桥接header.h文件中

int add(int a, int b);

OR

在swift模块的顶部定义它

@_silgen_name("add") func add(a: Int32, b: Int32) -> Int32

然后在swift中你可以使用它:

let a = add(1, 2);