如何将通用64位寄存器的值写入MMX?

How to write the value of a general-purpose 64 bit register into MMX?

我正在使用 x64 汇编,Visual C++ 2010/MASM 告诉我指令

movq mm0, rax

包含 "invalid instruction operands".

这真的是违法的,还是一个错误? 如何在不使用指令的情况下执行此过程?

这是一个错误,或者您没有指定 64 位模式或 MMX 扩展。 movq mm0, rax 是一条有效指令,机器代码为 48 0F 6E C0。 请参阅英特尔指令集参考。如果一切都失败了,您可以将机器代码作为数据字节包含在内。

就是说,MMX 已过时(特别是因为在 64 位模式下您默认使用 SSE2)。确保你真的想使用它。