Re: [AD] Patch for performance issues in i386 blitters

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


> I'm actually surprised it assembled at all, as es is 16 bits.

For the 'movl' variant ? Yes, it's indeed a little surprising.

> I'd have called that a bug in the source.

Both forms are explicitly supported according to my docs:

MOV r/m16,segreg              ; o16 8C /r            [8086]
MOV r/m32,segreg              ; o32 8C /r            [386]
MOV segreg,r/m16              ; o16 8E /r            [8086]
MOV segreg,r/m32              ; o32 8E /r            [386]

"In all forms of the MOV instruction, the two operands are the same size,
except for moving between a segment register and an r/m32 operand. These
instructions are treated exactly like the corresponding 16-bit equivalent
(so that, for example, MOV DS,EAX functions identically to MOV DS,AX but
saves a prefix when in 32-bit mode), except that when a segment register is
moved into a 32-bit destination, the top two bytes of the result are
undefined."

> Provided it does what I think it does: mov es, word|dword ptr [edx]

Ah! Intel syntax... yes.

--
Eric Botcazou
ebotcazou@xxxxxxxxxx



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/