x86 Instruction Set Reference
SIDT
Store Interrupt Descriptor Table Register
Opcode | Mnemonic | Description |
---|---|---|
0F 01 /1 |
SIDT m |
Store IDTR to m. |
Description |
---|
Stores the content the interrupt descriptor table register (IDTR) in the destination operand. The destination operand specifies a 6-byte memory location. If the operand-size attribute is 32 bits, the 16-bit limit field of the register is stored in the low 2 bytes of the memory location and the 32-bit base address is stored in the high 4 bytes. If the operand-size attribute is 16 bits, the limit is stored in the low 2 bytes and the 24-bit base address is stored in the third, fourth, and fifth byte, with the sixth byte filled with 0s. SIDT is only useful in operating-system software; however, it can be used in application programs without causing an exception to be generated. See "LGDT/LIDT-Load Global/Interrupt Descriptor Table Register" in Chapter 4 for information on loading the GDTR and IDTR. |
Operation |
---|
if(OperandSize == 16) { Destination[0..15] = IDTR.Limit; Destination[16..39] = IDTR.Base; //24 bits of base address loaded Destination[40..47] = 0; } else { //32-bit Operand Size Destination[0..15] = IDTR.Limit; Destination[16..47] = IDTR.Base; //full 32-bit base address loaded *) } |
IA-32 Architecture Compatibility |
---|
The 16-bit form of SIDT is compatible with the Intel 286 processor if the upper 8 bits are not referenced. The Intel 286 processor fills these bits with 1s; the Pentium 4, Intel Xeon, P6 family, Pentium, Intel486, and Intel386 processors fill these bits with 0s. |