Die Control Register sind spezielle Register der [[IA32]] 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 IA32 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)