#x86-64 #higher-level #data-structures #intel-sgx #ia32

x86

用于编程 x86 (amd64) 硬件的库。包含 x86 特定的数据结构描述、数据表,以及方便调用通常不在高级语言中公开的汇编指令的实用函数。

74 个版本 (重大更新)

0.52.0 2022年10月18日
0.51.0 2022年7月15日
0.50.0 2022年6月30日
0.47.0 2022年3月3日
0.0.1 2015年3月28日

#211硬件支持

Download history 6275/week @ 2024-03-14 6610/week @ 2024-03-21 5532/week @ 2024-03-28 6963/week @ 2024-04-04 5893/week @ 2024-04-11 6360/week @ 2024-04-18 6053/week @ 2024-04-25 5307/week @ 2024-05-02 6826/week @ 2024-05-09 5452/week @ 2024-05-16 5292/week @ 2024-05-23 5836/week @ 2024-05-30 4746/week @ 2024-06-06 5669/week @ 2024-06-13 6195/week @ 2024-06-20 4807/week @ 2024-06-27

22,510 每月下载量
用于 36 个crate(24个直接使用)

MIT 许可证

2MB
8K SLoC

包含(ZIP文件,670KB)x86data/perfmon_data/TMA_Metrics.xlsx

x86 / amd64 库 Crates.io docs.rs/x86 Standard checks

用于编程 x86 (amd64) 硬件的库。包含 x86 特定的数据结构描述、数据表,以及方便调用通常不在高级语言中公开的汇编指令的实用函数。

当前支持

  • I/O 寄存器
  • 控制寄存器
  • 调试寄存器
  • MSR 寄存器
  • 分段
  • 描述符表(GDT、LDT、IDT)
  • IA32-e 页表布局
  • 中断(带 xAPIC 和 x2APIC,I/O APIC 驱动程序)
  • 任务状态
  • 性能计数器信息
  • Intel SGX:软件保护扩展
  • 随机数(rdrand、rdseed)
  • 时间(rdtsc、rdtscp)
  • 查询 CPUID(使用 raw_cpuid 库)
  • 事务性内存(Intel RTM 和 HLE)
  • 虚拟化(Intel VMX)

此库依赖于 libcore,因此可用于内核级代码。

测试

我们为该库使用两种测试形式。带有 #[test] 的常规测试,在环 3 进程中运行,以及 #[x86test] 测试,在虚拟机(因此提供特权执行环境)中运行(参见 x86test)。

# To execute x86tests run:
$ RUSTFLAGS="-C relocation-model=dynamic-no-pic -C code-model=kernel" RUST_BACKTRACE=1 cargo test --features vmtest

# To execute the regular tests, run:
$ cargo test --features utest

特性

  • 性能计数器:包括性能计数器信息。注意,由于包含在源代码中的大型静态生成的哈希表,此功能可能会显著增加编译时间。因此,默认情况下已禁用。

文档

依赖关系