如何从汇编中调用Rust函数?

时间:2014-12-26 17:41:45

标签: function assembly rust

我正在通过函数调用[function]寻找类似的C调用。我通过ld链接asm和Rust在一个二进制文件中。

1 个答案:

答案 0 :(得分:4)

如果你知道如何从程序集中调用C函数(我不知道,那么,那么这将有助于你获得一个可以像C函数一样调用的Rust函数:

// foo.rs
#[no_mangle]
pub extern fn increment(a: i32) -> i32 {
    a + 1
}

将其编译为动态或静态库:

$ rustc --crate-type dylib foo.rs
$ nm libfoo.dylib  | grep increment
0000000000000c70 t __ZN9increment10__rust_abiE
0000000000000c30 T _increment

现在你有一个可以被称为C库的库。您应该阅读整个FFI Guide以更好地理解从Rust外部调用Rust的权衡和陷阱。