在x86汇编代码中"mov eax,cr3; mov cr3,eax"的功能是什么?

mon*_*asa 13 x86 assembly

我正在拆解一些代码,我遇到了:

mov eax, cr3
mov cr3, eax
Run Code Online (Sandbox Code Playgroud)

这些线的功能是什么?

这是x86低级别(bios/firmware /引导加载程序之前)初始化代码.我们还没有设置缓存.

Geo*_*ips 26

它通过加载cr3自身来刷新TLB(Translation Lookaside Buffers).

英特尔甚至在"Intel 64和IA-32架构软件开发手册第3A卷 - 系统编程指南"中提到了这些代码.

mov EAX,CR3  ; invalidate the TLB
mov CR3,EAX  ; by copying CR3 to itself
Run Code Online (Sandbox Code Playgroud)

您可以在以下位置找到该手册以及更多便捷手册:

http://www.intel.com/products/processor/manuals/index.htm

  • @Eliseo - 这不是一份法律指示.有明显的"从寄存器加载到控制寄存器"和"将控制寄存器加载到寄存器"指令.没有控制寄存器 - >控制寄存器mov指令. (2认同)