2009-07-07 14 views
13

mam demontażu kawałek kodu i natknąłem:Jaka jest funkcja "mov eax, cr3; mov cr3, eax" w kodzie montażowym x86?

mov eax, cr3 
mov cr3, eax 

Jaka jest funkcja tych linii?

To jest kod inicjalizacyjny x86 niskiego poziomu (BIOS/oprogramowanie sprzętowe/przed bootowaniem). Jeszcze nie skonfigurowaliśmy pamięci podręcznych.

+3

myślę, że jest to termin bardziej techniczne niż „pleasuring” CR3, ale wygląda na to, że wszystko to robi tak. – glasnt

+0

Lol'd kiedy to przeczytałem. –

+0

+1 - to interesujące pytanie. – ChristianLinnell

Odpowiedz

25

Płukanie TLB (Translation Lookaside Buffers) poprzez ładowanie CR3.

Intel wspomina nawet kod w "Podręczniku projektowania architektury Intel 64 i IA-32 Architectures Volume 3A - Podręcznik programowania systemu".

mov EAX,CR3 ; invalidate the TLB 
mov CR3,EAX ; by copying CR3 to itself 

może się okazać, że i wiele bardziej poręczny podręczniki na:

http://www.intel.com/products/processor/manuals/index.htm

+1

Czym się różni robiąc bezpośrednio "mov cr3, cr3"? –

+2

@ Eliseo - To nie jest instrukcja prawna. Istnieją odrębne instrukcje "Załaduj z rejestru do rejestru kontrolnego" i "Rejestr kontrolny ładunku do rejestru". Nie ma rejestru kontrolnego -> instrukcja rejestru rejestru kontrolnego. – Michael

+0

:) Nie zdawałem sobie sprawy z tego szczegółu, dziękuję za odpowiedź! –

Powiązane problemy