Mail Archives: djgpp/1996/05/06/04:37:27
On Fri, 03 May 1996 10:05:34 GMT you said:
>I have found something "curious" in as. For example, assembling:
>
> movw $1234,%fs:wops
>or
> incl %fs:wops
>
>goes ok, but replacing the constant with a register:
> movw %ax,%fs:wops
>
>just generates
> movw %ax,wops
>
>which is not, preciselly, what we wanted, as it drops the segment
>prefix.
>
>Writing
> fs
> movw %ax,wops
>
>generates the correct code.
>
>Can someone else test it and tell me something? My as is dated Feb 02
>1996, 2:08a.
>
>Fernando Marcos
>
>
Yes, GAS has a lot of bugs, especially with segment overrides. Charles
Sandmann said it sometimes depends on the comments he puts in the code ;)
I've noticed one more thing: if you write pushw %ds, GAS generates an extra
16-bit opcode prefix 0x66, which is unnecessary with segment registers.
Still, if you write push %ds, GAS acts right. So: do not use the operand size
attribute with segment registers, as this may [slightly] slow down the code
and icrease the exec size. Cheers!
Martynas
- Raw text -