Can PMovmskb have a 64-bit destination?
Using NASM version 2.11.08, the following are easy to compile:
pmovmskb eax, mm0
But rejected with error: Invalid combination of opcode and operands:
pmovmskb rax, mm0
I don't understand why this is not legal? The Intel manual says PMOVMSKB reg, mm on the operating line , but the Operation section explains both:
- PMOVMSKB (with 64-bit source operand and r32)
- PMOVMSKB (with 64-bit source operand and r64)
So this makes me think that I can run it with EAX or RAX as the destination, right? But maybe there is something I don't understand ...?
+3
source to share
1 answer
I'll just show you the output of my debugger when I try your code generated by ml64.exe:
.CODE
testfunc PROC
pmovmskb eax, mm0
00007FF78A611060 0F D7 C0 pmovmskb eax,mm0
pmovmskb rax, mm0
00007FF78A611063 48 0F D7 C0 pmovmskb rax,mm0
ret
00007FF78A611067 C3 ret
Checking that this is not a bug in this assembler from this site :
Well, MMX is definitely a stepping kid, best ignored that it ever existed. You can report a bug with the project on this page .
+3
source to share