| Zeile 1: | Zeile 1: | ||
| − | Die Control Register sind spezielle Register der | + | 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== | ==CR0== | ||
| − | + | {| align="right" | |
| − | {| | + | | |
| − | + | {| {{Prettytable}} width="100%" | |
| − | + | |- align="center" | |
| − | | | + | ! 63-32 |
| − | | | + | |- bgcolor="#bbb" align="center" |
| − | | | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |- | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| ''Reserviert'' | | ''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 |
| − | | ''Reserviert'' | + | ! 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== | + | == 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== | ==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. | 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 | + | !Bit !! Funktion !!Funktion mit aktivierter [[PAE]] |
| − | !Funktion | + | |- bgcolor="#bbb" |
| − | !Funktion mit aktivierter [[PAE]] | + | | Bit 0-2 || colspan="2" | ''Reserviert'' |
| − | |- | ||
| − | | Bit 0-2 | ||
| − | | colspan="2" | ''Reserviert'' | ||
|- | |- | ||
| − | | Bit 3 | + | | Bit 3 || colspan="2" | '''PWT''' ''Page-level Writes Transparant'' |
| − | | colspan="2" | '''PWT''' ''Page-level Writes Transparant'' | ||
|- | |- | ||
| − | | Bit 4 | + | | Bit 4 || colspan="2" | '''PCD''' ''Page-level Cache Disable'' |
| − | | colspan="2" | '''PCD''' ''Page-level Cache Disable'' | ||
|- | |- | ||
| − | | Bit 5-11 | + | | Bit 5-11 || bgcolor="#bbb" | ''Reserviert'' || rowspan="2" | '''Page-Directory-Pointer-Table Base''' |
| − | | ''Reserviert'' | ||
| − | | rowspan="2" | '''Page-Directory-Pointer-Table Base''' | ||
Basis-Adresse der PDPT | Basis-Adresse der PDPT | ||
|- | |- | ||
| − | | Bit 12-31 | + | | Bit 12-31 || '''Page-Directory Base''' Basis Adresse des Page-Directorys |
| − | | '''Page-Directory Base''' | ||
| − | Basis Adresse des Page-Directorys | ||
|} | |} | ||
==CR4== | ==CR4== | ||
| − | {| | + | {| {{Prettytable}} |
| − | !Bit | + | !Bit !!Funktion |
| − | !Funktion | ||
| − | |||
| − | |||
| − | |||
|- | |- | ||
| − | | Bit | + | | Bit 0 || '''VME''' ''Virtual 8086 Mode Extension'' |
| − | | ''' | ||
|- | |- | ||
| − | | Bit | + | | Bit 1 || '''PVI''' ''Protected Mode Virtual Interrupt'' |
| − | | ''' | ||
|- | |- | ||
| − | | Bit | + | | Bit 2 || '''TSD''' ''Time Stamp Disable'' |
| − | | ''' | ||
|- | |- | ||
| − | | Bit | + | | Bit 3 || '''DE''' ''Debugging Extension'' |
| − | | ''' | ||
|- | |- | ||
| − | | Bit | + | | Bit 4 || '''PSE''' ''Page Size Extension'' |
| − | | ''' | ||
|- | |- | ||
| − | | Bit | + | | Bit 5 || '''PAE''' ''Physical Address Extension'' |
| − | | ''' | ||
|- | |- | ||
| − | | Bit | + | | Bit 6 || '''MCE''' ''Machine Check Enable'' |
| − | | ''' | ||
|- | |- | ||
| − | | Bit | + | | Bit 7 || '''PGE''' ''Page Global Enable'' |
| − | | ''' | ||
|- | |- | ||
| − | | Bit | + | | Bit 8 || '''PCE''' ''Performance Monitoring Counter Enable'' |
| − | | ''' | ||
|- | |- | ||
| − | | Bit | + | | Bit 9 || '''OSFXSR''' ''Operating System Support for FXSAVE and FXSTOR'' |
| − | | ''' | ||
|- | |- | ||
| − | | Bit 11-31 | + | | Bit 10 || '''OSXMMEXCPT''' ''Operating System Support for Unmasked SIMD Exception'' |
| − | | ''Reserviert'' | + | |- bgcolor="#bbb" |
| + | | Bit 11-31 || ''Reserviert'' | ||
|} | |} | ||
== CR8 == | == CR8 == | ||
| − | {| | + | {| {{Prettytable}} |
| − | !Bit | + | !Bit !!Funktion |
| − | !Funktion | ||
|- | |- | ||
| − | | Bit 0-3 | + | | Bit 0-3 || '''TPL''' ''Task Priority Level'' |
| − | | '''TPL''' ''Task Priority Level'' | + | |- bgcolor="#bbb" |
| − | |- | + | | Bit 3-31 || ''n/a'' |
| − | | 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 == | == 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://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) | ||