问题
I know in swift it is possible to interop with c using the @_silgen_name
attr on a function in a swift module. Is there a way to do this with a symbol defined in an assembly file? I would like to make syscalls using Swift. This is why I'm asking.
回答1:
Create the bridge header.h file and put the prototype of the function in that file.
For example your assembly code:
.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
Then in bridging header.h file
int add(int a, int b);
OR
define this at the top of the swift module
@_silgen_name("add") func add(a: Int32, b: Int32) -> Int32
Then in swift you can use it:
let a = add(1, 2);
来源:https://stackoverflow.com/questions/39420513/calling-a-function-defined-in-assembly-from-swift