/rust/registry/src/index.crates.io-1949cf8c6b5b557f/x86-0.47.0/src/bits64/registers.rs
Line | Count | Source |
1 | | use core::arch::asm; |
2 | | |
3 | | /// Read the RIP register (instruction pointer). |
4 | | #[inline(always)] |
5 | 0 | pub fn rip() -> u64 { |
6 | | let rip: u64; |
7 | 0 | unsafe { |
8 | 0 | asm!("leaq 0(%rip), {0}", out(reg) rip, options(att_syntax)); |
9 | 0 | } |
10 | 0 | rip |
11 | 0 | } |
12 | | |
13 | | /// Read the RSP register (stack pointer register). |
14 | | #[inline(always)] |
15 | 0 | pub fn rsp() -> u64 { |
16 | | let rsp: u64; |
17 | 0 | unsafe { |
18 | 0 | asm!("mov %rsp, {0}", out(reg) rsp, options(att_syntax)); |
19 | 0 | } |
20 | 0 | rsp |
21 | 0 | } |
22 | | |
23 | | /// Read the RBP register (base pointer register). |
24 | | #[inline(always)] |
25 | 0 | pub fn rbp() -> u64 { |
26 | | let rbp: u64; |
27 | 0 | unsafe { |
28 | 0 | asm!("mov %rbp, {0}", out(reg) rbp, options(att_syntax)); |
29 | 0 | } |
30 | 0 | rbp |
31 | 0 | } |