mirror of
https://github.com/adulau/aha.git
synced 2025-01-03 22:53:18 +00:00
[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
1 changed files with 3 additions and 1 deletions
|
@ -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…
Reference in a new issue