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

标签 function assembly rust

我正在寻找通过函数调用 [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 Guide更好地理解从 Rust 外部调用 Rust 的权衡和陷阱。

关于function - 如何从程序集中调用 Rust 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27660151/

相关文章:

c - AT&T 汇编 + C 函数。使用 Scanf 进行字符串输入

timer - 如何使用 Tokio 产生许多可取消的计时器?

multithreading - 无法跨mpsc::Sender作为字段发送跨线程结构

c - c中的输入输出结构函数错误

C++ If/Else语句问题

delphi - Delphi中的快速Swap64函数

postgresql - 如何连接到 PostgreSQL?

Javascript If 语句验证三个不同的表单值?

javascript - addEventListener on keyup javascript once

c - 8086/386 asm 与 bcc5 : returning long int from asm proc