- Mastering Assembly Programming
- Alexey Lyashko
- 211字
- 2021-08-20 10:23:27
Control registers
Processors based on the Intel architecture have a set of control registers that are used for configuration of the processor at run time (such as switching between execution modes). These registers are 32-bit wide on x86 and 64-bit wide on AMD64 (long mode).
There are six control registers and one Extended Feature Enable Register (EFER):
- CR0: This register contains various control flags that modify the basic operation of the processor.
- CR1: This register is reserved for future use.
- CR2: This register contains the Page Fault Linear Address when a page fault occurs.
- CR3: This register is used when virtual addressing is enabled (paging) and contains the physical address of the page directory, page directory pointer table, or page map level 4 table, depending on the current mode of operation.
- CR4: This register is used in the protected mode for controlling different options of the processor.
- CR8: This register is new and is only available in long mode. It is used for prioritization of external interrupts.
- EFER: This register is one of the several model-specific registers. It is used for enabling/disabling SYSCALL/SYSRET instructions, entering/exiting long mode, and a few other features. Other model-specific registers are of no interest for us.
However, these registers are not accessible in ring3 (user land).
推薦閱讀
- Developing Middleware in Java EE 8
- Python Deep Learning
- Clojure for Domain:specific Languages
- 零基礎學單片機C語言程序設計
- Microsoft Dynamics AX 2012 R3 Financial Management
- Android移動開發案例教程:基于Android Studio開發環境
- Node學習指南(第2版)
- Oracle實用教程
- JQuery風暴:完美用戶體驗
- Instant Automapper
- R的極客理想:量化投資篇
- PostgreSQL 12 High Availability Cookbook
- Java Web動態網站開發(第2版·微課版)
- Unreal Engine Game Development Cookbook
- Swift iOS Programming for Kids