T2 The exact number depends on the processor model
The following list gives the vector, the name, the type, and a brief description of the exceptions found in 80 x 86 processors. Additional information may be found in the Intel technical documentation.
Raised when a program issues an integer division by 0.
Raised when the T flag of eflags is set (quite useful to implement step-by-step execution of a debugged program) or when the address of an instruction or operand falls within the range of an active debug register (see Section 3.3.1).
2 - Not used
Reserved for nonmaskable interrupts (those that use the NMI pin).
3 - "Breakpoint" (trap)
Caused by an int3 (breakpoint) instruction (usually inserted by a debugger).
An into (check for overflow) instruction has been executed when the OF (overflow) flag of eflags is set.
A bound (check on address bound) instruction is executed with the operand outside of the valid address bounds.
6 - "Invalid opcode" (fault)
The CPU execution unit has detected an invalid opcode (the part of the machine instruction that determines the operation performed).
7 - "Device not available" (fault)
An ESCAPE, MMX, or XMM instruction has been executed with the TS flag of cr0 set (see Section 3.3.4).
8 - "Double fault" (abort)
Normally, when the CPU detects an exception while trying to call the handler for a prior exception, the two exceptions can be handled serially. In a few cases, however, the processor cannot handle them serially, so it raises this exception.
9 - "Coprocessor segment overrun" (abort)
Problems with the external mathematical coprocessor (applies only to old 80386 microprocessors).
10 - "Invalid TSS" (fault)
The CPU has attempted a context switch to a process having an invalid Task State Segment.
11 - "Segment not present" (fault)
A reference was made to a segment not present in memory (one in which the Segment-Present flag of the Segment Descriptor was cleared).
12 - "Stack segment" (fault)
The instruction attempted to exceed the stack segment limit, or the segment identified by ss is not present in memory.
13 - "General protection" (fault)
One of the protection rules in the protected mode of the 80 x 86 has been violated.
14 - "Page Fault" (fault)
The addressed page is not present in memory, the corresponding Page Table entry is null, or a violation of the paging protection mechanism has occurred.
15 - Reserved by Intel
16 - "Floating-point error" (fault)
The floating-point unit integrated into the CPU chip has signaled an error condition, such as numeric overflow or division by 0. 131
[3] The 80 x 86 microprocessors also generate this exception when performing a signed division whose result cannot be stored as a signed integer (for instance, a division between -2147483648 and -1).
17 - "Alignment check" (fault)
The address of an operand is not correctly aligned (for instance, the address of a long integer is not a multiple of 4).
18 - "Machine check" (abort)
A machine-check mechanism has detected a CPU or bus error.
19 - "SIMD floating point" (fault)
The SSE or SSE2 unit integrated in the CPU chip has signaled an error condition on a floating-point operation.
The values from 20 to 31 are reserved by Intel for future development. As illustrated in Table 4-1, each exception is handled by a specific exception handler (see Section 4.5 later in this chapter), which usually sends a Unix signal to the process that caused the exception.
|
# |
Exception |
Exception handler |
Signal |
|
0 |
Divide error |
divide error( ) |
SIGFPE |
|
1 |
Debug |
debug( ) |
SIGTRAP |
|
2 |
NMI |
nmi( ) |
None |
|
3 |
Breakpoint |
int3( ) |
SIGTRAP |
|
4 |
Overflow |
overflow( ) |
SIGSEGV |
|
5 |
Bounds check |
bounds( ) |
SIGSEGV |
|
6 |
Invalid opcode |
invalid op( ) |
SIGILL |
|
7 |
Device not available |
device not available( ) |
SIGSEGV |
|
8 |
Double fault |
double fault( ) |
SIGSEGV |
|
9 |
Coprocessor segment overrun |
coprocessor segment overrun( ) |
SIGFPE |
|
10 |
Invalid TSS |
invalid tss( ) |
SIGSEGV |
|
11 |
Segment not present |
segment not present( ) |
SIGBUS |
|
12 |
Stack exception |
stack segment( ) |
SIGBUS |
|
13 |
General protection |
general protection( ) |
SIGSEGV |
|
14 |
Page Fault |
page fault( ) |
SIGSEGV |
|
15 |
Intel reserved |
None |
None |
|
16 |
Floating-point error |
coprocessor error( ) |
SIGFPE |
|
17 |
Alignment check |
alignment check( ) |
SIGBUS |
|
18 |
Machine check |
machine check( ) |
None |
|
19 |
SIMD floating point |
SIGFPE |
Continue reading here: Hardware Handling of Interrupts and Exceptions
Was this article helpful?