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 :



enter image description here


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







All Articles