使用NASM版本2.11.08,以下编译就可以了:
pmovmskb eax, mm0
但是以下错误被拒绝:操作码和操作数的无效组合:
pmovmskb rax, mm0
我不明白为什么这不合法?在Intel手册中,操作行仅显示 PMOVMSKB reg,mm ,但“操作”部分包含以下两者的说明:
因此,我认为我应该可以将EAX或RAX作为目的地来运行它,对吗?但是也许有些我不明白...?
最佳答案
当我尝试由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
使用this site验证它不是该汇编器中的错误:
好吧,MMX绝对是继子,最好忽略它的存在。您可以在this page上报告该项目的错误。