DIM*_*Sum 6 x86 intel cpu-architecture
从i386 CPU开始,英特尔处理器具有公开的控制寄存器,允许内核配置处理器并指定当前正在执行的任务/进程/线程的特征.根据英特尔系统编程手册(第2-13节),CR1控制寄存器为"保留".也就是说,内核操作控制寄存器会CR1导致未定义的行为.正如文章指出,也有CR2, CR3, CR4和CR8控制寄存器,虽然他们都没有保留.
为什么CR1保留?奇怪的是,英特尔会引入一个保留的控制寄存器,然后开始添加非保留的控制寄存器,而不是简单地添加功能,CR1因为这样做不会导致任何向后兼容性中断(这是保留它的全部要点).http://www.pagetable.com/?p=364推测CR1保留了第二个可用于架构配置的寄存器,但正如文章中提到的那样,CR4在i486推出时使用了.
Intel \xc2\xae 64 和 IA-32 架构软件开发人员\xe2\x80\x99s 手册显示CR1 \xe2\x80\x94 保留。所以CR1未使用,保留给Intel + AMD以供将来使用。由于它是保留的,访问 CR1 会抛出异常:
\n\n\n\n\n尝试引用 CR1、CR5、CR6、CR7 和 CR9\xe2\x80\x93CR15 会导致未定义的操作码 (#UD) 异常。
\n
为什么他们使用了 CR2 却没有使用 CR1,谁也说不准。X86是不规则的,事实上,Intel还没有说什么。本文 \n为什么没有 CR1 \xe2\x80\x93 以及控制寄存器为何如此混乱?有一些历史,但实际上除非英特尔发表官方声明(他们没有),否则没有答案。
\n