Why aren't we consistent on displacement in x86 disassembler?

H. J. Lu hjl@lucon.org
Thu Apr 26 14:43:00 GMT 2007


While working on

http://sourceware.org/bugzilla/show_bug.cgi?id=4429

I noticed that we weren't consistent in the format we use on
displacement:

----
static void
print_operand_value (char *buf, int hex, bfd_vma disp)
...
static void
OP_E (int bytemode, int sizeflag)
{
...
	    print_operand_value (scratchbuf, !riprel, disp);
...
	      print_operand_value (scratchbuf, modrm.mod != 1, disp);
...
	      print_operand_value (scratchbuf, 1, disp);
...
	    print_operand_value (scratchbuf, 0, disp);
...
	      print_operand_value (scratchbuf, modrm.mod != 1, disp);
...
	  print_operand_value (scratchbuf, 1, disp & 0xffff);
}
----

That is we use hex or decimal for displacement, depending on Intel
mode, RIP relative, modrm.mod != 1 and 16bit address mode. It is
confusing. Are there any objections if I use hex for all displacements?


H.J.



More information about the Binutils mailing list