Crates.io | naked-function |
lib.rs | naked-function |
version | 0.1.5 |
source | src |
created_at | 2022-08-12 01:26:16.354587 |
updated_at | 2023-04-13 17:11:45.568761 |
description | Proc macro implementation of #[naked] |
homepage | |
repository | https://github.com/Amanieu/naked-function |
max_upload_size | |
id | 643683 |
size | 28,736 |
#[naked]
This crate provide a proc macro version of the #[naked]
attribute which can
be used on stable Rust.
// 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);
}
Licensed under either of:
at your option.
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.