From e392bad3ec99458369723e14ded8c23b5b13073c Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sun, 7 Apr 2019 20:47:06 +0930 Subject: print_insn_powerpc tidy * ppc-dis.c (print_insn_powerpc): Use a tiny state machine op_separator to control printing of spaces, comma and parens rather than need_comma, need_paren and spaces vars. --- opcodes/ChangeLog | 6 ++++++ opcodes/ppc-dis.c | 49 +++++++++++++++++++++++-------------------------- 2 files changed, 29 insertions(+), 26 deletions(-) (limited to 'opcodes') diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 0fb4e0d..bf775b5 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,5 +1,11 @@ 2019-04-07 Alan Modra + * ppc-dis.c (print_insn_powerpc): Use a tiny state machine + op_separator to control printing of spaces, comma and parens + rather than need_comma, need_paren and spaces vars. + +2019-04-07 Alan Modra + PR 24421 * arm-dis.c (print_insn_coprocessor): Correct bracket placement. (print_insn_neon, print_insn_arm): Likewise. diff --git a/opcodes/ppc-dis.c b/opcodes/ppc-dis.c index f42d5b2..cb10b23 100644 --- a/opcodes/ppc-dis.c +++ b/opcodes/ppc-dis.c @@ -720,8 +720,17 @@ print_insn_powerpc (bfd_vma memaddr, { const unsigned char *opindex; const struct powerpc_operand *operand; - int need_comma; - int need_paren; + enum { + need_comma = 0, + need_1space = 1, + need_2spaces = 2, + need_3spaces = 3, + need_4spaces = 4, + need_5spaces = 5, + need_6spaces = 6, + need_7spaces = 7, + need_paren + } op_separator; int skip_optional; int spaces; @@ -732,8 +741,7 @@ print_insn_powerpc (bfd_vma memaddr, spaces = 1; /* Now extract and print the operands. */ - need_comma = 0; - need_paren = 0; + op_separator = spaces; skip_optional = -1; for (opindex = opcode->operands; *opindex != 0; opindex++) { @@ -754,16 +762,12 @@ print_insn_powerpc (bfd_vma memaddr, value = operand_value_powerpc (operand, insn, dialect); - if (spaces) - { - (*info->fprintf_func) (info->stream, "%*s", spaces, " "); - spaces = 0; - } - if (need_comma) - { - (*info->fprintf_func) (info->stream, ","); - need_comma = 0; - } + if (op_separator == need_comma) + (*info->fprintf_func) (info->stream, ","); + else if (op_separator == need_paren) + (*info->fprintf_func) (info->stream, "("); + else + (*info->fprintf_func) (info->stream, "%*s", op_separator, " "); /* Print the operand as directed by the flags. */ if ((operand->flags & PPC_OPERAND_GPR) != 0 @@ -808,19 +812,12 @@ print_insn_powerpc (bfd_vma memaddr, else (*info->fprintf_func) (info->stream, "%" PRId64, value); - if (need_paren) - { - (*info->fprintf_func) (info->stream, ")"); - need_paren = 0; - } + if (op_separator == need_paren) + (*info->fprintf_func) (info->stream, ")"); - if ((operand->flags & PPC_OPERAND_PARENS) == 0) - need_comma = 1; - else - { - (*info->fprintf_func) (info->stream, "("); - need_paren = 1; - } + op_separator = need_comma; + if ((operand->flags & PPC_OPERAND_PARENS) != 0) + op_separator = need_paren; } /* We have found and printed an instruction. */ -- cgit v1.1