这应该是什么例外类型?

时间:2011-06-13 11:09:50

标签: exception x86

执行此指令时出现异常

LFS   ESI,PWORD PTR [EBP+12]

从此页面http://wiki.osdev.org/Double_Fault#Double_Fault
执行任何PUSH或POP指令或使用ESP或EBP作为基址寄存器的任何指令,而堆栈地址不是规范形式。

所以我认为这应该是 Stack-Segment Fault 。 但系统提供了一般保护异常(0D)。

有谁可以告诉我为什么会这样?

1 个答案:

答案 0 :(得分:1)

LFS的一般保护错误发生在:

  1. 您是段选择器索引 试图加载不是与 描述符表限制
  2. 该段位于描述符中 表,但它不是可读数据 片段
  3. 您的权限级别更高 (意思是较少的特权)即 描述符的特权级别。
  4. 所以,问题不是指令本身,而是段描述符表。

    请参阅“英特尔软件开发人员手册”第3A卷第3章: http://www.intel.com/products/processor/manuals/?wapkw=(Intel+64+and+IA-32+Architectures)