From a675ea09fb6e09cfebbdf8fc5795f4249f50d690 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 12 May 2023 08:57:37 +0200 Subject: [PATCH] x86: move get() disassembler helper functions ... such that none of them would need forward declarations anymore. --- opcodes/i386-dis.c | 146 ++++++++++++++++++++++----------------------- 1 file changed, 71 insertions(+), 75 deletions(-) diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index b529fe705bc..ac69205f26a 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -47,10 +47,6 @@ static void oappend_with_style (instr_info *, const char *, enum disassembler_style); static void oappend (instr_info *, const char *); static void append_seg (instr_info *); -static bool get32s (instr_info *, bfd_vma *); -static bool get16 (instr_info *, bfd_vma *); -static bool get16s (instr_info *, bfd_vma *); -static bool get8s (instr_info *, bfd_vma *); static void set_op (instr_info *, bfd_vma, bool); static bool OP_E (instr_info *, int, int); @@ -11714,6 +11710,77 @@ print_register (instr_info *ins, unsigned int reg, unsigned int rexmask, oappend_register (ins, names[reg]); } +static bool +get8s (instr_info *ins, bfd_vma *res) +{ + if (!fetch_code (ins->info, ins->codep + 1)) + return false; + *res = (((bfd_vma) *ins->codep++ & 0xff) ^ 0x80) - 0x80; + return true; +} + +static bool +get16 (instr_info *ins, bfd_vma *res) +{ + if (!fetch_code (ins->info, ins->codep + 2)) + return false; + *res = (bfd_vma) *ins->codep++ & 0xff; + *res |= ((bfd_vma) *ins->codep++ & 0xff) << 8; + return true; +} + +static bool +get16s (instr_info *ins, bfd_vma *res) +{ + if (!get16 (ins, res)) + return false; + *res = (*res ^ 0x8000) - 0x8000; + return true; +} + +static bool +get32 (instr_info *ins, bfd_vma *res) +{ + if (!fetch_code (ins->info, ins->codep + 4)) + return false; + *res = *ins->codep++ & (bfd_vma) 0xff; + *res |= (*ins->codep++ & (bfd_vma) 0xff) << 8; + *res |= (*ins->codep++ & (bfd_vma) 0xff) << 16; + *res |= (*ins->codep++ & (bfd_vma) 0xff) << 24; + return true; +} + +static bool +get32s (instr_info *ins, bfd_vma *res) +{ + if (!get32 (ins, res)) + return false; + + *res = (*res ^ ((bfd_vma) 1 << 31)) - ((bfd_vma) 1 << 31); + + return true; +} + +static bool +get64 (instr_info *ins, uint64_t *res) +{ + unsigned int a; + unsigned int b; + + if (!fetch_code (ins->info, ins->codep + 8)) + return false; + a = *ins->codep++ & 0xff; + a |= (*ins->codep++ & 0xff) << 8; + a |= (*ins->codep++ & 0xff) << 16; + a |= (*ins->codep++ & 0xffu) << 24; + b = *ins->codep++ & 0xff; + b |= (*ins->codep++ & 0xff) << 8; + b |= (*ins->codep++ & 0xff) << 16; + b |= (*ins->codep++ & 0xffu) << 24; + *res = a + ((uint64_t) b << 32); + return true; +} + static bool OP_E_memory (instr_info *ins, int bytemode, int sizeflag) { @@ -12249,77 +12316,6 @@ OP_G (instr_info *ins, int bytemode, int sizeflag) return true; } -static bool -get64 (instr_info *ins, uint64_t *res) -{ - unsigned int a; - unsigned int b; - - if (!fetch_code (ins->info, ins->codep + 8)) - return false; - a = *ins->codep++ & 0xff; - a |= (*ins->codep++ & 0xff) << 8; - a |= (*ins->codep++ & 0xff) << 16; - a |= (*ins->codep++ & 0xffu) << 24; - b = *ins->codep++ & 0xff; - b |= (*ins->codep++ & 0xff) << 8; - b |= (*ins->codep++ & 0xff) << 16; - b |= (*ins->codep++ & 0xffu) << 24; - *res = a + ((uint64_t) b << 32); - return true; -} - -static bool -get32 (instr_info *ins, bfd_vma *res) -{ - if (!fetch_code (ins->info, ins->codep + 4)) - return false; - *res = *ins->codep++ & (bfd_vma) 0xff; - *res |= (*ins->codep++ & (bfd_vma) 0xff) << 8; - *res |= (*ins->codep++ & (bfd_vma) 0xff) << 16; - *res |= (*ins->codep++ & (bfd_vma) 0xff) << 24; - return true; -} - -static bool -get32s (instr_info *ins, bfd_vma *res) -{ - if (!get32 (ins, res)) - return false; - - *res = (*res ^ ((bfd_vma) 1 << 31)) - ((bfd_vma) 1 << 31); - - return true; -} - -static bool -get16 (instr_info *ins, bfd_vma *res) -{ - if (!fetch_code (ins->info, ins->codep + 2)) - return false; - *res = (bfd_vma) *ins->codep++ & 0xff; - *res |= ((bfd_vma) *ins->codep++ & 0xff) << 8; - return true; -} - -static bool -get16s (instr_info *ins, bfd_vma *res) -{ - if (!get16 (ins, res)) - return false; - *res = (*res ^ 0x8000) - 0x8000; - return true; -} - -static bool -get8s (instr_info *ins, bfd_vma *res) -{ - if (!fetch_code (ins->info, ins->codep + 1)) - return false; - *res = (((bfd_vma) *ins->codep++ & 0xff) ^ 0x80) - 0x80; - return true; -} - static void set_op (instr_info *ins, bfd_vma op, bool riprel) { -- 2.30.2