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

Function 如何从程序集中调用Rust函数?,function,assembly,rust,Function,Assembly,Rust,我正在寻找像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 | gr

我正在寻找像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库一样调用它。您应该阅读全文,以便更好地理解从Rust外部调用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库一样调用它。您应该阅读全文,以便更好地理解从Rust外部调用Rust的利弊和陷阱