2009-07-07 13 views
13

che sto smontare un po 'di codice e mi sono imbattuto:Qual è la funzione di "mov eax, cr3; mov cr3, eax" nel codice assembly x86?

mov eax, cr3 
mov cr3, eax 

Qual è la funzione di quelle linee?

Questo è il codice di inizializzazione x86 di basso livello (bios/firmware/prima del caricatore di avvio). Non abbiamo ancora installato le cache.

+3

Penso che ci sia un termine più tecnico di 'piacere il' cr3, ma sembra che questo è tutto quello che sta facendo, sì. – glasnt

+0

Mi lol'd quando ho letto quello. –

+0

+1: è una domanda interessante. – ChristianLinnell

risposta

25

Sta scaricando i TLB (Translation Lookaside Buffers) caricando cr3 con se stesso.

Intel menziona il codice anche nel "Manuale di sviluppo di Intel 64 e IA-32 Software Volume di sviluppo 3A - Guida alla programmazione del sistema".

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

Potete trovare questo e molti manuali più a portata di mano presso:

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

+1

Qual è la differenza facendo direttamente "mov cr3, cr3"? –

+2

@Eliseo - Non è un'istruzione legale. Vi sono distinte istruzioni "Carica da registro in registro di controllo" e "Registra registro di controllo in registro". Non c'è registro di controllo -> istruzione di registrazione del registro di controllo. – Michael

+0

:) Non mi sono reso conto di quel dettaglio, grazie per la risposta! –

Problemi correlati