[llvm-dev] X86 disassembler fails to handle 0x66 prefix?

Jun Koi via llvm-dev llvm-dev at lists.llvm.org
Sun May 7 00:22:34 PDT 2017


Hello,

I have seen this bug for quite a while, and even in the latest code it
is still there: that is X86 disassembler does not handle 0x66 prefix
properly, if it is put behind 0xF3 prefix.

The below commands should return the same output, but not.

$ echo "0xf3 0x66 0xa5"|./build/bin/llvm-mc --disassemble
-triple=x86_64 -output-asm-variant=1
.text
rep
movsw word ptr es:[rdi], word ptr [rsi]

$ echo "0x66 0xf3 0xa6"|./build/bin/llvm-mc --disassemble
-triple=x86_64 -output-asm-variant=1
.text
cmpsb byte ptr [rsi], byte ptr es:[rdi]


You can see just by exchanging the order of 0xf3 & 0x66, we get
different result. F3 in this case is not really a prefix for REP I
think.

Is there any solution to fix this?


Thanks.
Jun


More information about the llvm-dev mailing list