标签: assembly x86
使用NASM版本2.11.08,以下编译就好了:
pmovmskb eax, mm0
但是错误拒绝以下内容:操作码和操作数的无效组合:
pmovmskb rax, mm0
我不明白为什么这不合法?在英特尔手册中,操作行只是说 PMOVMSKB reg,mm ,但操作部分包含两者的解释:
这让我觉得我应该能够以EAX或RAX作为目的地来运行它,对吧?但也许有些东西我不明白......?
答案 0 :(得分:3)
当我尝试使用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报告项目的错误。