Skip to main content

vmi_arch_amd64/
registers.rs

1use super::{
2    Cr0, Cr2, Cr3, Cr4, Dr0, Dr1, Dr2, Dr3, Dr6, Dr7, Gdtr, Idtr, MsrEfer, Rflags,
3    SegmentDescriptor,
4};
5
6/// The state of the CPU registers.
7#[expect(missing_docs)]
8#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
9pub struct Registers {
10    pub rax: u64,
11    pub rbx: u64,
12    pub rcx: u64,
13    pub rdx: u64,
14    pub rbp: u64,
15    pub rsi: u64,
16    pub rdi: u64,
17    pub rsp: u64,
18    pub r8: u64,
19    pub r9: u64,
20    pub r10: u64,
21    pub r11: u64,
22    pub r12: u64,
23    pub r13: u64,
24    pub r14: u64,
25    pub r15: u64,
26    pub rip: u64,
27    pub rflags: Rflags,
28
29    pub cr0: Cr0,
30    pub cr2: Cr2,
31    pub cr3: Cr3,
32    pub cr4: Cr4,
33
34    pub dr0: Dr0,
35    pub dr1: Dr1,
36    pub dr2: Dr2,
37    pub dr3: Dr3,
38    pub dr6: Dr6,
39    pub dr7: Dr7,
40
41    pub cs: SegmentDescriptor,
42    pub ds: SegmentDescriptor,
43    pub es: SegmentDescriptor,
44    pub fs: SegmentDescriptor,
45    pub gs: SegmentDescriptor,
46    pub ss: SegmentDescriptor,
47    pub tr: SegmentDescriptor,
48    pub ldtr: SegmentDescriptor,
49
50    pub idtr: Idtr,
51    pub gdtr: Gdtr,
52
53    pub sysenter_cs: u64,
54    pub sysenter_esp: u64,
55    pub sysenter_eip: u64,
56    pub shadow_gs: u64,
57
58    pub msr_flags: u64,
59    pub msr_lstar: u64,
60    pub msr_star: u64,
61    pub msr_cstar: u64,
62    pub msr_syscall_mask: u64,
63    pub msr_efer: MsrEfer,
64    pub msr_tsc_aux: u64,
65    // npt_base: u64,
66    // vmtrace_pos: u64,
67}
68
69#[expect(missing_docs)]
70/// General-purpose registers.
71#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
72pub struct GpRegisters {
73    pub rax: u64,
74    pub rbx: u64,
75    pub rcx: u64,
76    pub rdx: u64,
77    pub rbp: u64,
78    pub rsi: u64,
79    pub rdi: u64,
80    pub rsp: u64,
81    pub r8: u64,
82    pub r9: u64,
83    pub r10: u64,
84    pub r11: u64,
85    pub r12: u64,
86    pub r13: u64,
87    pub r14: u64,
88    pub r15: u64,
89    pub rip: u64,
90    pub rflags: Rflags,
91}