[S390] disassembler: fix output for insns with 6 operands.
The termination condition of the loop that prints the operands of an instruction doesn't stop after the maximum of 6 operands. It continues with the operands of the next instruction format instead which create really long lines. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
076fc808ab
commit
74ccbdc226
@ -1162,6 +1162,7 @@ static int print_insn(char *buffer, unsigned char *code, unsigned long addr)
|
||||
unsigned int value;
|
||||
char separator;
|
||||
char *ptr;
|
||||
int i;
|
||||
|
||||
ptr = buffer;
|
||||
insn = find_insn(code);
|
||||
@ -1169,7 +1170,8 @@ static int print_insn(char *buffer, unsigned char *code, unsigned long addr)
|
||||
ptr += sprintf(ptr, "%.5s\t", insn->name);
|
||||
/* Extract the operands. */
|
||||
separator = 0;
|
||||
for (ops = formats[insn->format] + 1; *ops != 0; ops++) {
|
||||
for (ops = formats[insn->format] + 1, i = 0;
|
||||
*ops != 0 && i < 6; ops++, i++) {
|
||||
operand = operands + *ops;
|
||||
value = extract_operand(code, operand);
|
||||
if ((operand->flags & OPERAND_INDEX) && value == 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user