This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
RE: PATCH: Move operand/address-size override prefixes before SIMD prefix
- From: malc <av1474 at comtv dot ru>
- To: "Menezes, Evandro" <evandro dot menezes at amd dot com>
- Cc: Jan Beulich <jbeulich at novell dot com>, "H. J. Lu" <hjl at lucon dot org>, binutils at sourceware dot org
- Date: Thu, 7 Dec 2006 14:49:38 +0300 (MSK)
- Subject: RE: PATCH: Move operand/address-size override prefixes before SIMD prefix
- References: <1449F58C868D8D4E9C72945771150BDFDF4995@SAUSEXMB1.amd.com>
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