39 virtual uint64_t
rax()
const = 0;
44 virtual void rax(uint64_t val) = 0;
50 virtual uint64_t
rbx()
const = 0;
55 virtual void rbx(uint64_t val) = 0;
60 virtual uint64_t
rcx()
const = 0;
65 virtual void rcx(uint64_t val) = 0;
71 virtual uint64_t
rdx()
const = 0;
76 virtual void rdx(uint64_t val) = 0;
82 virtual uint64_t
r15()
const = 0;
87 virtual void r15(uint64_t val) = 0;
93 virtual uint64_t
r14()
const = 0;
98 virtual void r14(uint64_t val) = 0;
104 virtual uint64_t
r13()
const = 0;
109 virtual void r13(uint64_t val) = 0;
115 virtual uint64_t
r12()
const = 0;
120 virtual void r12(uint64_t val) = 0;
126 virtual uint64_t
r11()
const = 0;
131 virtual void r11(uint64_t val) = 0;
137 virtual uint64_t
r10()
const = 0;
142 virtual void r10(uint64_t val) = 0;
148 virtual uint64_t
r9()
const = 0;
153 virtual void r9(uint64_t val) = 0;
159 virtual uint64_t
r8()
const = 0;
164 virtual void r8(uint64_t val) = 0;
170 virtual uint64_t
rsi()
const = 0;
175 virtual void rsi(uint64_t val) = 0;
181 virtual uint64_t
rdi()
const = 0;
186 virtual void rdi(uint64_t val) = 0;
192 virtual uint64_t
rsp()
const = 0;
197 virtual void rsp(uint64_t val) = 0;
203 virtual uint64_t
rbp()
const = 0;
208 virtual void rbp(uint64_t val) = 0;
214 virtual uint64_t
rip()
const = 0;
219 virtual void rip(uint64_t val) = 0;
344 virtual uint64_t
cr2()
const = 0;
350 virtual uint64_t
cr3()
const = 0;
362 virtual uint64_t
cr8()
const = 0;
The x86 Control Register 0.
Definition Cr0.hh:26
The x86 Control Register 4.
Definition Cr4.hh:26
The x86 Extended Feature Enable Register.
Definition Efer.hh:28
Handler for the x86 EFLAGS/RFLAGS register.
Definition Flags.hh:26
A class for holding x86 register state.
Definition Registers.hh:33
virtual uint64_t r10() const =0
Get the r10 register value.
virtual void r8(uint64_t val)=0
Set the r8 register value.
virtual uint64_t rax() const =0
Get the rax register value.
virtual Cr0 cr0() const =0
Get control register 0.
virtual void rip(uint64_t val)=0
Set the rip register value.
virtual void r15(uint64_t val)=0
Set the r15 register value.
virtual uint64_t gdtr_base() const =0
Get the gdtr segment base register.
virtual uint64_t msr(Msr msr) const =0
Get a raw MSR value.
virtual Segment cs() const =0
Get the code segment register.
virtual void rbp(uint64_t val)=0
Set the rbp register value.
virtual Segment gs() const =0
Get the GS register.
virtual Segment ss() const =0
Get the stack segment register.
virtual void rbx(uint64_t val)=0
Set the rbx register value.
virtual Segment tr() const =0
Get the task segment register.
virtual void rflags(const Flags &val)=0
Convenience method for rflags().value(val.value())
virtual uint64_t cr3() const =0
Get control register 3.
virtual Segment ldt() const =0
Get the segment descriptor for the ldt.
virtual uint64_t rbx() const =0
Get the rbx register value.
virtual Segment ds() const =0
Get the data segment register.
virtual bool cs_long_mode() const =0
Get long mode for the current code segment.
virtual uint32_t gdtr_limit() const =0
Get the gdtr segment limit register.
virtual void r10(uint64_t val)=0
Set the r10 register value.
virtual void r9(uint64_t val)=0
Set the r9 register value.
virtual const Flags & rflags() const =0
Get the rflags register value.
virtual Cr4 cr4() const =0
Get control register 4.
virtual void rdi(uint64_t val)=0
Set the rdi register value.
virtual void r13(uint64_t val)=0
Set the r13 register value.
virtual uint64_t r14() const =0
Get the r14 register value.
virtual uint64_t r11() const =0
Get the r11 register value.
virtual void msr(Msr msr, uint64_t val)=0
Set a raw MSR value.
virtual uint64_t rsp() const =0
Get the rsp register value.
virtual void rax(uint64_t val)=0
Set the rax register value.
virtual uint64_t rbp() const =0
Get the rbp register value.
virtual uint32_t idtr_limit() const =0
Get the interrupt descritor table limit.
virtual uint64_t r8() const =0
Get the r8 register value.
virtual ~Registers()=default
Destroy the instance.
virtual void rcx(uint64_t val)=0
Set the rcx register value.
virtual uint64_t rip() const =0
Get the rip register value.
virtual uint64_t r12() const =0
Get the r12 register value.
virtual void rsi(uint64_t val)=0
Set the rsi register value.
virtual uint64_t rsi() const =0
Get the rsi register value.
virtual void cs(x86::Segment seg)=0
Set the code segment register.
virtual void r11(uint64_t val)=0
Set the r11 register value.
virtual uint64_t cr8() const =0
Get control register 8.
virtual uint64_t r13() const =0
Get the r13 register value.
virtual uint64_t rdx() const =0
Get the rdx register value.
virtual Flags & rflags()=0
Get the rflags register value.
virtual void r12(uint64_t val)=0
Set the r12 register value.
virtual void rdx(uint64_t val)=0
Set the rdx register value.
virtual uint64_t idtr_base() const =0
Get the interrupt descritor table base address.
virtual uint64_t r15() const =0
Get the r15 register value.
virtual void rsp(uint64_t val)=0
Set the rsp register value.
virtual void r14(uint64_t val)=0
Set the r14 register value.
virtual Efer efer() const =0
Get the Efer MSR.
virtual uint64_t rcx() const =0
Get the rcx register value.
virtual uint64_t r9() const =0
Get the r9 register value.
virtual Segment es() const =0
Get the ES register.
virtual uint64_t cr2() const =0
Get control register 2.
virtual uint64_t rdi() const =0
Get the rdi register value.
virtual Segment fs() const =0
Get the FS register.
Class to represent an x86 segment register.
Definition Segment.hh:66
Msr
x86_64 MSR valueus TODO: Many values are missing from this enum
Definition Msr.hh:27
Core IntroVirt classes.
Definition Cr0.hh:20