1,谁知道_asm和__asm的区别??
2,为什么我写的函数在Call后要修改esp
例: lea eax, iCall //参数
push eax
call lpAddr //C++函数
add esp,4//////////////////必确有!!!!!
而我看到这样一段代码:
_asm
{
mov eax, hWnd;
push eax;
call lpAddr;(注:dll中的一个函数)
}
也能正确执行。谁能给出解释??????????
2,为什么我写的函数在Call后要修改esp
例: lea eax, iCall //参数
push eax
call lpAddr //C++函数
add esp,4//////////////////必确有!!!!!
而我看到这样一段代码:
_asm
{
mov eax, hWnd;
push eax;
call lpAddr;(注:dll中的一个函数)
}
也能正确执行。谁能给出解释??????????
解决方案 »
- 如何使用VC++画实时运动轨迹?
- 关于颜色面的问题
- 按钮操作怎么实现
- MFC下 在线程中如何给主窗口中的CListBox AddString
- 如何实现hbitmap与varaint类型的相互转换??
- 高手请进!
- 一个菜鸟问题,解决立即给分。
- makefile怎么用?
- 怎样利用classWizard..的Add Class..建立一个基于CObject的派生类来.(我怎么在Base Class中找不到CObject基类)
- 请问。。。如何使用VC进行 打印并行口 数据通讯编程???有专门的控件么?
- 有谁用过IHTMLDocument4中的createDocumentFromUrl方法帮忙看一看下面的程序有什么问题
- 这是我程序里面控制工具条切换的一个函数的代码,谁能解释一下为什么要做那么多判断?
For compatibility with previous versions, _asm is a synonym for __asm.
2.我想这和你调用的函数调用约定有关,__cdecl调用约定是需要手动恢复堆栈指针的,所以需要向esp中加上4。而dll中的函数调用约定可能就是__stdcall(WINAPI),这一调用约定不需要调用者来恢复堆栈指针。