异常处理第一讲(SEH),筛选器异常,以及__asm的扩展
一丶__Asm的扩展知识
①丶使用关键字,解决局部变量申请问题
昨天已经介绍了__asm的基本用法,现在对其做个扩展(上一篇是32为汇编第七讲...ret
}
}
那么对于上面的程序,你觉着可能没问题,但是我们想一下,如果我在定义多个变量,那么下面的指令就要多次改动
sub esp,xxx
但是这样不好,为什么,如果来个数组,来个结构体套结构体...我们看到了,我们就定义了两个局部变量,为什么是申请了48个字节,原因是我这里是Debug版本,默认编译器会帮我们申请40h(也就是64个字节)的局部空间,那么加上我们的两个局部变量正好48H个字节
如果是发布版...40H个字节了
注意,在裸函数中你定义的局部变量是不能初始化的
也就是说你可以写成我上面的那样子,但是不能初始化值,因为这个时候还没有抬栈,比如抬栈之后初始化,
而初始化就可能在__asm里面去写
当然更多的扩展的...筛选器处理异常是由程序指定一个异常处理回调函数,当发生异常的时候,系统将调用这个回调函数,并根据回调函数的返回值决定如何进行下一步操作。