On Tue, Mar 27, 2012 at 7:28 PM, H.J. Lu <hjl.to...@gmail.com> wrote:

> GCC needs to move the value in the %fs segment
> register into %r32 or %r64.  This instruction
> "mov{l}\t{%%fs:0, %k0|%k0, DWORD PTR fs:0}"
> does exactly what GCC wants.

Sorry, I really don't understand what you are trying to say.

You are loading ptrmode (so, void *) pointer from %fs:0 to a DImode
register. If you use movl, you can say that this instruction zero
extends the value (void *, ptrmode, SImode) from a memory location
pointed by %fs:0 to a DImode register. Please note the difference

movl %fs:0, %eax


movl %fs, %eax.

BTW: %fs is a 16bit register.


Reply via email to