gas/testsuite/

2005-05-25  Jan Beulich  <jbeulich@novell.com>

	* gas/i386/intelok.d: Account for 32-bit displacements being shown
	in hex.

opcodes/
2005-05-25  Jan Beulich  <jbeulich@novell.com>

	* i386-dis.c (OP_E): In Intel mode, display 32-bit displacements in
	hex (but retain it being displayed as signed). Remove redundant
	checks. Add handling of displacements for 16-bit addressing in Intel
	mode.
This commit is contained in:
Jan Beulich
2005-05-25 06:50:23 +00:00
parent c7e2e997e4
commit 3d456fa193
4 changed files with 63 additions and 19 deletions

View File

@ -1,3 +1,10 @@
2005-05-25 Jan Beulich <jbeulich@novell.com>
* i386-dis.c (OP_E): In Intel mode, display 32-bit displacements in
hex (but retain it being displayed as signed). Remove redundant
checks. Add handling of displacements for 16-bit addressing in Intel
mode.
2005-05-25 Jan Beulich <jbeulich@novell.com>
* i386-dis.c (prefix_name): Remove pointless mode_64bit check.

View File

@ -3337,22 +3337,23 @@ OP_E (int bytemode, int sizeflag)
oappend (scratchbuf);
}
}
if (intel_syntax)
if (mod != 0 || (base & 7) == 5)
{
/* Don't print zero displacements. */
if (disp != 0)
{
if ((bfd_signed_vma) disp > 0)
{
*obufp++ = '+';
*obufp = '\0';
}
if (intel_syntax && disp)
{
if ((bfd_signed_vma) disp > 0)
{
*obufp++ = '+';
*obufp = '\0';
}
else if (mod != 1)
{
*obufp++ = '-';
*obufp = '\0';
disp = - (bfd_signed_vma) disp;
}
print_operand_value (scratchbuf, 0, disp);
oappend (scratchbuf);
}
}
print_operand_value (scratchbuf, mod != 1, disp);
oappend (scratchbuf);
}
*obufp++ = close_char;
*obufp = '\0';
@ -3410,10 +3411,41 @@ OP_E (int bytemode, int sizeflag)
{
*obufp++ = open_char;
*obufp = '\0';
oappend (index16[rm + add]);
oappend (index16[rm]);
if (intel_syntax && disp)
{
if ((bfd_signed_vma) disp > 0)
{
*obufp++ = '+';
*obufp = '\0';
}
else if (mod != 1)
{
*obufp++ = '-';
*obufp = '\0';
disp = - (bfd_signed_vma) disp;
}
print_operand_value (scratchbuf, mod != 1, disp);
oappend (scratchbuf);
}
*obufp++ = close_char;
*obufp = '\0';
}
else if (intel_syntax)
{
if (prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS
| PREFIX_ES | PREFIX_FS | PREFIX_GS))
;
else
{
oappend (names_seg[ds_reg - es_reg]);
oappend (":");
}
print_operand_value (scratchbuf, 1, disp & 0xffff);
oappend (scratchbuf);
}
}
}