как установить регистр управления 0 (cr0) битов в x86-64, использующем gcc блок на Linux

Я использую следующий код для установки бита cr0 для отключения кэша. Когда я компилирую это

#include <stdio.h>

int main()
{
        __asm__("pushl  %eax\n\t"
                "mov    %cr0,%eax;\n\t"
                "orl    $(1 << 30),%eax;\n\t"
                "mov    %eax,%cr0;\n\t"
                "wbinvd\n\t"
                "popl   %eax"
);

        return 0;
}

Я получаю ошибку, говоря, что операнды недопустимы для mov.

Кто-либо может указать на меня на хорошее руководство gcc x86-64 для того, чтобы сделать эти виды вещей? Также, что точно является неправильным с вышеупомянутым кодом?

8
задан sanatana 18 October 2010 в 20:06
поделиться