Messages in this thread | | | Date | Tue, 13 Nov 2007 11:56:45 -0800 | From | "H. Peter Anvin" <> | Subject | Re: [patch 5/8] Immediate Values - x86 Optimization |
| |
Mathieu Desnoyers wrote: > * H. Peter Anvin (hpa@zytor.com) wrote: >> Mathieu Desnoyers wrote: >>>> - Use "=g" constraint for char immediate value inline assembly. >>>> >>>> "=g" is the same as "=rmi" which is inherently bogus. In your actual >>>> code you use "=r", the correct constraint is "=q". >>> q >>> Any register accessible as rl. In 32-bit mode, a, b, c, and d; in >>> 64-bit mode, any integer register. I am worried that "=q" might exclude >>> the si and di registers in 32-bit mode. >>> What exactly is wrong with "=r" ? >> For "char" (8-bit) values, sp/bp/si/di are illegal in 32-bit mode. >> >> Hence "=q". >> > > Ah! yep, I see, so we say: > > 1 byte : "=q" > 2 bytes : "=r" > 4 bytes : "=r" > 8 bytes : "=r" > > ? (si and di appear to be legal for 2 and 4 bytes in 32-bit mode) >
That's right.
-hpa - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |