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