6 releases
0.1.5 | Apr 13, 2023 |
---|---|
0.1.4 | Apr 7, 2023 |
0.1.2 | Feb 3, 2023 |
0.1.1 | Jan 27, 2023 |
0.1.0 | Aug 12, 2022 |
#36 in #asm
862 downloads per month
Used in 2 crates
(via naked-function)
19KB
381 lines
#[naked]
Documentation
This crate provide a proc macro version of the #[naked]
attribute which can
be used on stable Rust.
Example
// 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);
}
License
Licensed under either of:
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
lib.rs
:
Implementation of the proc macro used by the naked-function
crate.
Don't use this crate directly, use the naked-function
crate instead.
Dependencies
~240–690KB
~16K SLoC