| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5036 人关注过本帖
标题:一个令人困惑的异常处理程序
只看楼主 加入收藏
tigerdown
Rank: 1
等 级:新手上路
帖 子:72
专家分:8
注 册:2017-8-21
结帖率:64.29%
收藏
已结贴  问题点数:20 回复次数:2 
一个令人困惑的异常处理程序
一个令人困惑的异常处理程序

这程序是从书上看到的:

困惑点1:为什么要用C语言作为参数传递规范?
困惑点2:定义了esi:ptr EXCEPTION_RECORD,但没用到,为什么要定义呢


_Handler    proc    C _lpExceptionRecord,_lpSEH,_lpContext,_lpDispatcherContext

        pushad
        mov    esi,_lpExceptionRecord
        mov    edi,_lpContext
        assume    esi:ptr EXCEPTION_RECORD,edi:ptr CONTEXT
        mov    eax,_lpSEH
        push    [eax + 0ch]
        pop    [edi].regEbp
        push    [eax + 8]
        pop    [edi].regEip
        push    eax
        pop    [edi].regEsp
        assume    esi:nothing,edi:nothing
        popad
        mov    eax,ExceptionContinueExecution
        ret

_Handler    endp
搜索更多相关主题的帖子: mov 困惑 异常处理 定义 push 
2021-11-19 17:01
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:340
专家分:2482
注 册:2016-5-15
收藏
得分:20 
1.
windows api用c的参数传递是规范.

2.代码中没有用esi:ptr EXCEPTION_RECORD,是因为代码中没有利用而已.

EXCEPTION_RECORD是一个记录,如何利用当中资料是程式师自决,

例如想知道,
异常码 = [esi].ExceptionCode
异常标誌 = [esi].ExceptionFlags
异常地址 = [esi].ExceptionAddress

等等...


模组是前人写好,是一种范式,套用到自己的代码,即便当前用不到,也不好随便删除,若删了以后要用就要费一番工夫了.
2021-11-20 06:18
tigerdown
Rank: 1
等 级:新手上路
帖 子:72
专家分:8
注 册:2017-8-21
收藏
得分:0 
这种解释比较合理,很有可能这是从win32 api doc拷贝过来的,但作为出书作者应该严谨些,至少在这里标注一下。
2021-11-20 13:26
快速回复:一个令人困惑的异常处理程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030601 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved