从 swift 调用汇编中定义的函数
calling a function defined in assembly from swift
我知道在 swift 中可以使用 swift 模块中函数的 @_silgen_name
attr 与 c 互操作。有没有办法用汇编文件中定义的符号来做到这一点?我想使用 Swift 进行系统调用。这就是我问的原因。
创建桥 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);
或
在 swift 模块的顶部定义它
@_silgen_name("add") func add(a: Int32, b: Int32) -> Int32
那么在swift中就可以使用了:
let a = add(1, 2);
我知道在 swift 中可以使用 swift 模块中函数的 @_silgen_name
attr 与 c 互操作。有没有办法用汇编文件中定义的符号来做到这一点?我想使用 Swift 进行系统调用。这就是我问的原因。
创建桥 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);
或
在 swift 模块的顶部定义它
@_silgen_name("add") func add(a: Int32, b: Int32) -> Int32
那么在swift中就可以使用了:
let a = add(1, 2);