Subject: Re: CVS commit: src/lib/libc/arch/x86_64/sys
To: Jaromir Dolecek <firstname.lastname@example.org>
From: Frank van der Linden <email@example.com>
Date: 03/16/2003 12:36:53
On Sat, Mar 15, 2003 at 04:04:24PM +0100, Jaromir Dolecek wrote:
> Does movl really zero extend? According to 80386 docs I read recently,
> movb/movw don't touch the upper part of the resiter, i.e. for example
> movb $1, %al wouldn't change %ah part and leave old contents there.
> Is x86_64 different, and does it zero the upper part of register instead?
In long (64 bit) mode:
* movw and movb touch the lower 16 and 8 bits, respectively,
to be backward compatible.
* movl gets zero-extended (upper 32 bits are zeroed out)
* movq does the full 64 bits. For immediate movq instructions,
there is only a 32 bit value in the instruction, which gets
* The exception to the above is movabsq imm,reg which does have
a full 64 bit immediate value