Exception Classifications

  • TRAP: Acontece com a execução de uma “trapping instruction”, que quando é executada, interrompe o handler, executa o código na trap e retorna a instrução subsequente a “trapping instruction”.
  • FAULT: Requer uma correção para restaurar o fluxo de execução. Quando uma fault acontece, o estado de execução é restaurado para um estado anterior a “faulting instruction”, isto é, se você fizer merda no fluxo, você volta do começo e_e
    • That last sentence is important, because that means it redoes an instruction execution to make sure the proper results are used in following operations.

Architecturally Defined Exceptions

Predefined interrupt vectors by the architecture (example):

{ VEC_0, DE, "Divide Error",                Fault,             NO_EC },
{ VEC_1, DB, "Debug Exception",             FaultTrap,         NO_EC },
{ VEC_2, NMI, "NMI Interrupt",              Interrupt,         NO_EC },
{ VEC_3, BP, "Breakpoint",                  Trap,              NO_EC },
{ VEC_4, OF, "Overflow",                    Trap,              NO_EC },
{ VEC_5, BR, "Bound Range Exceeded",        Fault,             NO_EC },
...
{ VEC_13, GP, "General Protection",         Fault,             EC },

Nesse formato tem-se a seguinte estrutura:

{ <vector_number>, <mnemonics> ... }
  • Vector Number: os vetores de 0 a 31 são reservados para Intel/Amd.
  • Mnemonics: um atalho para identificação da exception.

No caso GP(0) significa “general-protection fault com código de erro ‘0’.


🌱 Back to Garden