PATCH: Move operand/address-size override prefixes before SIMD prefix

malc av1474@comtv.ru
Thu Dec 7 11:49:00 GMT 2006


On Wed, 6 Dec 2006, Menezes, Evandro wrote:

>> Yes i know and now realize the mistake i made in the example
>> byte stream -
>> the line should have read:
>> 0xf3 0x66 0x0f 0x11 ..
>>
>> The original question remains:
>> <quote>
>> What will it be? `movss', `movupd' #UD? Does the first prefix takes
>> precedence or is there some sort of built in precedence rules (i.e.
>> not all prefixes are equal)?
>> </quote>
>
> Off the top of my head, the opcode 0x0f 0x11 preceeded by both 0xf3 and 0x66 is an illegal instruction.

So your position is that it's #UD. Objdump disagrees with you, whether 
rightfully or not is an open question (or original question if you will)

<transcript>
pref$ cat pref.s
.text
         .byte 0x66, 0xf3, 0x0f, 0x11, 0x00
pref$ as -o pref.o pref.s
pref$ objdump -d pref.o

pref.o:     file format elf32-i386

Disassembly of section .text:

00000000 <.text>:
    0:   66                      data16
    1:   f3 0f 11 00             movss  %xmm0,(%eax)

pref$ as --version | head -1
GNU assembler 2.15.90.0.1.1 20040303 (SuSE Linux)

pref$ objdump --version | head -1
GNU objdump 2.15.90.0.1.1 20040303 (SuSE Linux)
</transcript>

--
vale



More information about the Binutils mailing list