libclues
Linux C++ Tracing Library
Loading...
Searching...
No Matches
x86_64.hxx
1#pragma once
2
3// clues
4#include <clues/regs/RegisterData.hxx>
5#include <clues/sysnrs/x32.hxx>
6#include <clues/sysnrs/x64.hxx>
7
8namespace clues {
9
11
15template <typename SYSCALLNR>
17 public RegisterData<uint64_t, 6> {
18public: // constants
19
20 static constexpr auto NUM_REGS = 27;
21
22public: // functions
23
24 auto syscallRes() const {
25 return rax;
26 }
27
28 SYSCALLNR syscallNr() const {
29 return SYSCALLNR{orig_rax};
30 }
31
32 SystemCallPars syscallPars() const {
33 return SystemCallPars{
34 rdi, rsi, rdx, r10, r8, r9
35 };
36 }
37
38 void clear() {
39 cosmos::zero_object(*this);
40 }
41
42 static auto registerNames() {
43 return std::array<const char*, NUM_REGS>({
44 "r15", "r14", "r13", "r12", "rbp", "rbx", "r11",
45 "r10", "r9", "r8", "rax", "rcx", "rdx", "rsi",
46 "orig_rax", "rip", "cs", "flags", "rsp", "ss",
47 "fs_base", "gs_base", "ds", "es", "fs", "gs"
48 });
49 }
50
51 auto array() const {
52 return std::array<register_t, NUM_REGS>({
53 r15, r14, r13, r12, rbp, rbx, r11,
54 r10, r9, r8, rax, rcx, rdx, rsi,
55 orig_rax, rip, cs, flags, rsp, ss,
56 fs_base, gs_base, ds, es, fs, gs
57 });
58 }
59
60public: // data
61
62 register_t r15;
63 register_t r14;
64 register_t r13;
65 register_t r12;
66 register_t rbp;
67 register_t rbx;
68 register_t r11;
69 register_t r10;
70 register_t r9;
71 register_t r8;
72 register_t rax;
73 register_t rcx;
74 register_t rdx;
75 register_t rsi;
76 register_t rdi;
77 register_t orig_rax;
78 register_t rip;
79 register_t cs;
80 register_t flags;
81 register_t rsp;
82 register_t ss;
83 register_t fs_base;
84 register_t gs_base;
85 register_t ds;
86 register_t es;
87 register_t fs;
88 register_t gs;
89};
90
92 public RegisterDataX86_64_T<SystemCallNrX64> {
93
94};
95
97 public RegisterDataX86_64_T<SystemCallNrX32> {
98};
99
100} // end ns
Native register data for the X86_64 and X32 ABIs.
Definition x86_64.hxx:17
Base class for ABI specific register data.
std::array< register_t, NUM_SYSCALL_PARS > SystemCallPars