Die Control Register sind spezielle Register der [[IA-32]] und [[AMD64]] Architekturen, die den Betriebsmodus und einige Eigenschaften der CPU festlegen. In der AMD64-Architektur haben sie eine Breite von 64 Bit, wobei die unteren 32 Bit, den der IA-32 Architektur entsprechen. Der Zugriff auf diese Register ist wie bei den Segment Registern auch nur mit einem Umweg über Allzweckregister möglich. ==CR0== {| align="right" | {| {{Prettytable}} width="100%" |- align="center" ! 63-32 |- bgcolor="#bbb" align="center" | ''Reserviert'' |} |- | {| {{Prettytable}} width="100%" |- align="center" ! width='3.125%' | 31 ! width='3.125%' | 30 ! width='3.125%' | 29 ! width='31.25%' | 28-19 ! width='3.125%' | 18 ! width='3.125%' | 17 ! width='3.125%' | 16 ! width='31.25%' | 15-6 ! width='3.125%' | 5 ! width='3.125%' | 4 ! width='3.125%' | 3 ! width='3.125%' | 2 ! width='3.125%' | 1 ! width='3.125%' | 0 |- align="center" | PG || CD || NW || bgcolor="#bbb" | ''Reserviert'' || AW || bgcolor="#bbb" | || WP || bgcolor="#bbb" | ''Reserviert'' | NE || ET || TS || EM || MP || PE |} |} * PE - ''Protection Enbale'' Flag schaltet den [[Protected Mode]] ein bzw. aus (Genaueres siehe [[Umschalten in Protected Mode | hier]]) * MP - Mit dem ''Monitor Coprocessor'' Flag kann festgelegt werden ob bei Gesetztem TS-Flag der Aufruf von WAIT/FWAIT einen Exception auslösen oder nicht (bei gesetztem MP-Flag wird die Exception ausgelöst). * EM - Bei gesetztem ''Emulation'' Flag löst die CPU für jede [[FPU]]-Instruktion eine [[Exception|#NM-Exception]] aus. Für Multimedia-Instruktionen wird eine [[Exception|#UD-Exception]] ausgelöst. Damit wird es dem Betriebssystem ermöglicht eine FPU zu emulieren. (WAIT/FWAIT lösen keine Exception aus) * TS - Das ''Task Switched'' Flag wird bei einem [[Multitasking|Hardware-Taskswitch]] von der CPU gesetzt und kann für Software Multitasking auch von Hand gesetzt werden. Wenn bei gesetztem TS-Flage versucht wird eine FPU- oder Multimedia-Instruktion auszuführen, dann löst die CPU eine #NM-Exception aus. Dadurch können die FPU- bzw. Multimedia-Register, die bei normalen Taskswitchs nicht beachtet werden, entsprechend gesichert und geladen werden bevor sie verwendet werden. * ET - ''Extension Type'' * NE - ''Numeric Error'' * WP - ''Write Protect'' * AM - ''Alignment Mask'' * NW - ''Not Write-throgh'' * CD - ''Cache Disable'' * PG - ''Paging'' schaltet den Paging-Meschanismus Ein/Aus == CR2 == Bevor die CPU eine [[Exception|Page-Falut Exception]] auslöst, lädt sie die virtuelle Adresse, die den Fehler verursacht hat, in das CR2 Register. ==CR3== Das CR3-Register enthält primär die Adresse des Page Directories, sowie 2 Flags, die das interne Caching innerhalb der CPU (nicht im TLB) steuern. Wenn [[Physical Address Extension]] (PAE) aktiviert ist, wird die Adresse des Page Directories ersetzt durch die um 7 Bits größere Adresse zur Page-Directory Pointer Table. {| {{Prettytable}} !Bit !! Funktion !!Funktion mit aktivierter [[PAE]] |- bgcolor="#bbb" | Bit 0-2 || colspan="2" | ''Reserviert'' |- | Bit 3 || colspan="2" | '''PWT''' ''Page-level Writes Transparant'' |- | Bit 4 || colspan="2" | '''PCD''' ''Page-level Cache Disable'' |- | Bit 5-11 || bgcolor="#bbb" | ''Reserviert'' || rowspan="2" | '''Page-Directory-Pointer-Table Base''' Basis-Adresse der PDPT |- | Bit 12-31 || '''Page-Directory Base''' Basis Adresse des Page-Directorys |} ==CR4== {| {{Prettytable}} !Bit !!Funktion |- | Bit 0 || '''VME''' ''Virtual 8086 Mode Extension'' |- | Bit 1 || '''PVI''' ''Protected Mode Virtual Interrupt'' |- | Bit 2 || '''TSD''' ''Time Stamp Disable'' |- | Bit 3 || '''DE''' ''Debugging Extension'' |- | Bit 4 || '''PSE''' ''Page Size Extension'' |- | Bit 5 || '''PAE''' ''Physical Address Extension'' |- | Bit 6 || '''MCE''' ''Machine Check Enable'' |- | Bit 7 || '''PGE''' ''Page Global Enable'' |- | Bit 8 || '''PCE''' ''Performance Monitoring Counter Enable'' |- | Bit 9 || '''OSFXSR''' ''Operating System Support for FXSAVE and FXSTOR'' |- | Bit 10 || '''OSXMMEXCPT''' ''Operating System Support for Unmasked SIMD Exception'' |- bgcolor="#bbb" | Bit 11-31 || ''Reserviert'' |} == CR8 == {| {{Prettytable}} !Bit !!Funktion |- | Bit 0-3 || '''TPL''' ''Task Priority Level'' |- bgcolor="#bbb" | Bit 3-31 || ''n/a'' |} == CR1, CR5-CR7 und CR9-CR15 == Die Register CR1, CR5-CR7 und CR9-CR15 sind reserviert. Versucht Software dennoch darauf zuzugreifen löst die CPU eine [[Exception|#UD-Exception]] aus. == Weblinks == * [http://www.intel.com/products/processor/manuals/index.htm Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3A: System Programming Guide] (Kapitel 2.5) * [http://developer.amd.com/documentation/guides/Pages/default.aspx#Manuals AMD64 Architecture Programmer's Manual Volume 2: System Programming](Kapitel 3.1)