svn commit: r2031 - in trunk/yasm/modules/arch/x86: tests

peter at tortall.net peter at tortall.net
Sat Feb 2 11:23:18 PST 2008


Author: peter
Date: Sat Feb  2 11:23:17 2008
New Revision: 2031

Modified:
   trunk/yasm/modules/arch/x86/gen_x86_insn.py
   trunk/yasm/modules/arch/x86/tests/xchg64.hex
   trunk/yasm/modules/arch/x86/x86id.c
Changeset:
   http://www.tortall.net/projects/yasm/changeset/2031

Log:
Revert r2029.  According to both AMD64 and Intel 64 instruction set
references, REX + 90h opcode is not NOP, but a valid XCHG:

"The x86 architecture commonly uses the XCHG EAX, EAX instruction (opcode
90h) as a one-byte NOP. In 64-bit mode, the processor treats opcode 90h as
a true NOP only if it would exchange rAX with itself. Without this special
handling, the instruction would zero-extend the upper 32 bits of RAX, and
thus it would not be a true nooperation.  Opcode 90h can still be used to
exchange rAX and r8 if the appropriate REX prefix is used."

Noticed by: nasm64developer at users.sf.net



More information about the yasm-cvs mailing list