5个版本
0.1.6 | 2023年6月3日 |
---|---|
0.1.5 | 2023年4月1日 |
0.1.3 | 2023年3月30日 |
#135 in 无标准库
用于 memx
12KB
145 行
x86-alignment-check
x86-alignment-check
在 eflags
上设置 x86
或 x86_64
中的 ac
标志
功能
- 将
ac
标志位设置为开启,包含x86
的eflags
。 - 也支持
x86_64
。 #![no_std]
示例1:如果你的代码正确地控制了对齐
首先,将以下内容添加到 Cargo.toml
[target.'cfg(any(target_arch = "x86_64", target_arch = "x86"))'.dev-dependencies]
x86-alignment-check = "*"
其次,将你的测试代码用 x86_alignment_check()
包围,如下所示
use x86_alignment_check::x86_alignment_check;
//
let old_flag = x86_alignment_check(true);
//
// here your test codes, processing anythings, a bus error may occur.
//
let _ = x86_alignment_check(old_flag);
最后执行 cargo test
示例2:call_once风格
let val = x86_alignment_check::ac_call_once(|| {
// here is alignment check
// processing anythings
// return value for assertion
1
});
assert_eq!(val, 1);
目前,由于Rust运行时错误,无法在 FnOnce
内包含 assert_eq!()
等断言。
示例3:call_once风格,但不是对齐检查
let val = x86_alignment_check::no_ac_call_once(|| {
// here is not alignment check
// processing anythings
// return value for assertion
1
});
assert_eq!(val, 1);
变更日志
许可证
该项目受以下许可证之一许可:
- Apache License,版本2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
任选其一。