繁体   English   中英

如何从程序集中调用Rust函数?

[英]How can I call a Rust function from assembly?

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

如果您知道如何从汇编中调用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指南,以更好地了解从Rust外部调用Rust的权衡和陷阱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM