【发布时间】:2015-10-28 15:57:02
【问题描述】:
问题:我写了这样的东西(在 proc 内):
.CODE
myProc PROC
vpmovsxbd ymm0, qword ptr [rdx] ; rdx is ptr to array of 8 bytes
vcvtdqps ymm0, ymm0
ret
myProc ENDP
masm 第一次投诉 invalid instruction operands,第二次投诉 syntax error : ymm0。
我正在使用 VS15 社区版为 x64 编译。
【问题讨论】:
-
除非您有充分的理由使用 asm,否则请考虑使用内部函数,例如
_mm256_cvtepi8_epi32/_mm256_cvtepi32_ps在这种特殊情况下。 -
@PaulR 好吧,我要写的东西必须专门在 asm 中。
-
好的 - 那么请原谅。但是请注意,如果这是对性能至关重要的事情,那么您可能希望避免将此类内容放入上述函数中 - 您确实希望尽可能多地内联代码,至少对于最内层的循环。
-
为什么不用 NASM 而不是 MASM?
-
@PaulR,OP 无法在 Visual Studio 64 位模式下内联汇编。 VS不允许。这就是为什么 MS 如此大力推动内在函数并拥有内在函数来做大多数其他编译器会用内联汇编来做的事情。反对的论点是这就是为什么要使用其他编译器,因为 MS 没有为您从汇编中需要的所有内容创建一个内在函数。
标签: visual-studio assembly masm avx2