diff --git a/src/debugger.h b/src/debugger.h index fb98079..322f25c 100644 --- a/src/debugger.h +++ b/src/debugger.h @@ -1,6 +1,7 @@ #include #include "breakpoint.h" +#include "register.h" #include "util.h" typedef struct { diff --git a/src/register.c b/src/register.c new file mode 100644 index 0000000..7447eac --- /dev/null +++ b/src/register.c @@ -0,0 +1,33 @@ +#include "register.h" + +int n_registers = 27; + +const reg_descriptor reg_descriptors[27] = { + { r15, 15, "r15" }, + { r14, 14, "r14" }, + { r13, 13, "r13" }, + { r12, 12, "r12" }, + { rbp, 6, "rbp" }, + { rbx, 3, "rbx" }, + { r11, 11, "r11" }, + { r10, 10, "r10" }, + { r9, 9, "r9" }, + { r8, 8, "r8" }, + { rax, 0, "rax" }, + { rcx, 2, "rcx" }, + { rdx, 1, "rdx" }, + { rsi, 4, "rsi" }, + { rdi, 5, "rdi" }, + { orig_rax, -1, "orig_rax" }, + { rip, -1, "rip" }, + { cs, 51, "cs" }, + { rflags, 49, "eflags" }, + { rsp, 7, "rsp" }, + { ss, 52, "ss" }, + { fs_base, 58, "fs_base" }, + { gs_base, 59, "gs_base" }, + { ds, 53, "ds" }, + { es, 50, "es" }, + { fs, 54, "fs" }, + { gs, 55, "gs" }, +}; diff --git a/src/register.h b/src/register.h new file mode 100644 index 0000000..9ece69a --- /dev/null +++ b/src/register.h @@ -0,0 +1,41 @@ +#pragma once + +typedef enum { + rax, + rbx, + rcx, + rdx, + rdi, + rsi, + rbp, + rsp, + r8, + r9, + r10, + r11, + r12, + r13, + r14, + r15, + rip, + rflags, + cs, + orig_rax, + fs_base, + gs_base, + fs, + gs, + ss, + ds, + es, +} reg; + + +typedef struct { + reg r; + int dwarf_r; + const char name[10]; +} reg_descriptor; + +int n_registers; +const reg_descriptor reg_descriptors[27];