vmovdqa 在 virtualbox 中不工作?
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 之前的要求。
我使用的是支持 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 之前的要求。