linux内核剖析之asm.s函数

asm.s包含着CPU探测到故障异常的底层代码程序,与traps.c关系密切,调用traps.c的程序打印出错信息,并退出。

中断调用包括:没有出错号和有出错号两种情况

其区别如下图

 

无出错号包括:除0错误,debug调式中断,溢出出错中断等

有错误号包括:段不存在,堆栈段错误等

 

无错误号的代码:

核心代码:xchg1  %eax,(%esp)  交换ax和sp

扫描二维码关注公众号,回复: 12745901 查看本文章

                  push  $0     0作为错误号压栈

                  lea 44(%esp), %edx  把中断的地方压栈

                  call  *%eax   调用中断打印函数

                  add1 $8  %esp   函数的参数出栈

全代码如下:

 

有错误号情况:

核心代码:

把错误号和函数分别交换保存在ax和bx中

错误号和函数入栈

调用函数,并把参数出栈

全代码如下:

 

 

中断包含:

猜你喜欢

转载自blog.csdn.net/wyyy2088511/article/details/108367385