On x86_64 the 0x90 opcode can be prefixed with a rexB prefix allowing it to access the extended register r8 (see AMD64 V3, pg. 289 and 378). However, objdump incorrectly displays this as a prefixed nop:
11: 41 90 rexZ nop This should read: 11: 41 90 xchg %r8, %rax If prefixed with 0x66 as well 0x41, then the instruction is accessing the word register r8w. Again, objdump displays: 11: 66 data16 12: 41 90 rexZ nop instead of: 11: 66 41 90 xchg %r8w, %ax Other xchg opcodes 0x91-0x97 do not appear to be affected, so this is probably a bug related to the processor's special handling of 0x90 (e.g. no zero extension of the 64-bit registers for 0x90 to ensure a nop). -- Summary: objdump on AMD64 fails to decode prefixed 0x90 opcode properly. Product: binutils Version: 2.17 Status: NEW Severity: normal Priority: P2 Component: binutils AssignedTo: unassigned at sources dot redhat dot com ReportedBy: fruffell at cs dot uwaterloo dot ca CC: bug-binutils at gnu dot org GCC build triplet: x86_64-linux-gnu GCC host triplet: x86_64-linux-gnu GCC target triplet: x86_64-linux-gnu http://sourceware.org/bugzilla/show_bug.cgi?id=4218 ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-binutils