日期:2014-05-16 浏览次数:20797 次
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有如下寄存器:
?
?