从 swift 调用汇编中定义的函数

问题描述 投票:0回答:1

我知道在 swift 中可以使用 swift 模块中函数的

@_silgen_name
attr 与 c 进行互操作。有没有办法使用汇编文件中定义的符号来执行此操作?我想使用 Swift 进行系统调用。这就是我问的原因。

swift swift2
1个回答
3
投票

要么使用 Objective-C 创建一个包含函数原型的桥接头文件(通常命名为

MyProject-Bridging-Header.h
),要么使用 Swift 的
@_silgen_name
属性来实现相同的效果。

例如,给定您的汇编代码:

.globl _add // ensure that the symbol can be found

...

_add: // int add(int a, int b)
    movl %esi, %eax
    addl %edi, %eax
    ret

您可以将其放入桥接头文件中:

int add(int a, int b);

或者,您可以在 swift 模块的顶层执行此操作:

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

无论采用哪种方法,您都可以像调用任何其他函数一样在 Swift 中调用该函数:

let a = add(1, 2);
© www.soinside.com 2019 - 2024. All rights reserved.