From 83eda80106559c17d19bea4a338e7de4330aa0ef Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Fri, 17 Nov 2023 23:29:07 -0600 Subject: [PATCH] Use symbolic names for the segment register base IDs --- common/h/registers/x86_regs.h | 20 ++++++++++++++------ common/src/registers/MachRegister.C | 12 ++++++------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/common/h/registers/x86_regs.h b/common/h/registers/x86_regs.h index 47e73c579b..47230e1b73 100644 --- a/common/h/registers/x86_regs.h +++ b/common/h/registers/x86_regs.h @@ -92,6 +92,14 @@ namespace Dyninst { namespace x86 { const signed int BASEDI = 0x7; const signed int FLAGS = 0x0; + /* Base IDs for memory segment registers */ + const signed int BASEDS = 0x0; // Data Segment register + const signed int BASESS = 0x1; // Stack Segment register + const signed int BASEFS = 0x2; // F Segment register + const signed int BASEGS = 0x3; // G Segment register + const signed int BASECS = 0x4; // Code Segment register + const signed int BASEES = 0x5; // Extended data Segment register + /* Base IDs for each bit in EFLAGS */ const signed int CF = 0x00; // Carry Flag const signed int FLAG1 = 0x01; // Reserved @@ -155,12 +163,12 @@ namespace Dyninst { namespace x86 { DEF_REGISTER( di, BASEDI | W_REG | GPR | Arch_x86, "x86"); DEF_REGISTER( eip, 0x10 | FULL | Arch_x86, "x86"); - DEF_REGISTER( cs, 0x0 | W_REG | SEG | Arch_x86, "x86"); - DEF_REGISTER( ds, 0x1 | W_REG | SEG | Arch_x86, "x86"); - DEF_REGISTER( es, 0x2 | W_REG | SEG | Arch_x86, "x86"); - DEF_REGISTER( ss, 0x3 | W_REG | SEG | Arch_x86, "x86"); - DEF_REGISTER( fs, 0x4 | W_REG | SEG | Arch_x86, "x86"); - DEF_REGISTER( gs, 0x5 | W_REG | SEG | Arch_x86, "x86"); + DEF_REGISTER( cs, BASECS | W_REG | SEG | Arch_x86, "x86"); + DEF_REGISTER( ds, BASEDS | W_REG | SEG | Arch_x86, "x86"); + DEF_REGISTER( es, BASEES | W_REG | SEG | Arch_x86, "x86"); + DEF_REGISTER( ss, BASESS | W_REG | SEG | Arch_x86, "x86"); + DEF_REGISTER( fs, BASEFS | W_REG | SEG | Arch_x86, "x86"); + DEF_REGISTER( gs, BASEGS | W_REG | SEG | Arch_x86, "x86"); DEF_REGISTER( flags, FLAGS | FULL | FLAG | Arch_x86, "x86"); DEF_REGISTER( cf, CF | BIT | FLAG | Arch_x86, "x86"); diff --git a/common/src/registers/MachRegister.C b/common/src/registers/MachRegister.C index 7a247bb0ee..f94888348f 100644 --- a/common/src/registers/MachRegister.C +++ b/common/src/registers/MachRegister.C @@ -688,12 +688,12 @@ namespace Dyninst { case x86::SEG: c = x86_regclass_segment; switch(baseID) { - case 0x0: n = x86_segreg_ds; break; - case 0x1: n = x86_segreg_es; break; - case 0x2: n = x86_segreg_fs; break; - case 0x3: n = x86_segreg_gs; break; - case 0x4: n = x86_segreg_cs; break; - case 0x5: n = x86_segreg_ss; break; + case x86::BASEDS: n = x86_segreg_ds; break; + case x86::BASEES: n = x86_segreg_es; break; + case x86::BASEFS: n = x86_segreg_fs; break; + case x86::BASEGS: n = x86_segreg_gs; break; + case x86::BASECS: n = x86_segreg_cs; break; + case x86::BASESS: n = x86_segreg_ss; break; default: n = 0; break; } break;