Exceptions: Difference between revisions

m
Discovered this the hard way
[unchecked revision][unchecked revision]
(There is no such thing as a "Divide by Zero" exception. It does not occur exclusively because of divisions by 0 and it is not referred as such in the manuals, but rather as "Division Error".)
m (Discovered this the hard way)
 
(3 intermediate revisions by 2 users not shown)
Line 10:
* '''Aborts''': Some severe unrecoverable error.
 
Some exceptions will push a 32-bit "error code" on to the top of the stack, which provides additional information about the error. This value must be pulled from the stack before returning control back to the currently running program. (i.e. before calling IRET). In [[Long Mode]], the error code is padded with zeros to form a 64-bit push, so that it can be popped like any other value.
 
{| {{wikitable}}
Line 256:
* Writing a 1 in a reserved register field or writing invalid value combinations (e.g. CR0 with PE=0 and PG=1).
* Referencing or accessing a null-descriptor.
* Accessing a memory address with bits 48-63 not matching bit 47 (e.g. 0x_0000_8000_0000_0000 instead of 0x_ffff_8000_0000_0000) in 64 bit mode.
 
The saved instruction pointer points to the instruction which caused the exception.
Line 459 ⟶ 460:
* [http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf Intel® 64 and IA-32 Architectures Software Developer's Manual], Volume 3 (System Programming Guide), Chapter 6 (Interrupt and exception handling)
 
[[Category:X86]]
[[Category:Interrupts]]
[[de:Exception]]
Anonymous user