6 个版本
0.1.5 | 2023 年 4 月 13 日 |
---|---|
0.1.4 | 2023 年 4 月 7 日 |
0.1.2 | 2023 年 2 月 3 日 |
0.1.1 | 2023 年 1 月 27 日 |
0.1.0 | 2022 年 8 月 12 日 |
#42 in #asm
1,546 monthly downloads
在 2 个 crate 中使用 (via naked-function)
19KB
381 行
#[naked]
文档
此 crate 提供了一个用于稳定 Rust 的 #[naked]
属性的 proc 宏版本。
示例
// The SYSV64 calling convention used on x86_64 Linux passes the first
// 2 integer arguments in EDI/ESI.
#[naked_function::naked]
pub unsafe extern "C" fn add(a: i32, b: i32) -> i32 {
asm!(
"lea eax, [edi + esi]",
"ret",
);
}
#[test]
fn main() {
let ret = unsafe { add(1, 2) };
assert_eq!(ret, 3);
}
许可证
根据您的选择,许可协议为以下之一
- Apache 许可证 2.0 版 (LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交以包含在作品中的任何贡献,都将根据上述方式双重许可,而无需任何附加条款或条件。
lib.rs
:
naked-function
crate 使用的 proc 宏的实现。
不要直接使用此 crate,而是使用 naked-function
crate。
依赖项
~275–730KB
~17K SLoC