Windows上的32位_asm代码到64位汇编代码

时间:2012-08-16 05:05:59

标签: c

我有一个驱动程序代码,如果正在使用_asm(内联汇编)的汇编代码,当我在32位WDK中进行编译时,它的工作正常,但它会抛出以下错误:

  

“错误C4235:使用了非标准扩展名:'_ asm'关键字没有   支持这种架构“

请转换以下_asm代码进行64位编译。

_asm
    {
        mov     ebx, cr0 
        push    ebx 
        and     ebx, ~010000h 
        mov     cr0, ebx
    } 

1 个答案:

答案 0 :(得分:3)

使用Microsoft的编译器内在函数,

#include <intrin.h>
__writecr0(__readcr0() & ~0x1000);

这应该适用于x86和x64(当然,操作CR0只能在内核模式下完成)。