diff options
author | Tom de Vries <tdevries@suse.de> | 2025-03-07 09:25:33 +0100 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2025-03-07 09:25:33 +0100 |
commit | 0c1eecdfc6348ec9213ebbb42ddce78fc197a428 (patch) | |
tree | 2552b77d0371aa70238630c55ef1181ad7be87e1 | |
parent | cdde99c6d5fdef336bfe3b5472c0db329eaa39a7 (diff) | |
download | binutils-0c1eecdfc6348ec9213ebbb42ddce78fc197a428.zip binutils-0c1eecdfc6348ec9213ebbb42ddce78fc197a428.tar.gz binutils-0c1eecdfc6348ec9213ebbb42ddce78fc197a428.tar.bz2 |
[gdb/tdep] Factor out amd64_get_used_input_int_regs
The function amd64_get_unused_input_int_reg consists of two parts:
- finding the used int registers in an insn, and
- picking an unused int register.
Factor out the first part as new function amd64_get_used_input_int_regs.
No functional changes.
Tested on x86_64-linux.
-rw-r--r-- | gdb/amd64-tdep.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c index 0c3eae1..dd0fa06 100644 --- a/gdb/amd64-tdep.c +++ b/gdb/amd64-tdep.c @@ -1206,13 +1206,11 @@ amd64_skip_prefixes (gdb_byte *insn) return insn; } -/* Return an integer register in ALLOWED_REGS_MASK that is unused as an input - operand in INSN. The register numbering of the result follows architecture - ordering, e.g. RDI = 7. Return -1 if no register can be found. */ +/* Return a register mask for the integer registers that are used as an input + operand in INSN. */ -static int -amd64_get_unused_input_int_reg (const struct amd64_insn *details, - uint32_t allowed_regs_mask) +static uint32_t +amd64_get_used_input_int_regs (const struct amd64_insn *details) { /* 1 bit for each reg */ uint32_t used_regs_mask = 0; @@ -1255,6 +1253,19 @@ amd64_get_unused_input_int_reg (const struct amd64_insn *details, } gdb_assert (used_regs_mask < 256); + return used_regs_mask; +} + +/* Return an integer register in ALLOWED_REGS_MASK that is unused as an input + operand in INSN. The register numbering of the result follows architecture + ordering, e.g. RDI = 7. Return -1 if no register can be found. */ + +static int +amd64_get_unused_input_int_reg (const struct amd64_insn *details, + uint32_t allowed_regs_mask) +{ + /* 1 bit for each reg */ + uint32_t used_regs_mask = amd64_get_used_input_int_regs (details); /* Finally, find a free reg. */ { |