日期:2014-05-16 浏览次数:20630 次
Linux把整个的虚拟存贮空间自上而下分为系统空间,堆栈空间,数据段和代码段。当系统访问页面异常时,cpu将失败的线性地址保存在CR2中。同时还会传来两个参数pt_regs和error_code。前者保存了异常发生前夕各寄存器的一个副本。
?
struct pt_regs { long ebx; long ecx; long edx; long esi; long edi; long ebp; long eax; int xds; int xes; long orig_eax; long eip; int xcs; long eflags; long esp; int xss; };
?各寄存器的含义如下:
eax,ebx,ecx,edx----数据寄存器,其中eax是累加器;
esi,edi---变址和指针寄存器;
esp,ebp----指针寄存器;
eip---- 指令指针寄存器;
eflags----标志寄存器;
xcs,xds,xes,xss---段寄存器,code,data,stack,specail。
orig_eax 有特殊的用途,我们将在以后的文章中进行讨论。
?
Note:
80386有如下寄存器:
?
?