#llvm #compiler #machinecode #assembly

sys hllvm-sys

围绕 LLVM C++ 库的 FFI 包装器

4 个版本

使用旧的 Rust 2015

0.1.3 2017年7月2日
0.1.2 2017年6月25日
0.1.1 2016年12月21日
0.1.0 2016年12月20日

#436编程语言

每月 32 次下载
hllvm 中使用

MIT 许可证

51KB
1K SLoC

LLVM C FFI 库

约定

布局

项目试图紧密遵循 LLVM C++ 头文件结构。

如果有上游 llvm/IR/Value.h 头文件,我们将在以下文件中定义

  • ir/value.cpp - 实际的 FFI 函数定义。
  • ir/value.rs - 该文件的 FFI 声明。

每个 .cpp 文件应该有一个相关的 .rs 文件。

所有在 Rust 中声明的 FFI 函数都应导入到 crate 根目录。

代码

所有函数都将以前缀 LLVMRust 开头,并将以 C ABI 和无名称修饰的形式导出。

构造函数/析构函数

这些函数的命名应类似于 LLVMRustCreate<ClassName>LLVMRustDestroy<ClassName>

示例

  • LLVMRustCreateContext
  • LLVMRustDestroyContext
  • LLVMRustCreateValue

方法和静态函数

如果我们在 Value 上有一个 get 函数,则 FFI 函数应如下所示

LLVMRustValueGet

静态函数与标准方法不同,没有大写字母。

重载函数

当存在重载方法时,并且额外的重载仅用于方便,只需实现最通用的方法。

依赖项

~2.9–5MB
~119K SLoC