2015-12-24 20 views
0

我正在开发裸机程序。该平台是x86,32位,保护模式,我在环0.我想通过使用xsetgv指令启用AVX。 CR4的第18位是1,如果我使用xgetgv,则没有错误发生,但xsetgv崩溃(virtualbox报告致命错误)。有问题的代码如下:XSetgv在我的裸机软件中崩溃

mov ecx, 0 
mov eax, 0x7 
mov edx, 0 
xsetbv 

什么问题?

+1

确保您的virtualbox实际上支持AVX。 IIRC,默认情况下它不会向客户展示AVX支持,或者它有一个旧的bug。 (通过在vbox实例中启动Linux来测试,并运行'grep avx/proc/cpuinfo'或者其他东西。 –

+2

沿着这些线路,尝试使用已知支持AVX的bochs(确保它已启用)。调试器和源代码;) – Jester

回答

2

问题在于bugy虚拟框,我的代码在真实硬件上运行得非常好,以及最新的virtualbox。