diff options
author | Alan Modra <amodra@gmail.com> | 2019-04-07 20:47:06 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2019-04-07 22:35:56 +0930 |
commit | e392bad3ec99458369723e14ded8c23b5b13073c (patch) | |
tree | 035857411b58a7180934f7d5ed0e85170fa3eb88 /opcodes | |
parent | dffaa15c481cea4081732d616334e24abc557fd1 (diff) | |
download | gdb-e392bad3ec99458369723e14ded8c23b5b13073c.zip gdb-e392bad3ec99458369723e14ded8c23b5b13073c.tar.gz gdb-e392bad3ec99458369723e14ded8c23b5b13073c.tar.bz2 |
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.
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/ChangeLog | 6 | ||||
-rw-r--r-- | opcodes/ppc-dis.c | 49 |
2 files changed, 29 insertions, 26 deletions
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 <amodra@gmail.com> + * 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 <amodra@gmail.com> + 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. */ |