| Crates.io | naked-function |
| lib.rs | naked-function |
| version | 0.1.5 |
| created_at | 2022-08-12 01:26:16.354587+00 |
| updated_at | 2023-04-13 17:11:45.568761+00 |
| 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.