vmovdqa 在 vi​​rtualbox 中不工作?

vmovdqa not working in virtualbox?

我使用的是支持 avx 和 avx2 的后期型号 i7 cpu,并且据说 virtualbox 支持 avx 和 avx2,所以在这种情况下为什么以下代码会挂起?

vmovdqa    ymm0, qqword[testmem]

testmem 在别处定义为

align 32
testmem:   rb   128

如果我使用

movdqa    xmm0, dqword[testmem]

它工作正常。

FASM 1.72,windows10,i7-7700hq,虚拟机 5.2.6

编辑: 这是一个 UEFI 应用程序(显然 运行 在 64 位模式下)工作正常,除非出现上述指令。

编辑

尝试添加

  mov     rcx, 0
  xgetbv
  or      rax, 0007h
  xsetbv  

在代码的开头,但没有帮助。

好的找到答案了。我知道这是一个相当深奥的问题,但以防万一它对其他人有帮助这里是如何启用 AVX

mov rax, cr4
or eax, 0x40000              ; bit 18 for oxsave bit
mov cr4, rax

xor     rcx, rcx
xgetbv
or      rax, 6
xsetbv    

我缺少的是设置启用 OSXSAVE 的 CR4 寄存器的第 18 位,这是启用 AVX 之前的要求。