Ich verwende den folgenden Code, um das cr0-Bit so einzustellen, dass der Cache deaktiviert wird. Wenn ich kompilieren diesesWie setze ich die Register 0 (cr0) des Steuerregisters 0 in x86-64 unter Verwendung von gcc assembly unter linux
#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;
}
Ich erhalte Fehlermeldung, dass die Operanden für mov ungültig sind.
Kann mir bitte jemand eine gute gcc x86-64 Anleitung für diese Art von Dingen zeigen? Auch was genau ist falsch mit dem obigen Code?
Funktioniert es, wenn Sie es außerhalb der eingebetteten Baugruppe zusammenbauen (machen Sie eine Montagedatei und montieren Sie sie mit 'gas' oder' nasm')? – Jonathan
Nützliche SO Frage: http://stackoverflow.com/questions/1108485/disable-l2-l1-caches –
Warum möchten Sie dies tun? Was versuchst du zu erreichen? – Hasturkun