调用函数后的堆栈平衡

对于__stdcall调用方式,调用函数的逻辑一般如下 //Caller ;prolog push xx push ... call callee add esp x ; 恢复堆栈 ;epilog 一般情况下,指令add esp x会恢复调用函数之前的栈顶指针。但并不是所有的情况都这样,例...

2015-05-27 23:40:11

阅读数 2075

评论数 0

assembly note

neg operand //计算operand的相反数,并将结果保存在operand中 跳转相对偏移地址jmp 机器码EB jne/jnz machine code : 0x75 je/jz     machine code : 0x74

2015-05-22 11:51:02

阅读数 223

评论数 0

关于call及jcc指令地址的说明

今天看了点汇编的东西,上面写着jmp指令后面为偏移地址,这与反汇编代码中看到的汇编语言不太相符啊?不管我们自己写汇编还是使用反编译器查看汇编代码,jmp指令后面写的都是绝对地址啊!其实之前也想过这个问题,在理解WTL Thunk机制时,jmp机器码后面接的是相对偏移地址,但当时没有深究。为了便于研...

2015-05-19 23:26:32

阅读数 1302

评论数 0

CWnd截获WM_CREATE消息剖析

使用MFC开发应用程序时,发现CWnd(及其继承类)可以处理WM_CREATE消息。根据之前对MFC消息的理解,所有的MFC窗口类共享一个窗口函数,在窗口函数中利用全局句柄映射表得到CWnd指针,然后调用虚函数WndProc。问题来了,窗口创建完成后,得到窗口句柄,这时候CWnd对象与窗口句柄再做...

2015-05-14 16:45:34

阅读数 1089

评论数 0

vc2010异常编译条件解析

vc2010中【启用C++异常】编译条件默认为【是(/EHsc)】,在此选项下,try catch模块只能捕获C++异常(throw语句),而捕获不到结构化异常。若编译条件为【是,但有SEH异常(/EHa)】,则两种异常都可以捕获。通过其它文档得知,try catch也是建立在SEH基础之上,那为...

2015-05-11 22:25:32

阅读数 578

评论数 0

提示
确定要删除当前文章?
取消 删除