linux内核剖析之asm.s函数

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

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

其区别如下图

 

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

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

 

无错误号的代码:

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

                  push  $0     0作为错误号压栈

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

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

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

全代码如下:

 

有错误号情况:

核心代码:

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

错误号和函数入栈

调用函数,并把参数出栈

全代码如下:

 

 

中断包含:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jena_wy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值