4 个版本

0.2.0 2022年11月22日
0.1.2 2022年11月16日
0.1.1 2022年10月20日
0.1.0 2022年10月20日

#810数据结构

MIT 许可证

170KB
4.5K SLoC

write_x86_64 rust 库

目标

此库旨在帮助人们使用 Rust 实现编译器的 x86_64 汇编后端。因此,此库实现了用于编写简单的 x86_64 指令的数据结构,并检查这些指令的类型。

使用方法

为 x86_64 macOS 生成 Hello World 程序(也适用于 Linux)

use write_x86_64::*;

fn main() {
    let file_name = "asm_file.s";

    let text_ss = Segment::label(new_label("main"))
        + pushq(reg!(RBP))
        + leaq(lab!(new_label("my_string")), RDI)
        + call(reg::Label::printf())
        + leaq(lab!(new_label("my_string2")), RDI)
        + call(reg::Label::printf())
        + xorq(reg!(RAX), reg!(RAX))
        + popq(RBP)
        + ret();

    let data_ss = Data::label(new_label("my_string"))
        + data::dasciz("Hello".to_string())
        + Data::label(new_label("my_string2"))
        + data::dasciz(" World\\n".to_string());

    let file = file::File {
        globl: Some(new_label("main")),
        text_ss,
        data_ss,
    };

    file.print_in(file_name).unwrap();
}

贡献

欢迎贡献,如果您使用此库并且希望添加更多指令,也可以提出要求。

未来工作

我们目前正在尝试实现 DWARF 调试符号。欢迎任何贡献、测试和评论。

使用此库的项目

无运行时依赖