Int n/into/int 3-call to interrupt procedure, Int n /into/int 3—call to interrupt procedure – Intel 253666-024US User Manual

Page 517

Advertising
background image

Vol. 2A 3-471

INSTRUCTION SET REFERENCE, A-M

INT n/INTO/INT 3—Call to Interrupt Procedure

INT n/INTO/INT 3—Call to Interrupt Procedure

Description

The INT n instruction generates a call to the interrupt or exception handler specified
with the destination operand (see the section titled “Interrupts and Exceptions” in
Chapter 6 of the Intel® 64 and IA-32 Architectures Software Developer’s Manual,
Volume 1
).
The destination operand specifies an interrupt vector number from 0 to
255, encoded as an 8-bit unsigned intermediate value. Each interrupt vector number
provides an index to a gate descriptor in the IDT. The first 32 interrupt vector
numbers are reserved by Intel for system use. Some of these interrupts are used for
internally generated exceptions.
The INT n instruction is the general mnemonic for executing a software-generated
call to an interrupt handler. The INTO instruction is a special mnemonic for calling
overflow exception (#OF), interrupt vector number 4. The overflow interrupt checks
the OF flag in the EFLAGS register and calls the overflow interrupt handler if the OF
flag is set to 1.
The INT 3 instruction generates a special one byte opcode (CC) that is intended for
calling the debug exception handler. (This one byte form is valuable because it can be
used to replace the first byte of any instruction with a breakpoint, including other one
byte instructions, without over-writing other code). To further support its function as
a debug breakpoint, the interrupt generated with the CC opcode also differs from the
regular software interrupts as follows:

Interrupt redirection does not happen when in VME mode; the interrupt is
handled by a protected-mode handler.

The virtual-8086 mode IOPL checks do not occur. The interrupt is taken without
faulting at any IOPL level.

Note that the “normal” 2-byte opcode for INT 3 (CD03) does not have these special
features. Intel and Microsoft assemblers will not generate the CD03 opcode from any
mnemonic, but this opcode can be created by direct numeric code definition or by
self-modifying code.
The action of the INT n instruction (including the INTO and INT 3 instructions) is
similar to that of a far call made with the CALL instruction. The primary difference is
that with the INT n instruction, the EFLAGS register is pushed onto the stack before
the return address. (The return address is a far address consisting of the current
values of the CS and EIP registers.) Returns from interrupt procedures are handled

Opcode

Instruction

64-Bit

Mode

Compat/

Leg Mode

Description

CC

INT 3

Valid

Valid

Interrupt 3—trap to debugger.

CD ib

INT imm8

Valid

Valid

Interrupt vector number specified by

immediate byte.

CE

INTO

Invalid

Valid

Interrupt 4—if overflow flag is 1.

Advertising