Skip to content

Commit

Permalink
Use symbolic names for the segment register base IDs
Browse files Browse the repository at this point in the history
  • Loading branch information
hainest committed Nov 18, 2023
1 parent b78f45e commit 83eda80
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 12 deletions.
20 changes: 14 additions & 6 deletions common/h/registers/x86_regs.h
Expand Up @@ -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
Expand Down Expand Up @@ -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");
Expand Down
12 changes: 6 additions & 6 deletions common/src/registers/MachRegister.C
Expand Up @@ -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;
Expand Down

0 comments on commit 83eda80

Please sign in to comment.