Intel 253666-024US Manuel D’Utilisation

Page de 760
Vol. 2A 3-605
INSTRUCTION SET REFERENCE, A-M
MOV—Move to/from Control Registers
MOV—Move to/from Control Registers
Description
Moves the contents of a control register (CR0, CR2, CR3, CR4, or CR8) to a general-
purpose register or the contents of a general purpose register to a control register. 
The operand size for these instructions is always 32 bits in non-64-bit modes, 
regardless of the operand-size attribute. (See “Control Registers” in Chapter 2 of th
Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A, for a 
detailed description of the flags and fields in the control registers.) This instruction 
can be executed only when the current privilege level is 0.
When loading control registers, programs should not attempt to change the reserved 
bits; that is, always set reserved bits to the value previously read. An attempt to 
change CR4's reserved bits will cause a general protection fault. Reserved bits in CR0 
Opcode
Instruction
64-Bit 
Mode
Compat/
Leg Mode
Description
0F 20 /0
MOV r32,CR0
N.E.
Valid
Move CR0 to r32.
0F 20 /0
MOV r64,CR0
Valid
N.E.
Move extended CR0 to r64
0F 20 /2
MOV r32,CR2
N.E.
Valid
Move CR2 to r32.
0F 20 /2
MOV r64,CR2
Valid
N.E.
Move extended CR2 to r64
0F 20 /3
MOV r32,CR3
N.E.
Valid
Move CR3 to r32.
0F 20 /3
MOV r64,CR3
Valid
N.E.
Move extended CR3 to r64
0F 20 /4
MOV r32,CR4
N.E.
Valid
Move CR4 to r32.
0F 20 /4
MOV r64,CR4
Valid
N.E.
Move extended CR4 to r64
REX.R + 0F 20 /0
MOV r64,CR8
Valid 
N.E.
Move extended CR8 to r64.
1
0F 22 /0
MOV CR0,r32
N.E.
Valid
Move r32 to CR0.
0F 22 /0
MOV CR0,r64
Valid
N.E.
Move r64 to extended CR0. 
0F 22 /2
MOV CR2,r32
N.E.
Valid
Move r32 to CR2.
0F 22 /2
MOV CR2,r64
Valid
N.E.
Move r64 to extended CR2. 
0F 22 /3
MOV CR3,r32
N.E.
Valid
Move r32 to CR3.
0F 22 /3
MOV CR3,r64
Valid
N.E.
Move r64 to extended CR3. 
0F 22 /4
MOV CR4,r32
N.E.
Valid
Move r32 to CR4.
0F 22 /4
MOV CR4,r64
Valid
N.E.
Move r64 to extended CR4. 
REX.R + 0F 22 /0
MOV CR8,r64
Valid
N.E.
Move r64 to extended CR8. 
NOTE:
1.  MOV CR* instructions, except for MOV CR8, are serializing instructions. MOV CR8 is not 
architecturally defined as a serializing instruction. For more information, see Chapter 7 in Intel®