• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 std::arch::global_asm!(
2     r#"
3     .text
4     .global rust_plus_one_global_asm
5     .type rust_plus_one_global_asm, @function
6 rust_plus_one_global_asm:
7     movl (%rdi), %eax
8     inc %eax
9     retq
10 "#,
11     options(att_syntax)
12 );
13 
14 extern "C" {
cc_plus_one_c(arg: &u32) -> u3215     fn cc_plus_one_c(arg: &u32) -> u32;
cc_plus_one_c_asm(arg: &u32) -> u3216     fn cc_plus_one_c_asm(arg: &u32) -> u32;
cc_plus_one_cxx(arg: &u32) -> u3217     fn cc_plus_one_cxx(arg: &u32) -> u32;
cc_plus_one_cxx_asm(arg: &u32) -> u3218     fn cc_plus_one_cxx_asm(arg: &u32) -> u32;
cc_plus_one_asm(arg: &u32) -> u3219     fn cc_plus_one_asm(arg: &u32) -> u32;
cmake_plus_one_c(arg: &u32) -> u3220     fn cmake_plus_one_c(arg: &u32) -> u32;
cmake_plus_one_c_asm(arg: &u32) -> u3221     fn cmake_plus_one_c_asm(arg: &u32) -> u32;
cmake_plus_one_cxx(arg: &u32) -> u3222     fn cmake_plus_one_cxx(arg: &u32) -> u32;
cmake_plus_one_cxx_asm(arg: &u32) -> u3223     fn cmake_plus_one_cxx_asm(arg: &u32) -> u32;
cmake_plus_one_c_global_asm(arg: &u32) -> u3224     fn cmake_plus_one_c_global_asm(arg: &u32) -> u32;
cmake_plus_one_cxx_global_asm(arg: &u32) -> u3225     fn cmake_plus_one_cxx_global_asm(arg: &u32) -> u32;
cmake_plus_one_asm(arg: &u32) -> u3226     fn cmake_plus_one_asm(arg: &u32) -> u32;
rust_plus_one_global_asm(arg: &u32) -> u3227     fn rust_plus_one_global_asm(arg: &u32) -> u32;
28 }
29 
main()30 fn main() {
31     let value: u32 = 41;
32     let question = "Answer to the Ultimate Question of Life, the Universe, and Everything:";
33 
34     unsafe {
35         println!("{}: {}!", question, rust_plus_one_global_asm(&value));
36         println!("{}: {}!", question, cc_plus_one_c(&value));
37         println!("{}: {}!", question, cc_plus_one_c_asm(&value));
38         println!("{}: {}!", question, cc_plus_one_cxx(&value));
39         println!("{}: {}!", question, cc_plus_one_cxx_asm(&value));
40         println!("{}: {}!", question, cc_plus_one_asm(&value));
41         println!("{}: {}!", question, cmake_plus_one_c(&value));
42         println!("{}: {}!", question, cmake_plus_one_c_asm(&value));
43         println!("{}: {}!", question, cmake_plus_one_cxx(&value));
44         println!("{}: {}!", question, cmake_plus_one_cxx_asm(&value));
45         println!("{}: {}!", question, cmake_plus_one_c_global_asm(&value));
46         println!("{}: {}!", question, cmake_plus_one_cxx_global_asm(&value));
47         println!("{}: {}!", question, cmake_plus_one_asm(&value));
48     }
49 }
50