Korzystam z następującego kodu, aby ustawić bit cr0, aby wyłączyć pamięć podręczną. Kiedy skompilować tenjak ustawić rejestr kontrolny 0 (cr0) bitów w x86-64 przy użyciu gcc assembly on 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;
}
otrzymuję błąd mówiąc, że argumenty są nieważne dla MOV.
Czy ktoś może wskazać mi dobry przewodnik x86-64 Gcc do robienia tego rodzaju rzeczy? Co dokładnie jest nie tak z powyższym kodem?
Czy to działa, jeśli został on złożony poza osadzonym zestawem (utworzyć plik zespołu i złożyć go za pomocą 'gas' lub' nasm')? – Jonathan
Przydatne pytanie: http://stackoverflow.com/questions/1108485/disable-l2-l1-caches –
Dlaczego chcesz to zrobić? co próbujesz osiągnąć? – Hasturkun