.
.model flat, stdcall
.stack ExitProcess PROTO, dwExitCode:DWORD .data
val2 sdword
result dword ? .code
main proc
call Example_cdecl
call Example_stdcall
invoke ExitProcess,
main endp comment /*C调用约定;参数入栈:从右到左;调用者恢复栈顶指针*/
Example_cdecl proc
push
push
xor eax,eax
call AddTwo_cdecl
add esp,
ret
Example_cdecl endp AddTwo_cdecl proc
push ebp
mov ebp,esp add eax, [ebp + ]
add eax, [ebp + ] pop ebp
ret
AddTwo_cdecl endp comment /*stdcall调用约定;参数入栈:从右到左;调用者恢复栈顶指针*/
Example_stdcall proc
push
push
xor eax, eax
call AddTwo_stdcall
comment /* add esp, ; 此由被调用者恢复栈顶指针(ret 8),不再需要调用*/
ret
Example_stdcall endp AddTwo_stdcall proc
push ebp
mov ebp, esp add eax, [ebp + ]
add eax, [ebp + ] pop ebp
ret
AddTwo_stdcall endp end main

cdecl由调用者恢复栈顶指针,所以支持可变参数的传入。

stdcall由被调用者恢复栈顶指针,不支持可变参数,但目标代码少了一条指令(少了一个字节的长度)。

cdecl和stdcall调用约定-汇编演示的更多相关文章

  1. 为什么 Windows API 使用 stdcall 调用约定?

    作者:知乎用户链接:https://www.zhihu.com/question/31453641/answer/52001143来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  2. 关于调用约定(cdecl、fastcall、、thiscall) 的一点知识(用汇编来解释)good

    函数调用规范   当高级语言函数被编译成机器码时,有一个问题就必须解决:因为CPU没有办法知道一个函数调用需要多少个.什么样的参数.即计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者 ...

  3. 汇编  cdecl 函数调用约定,stdcall 函数调用约定

    知识点:  cdecl 函数调用约定  stdcall 函数调用约定  CALL堆栈平衡 配置属性--> c/c++ -->高级-->调用约定 一.cdecl调用约定 VC++ ...

  4. X86调用约定 calling convention

    http://zh.wikipedia.org/wiki/X86%E8%B0%83%E7%94%A8%E7%BA%A6%E5%AE%9A 这里描述了在x86芯片架构上的调用约定(calling con ...

  5. CPP-基础:有关调用约定

    在C语言中,假设咱们有这样的一个函数:int function(int a,int b) 调历时只有用result = function(1,2)的方法就能利用这个函数.然而,当高档语言被编译成计算机 ...

  6. 关于函数调用约定-thiscall调用约定

    函数调用约定描述了如何以正确的方式调用某些特定类型的函数.包括了函数参数在栈上的分配顺序.有哪些参数将通过寄存器传入,以及在函数返回时函数栈的回收方式等. 函数调用约定的几种类型 stdcall,cd ...

  7. x64汇编第三讲,64位调用约定与函数传参.

    目录 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 二丶x64汇编 2.1汇编详解 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 在x86下我们汇编的传参如下: ...

  8. 64位只有一种调用约定stdcall

    procedure TForm2.Button1Click(Sender: TObject); function EnumWindowsProc(Ahwnd: hwnd; AlParam: lPara ...

  9. DLL中调用约定和名称修饰(一)

    DLL中调用约定和名称修饰(一) 调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议.这种协议规定了该语言的函数中的参数传送方式.参数是否可变和由谁来 ...

随机推荐

  1. 海贼王之——梦想音乐

      相信和很多海粉一样,对伙伴的关照和战斗,是相当地震撼.   好东西时不时地听一下,然后感受那种刷新全身表层细胞,触电...:   音乐链接: http://v.youku.com/v_show/i ...

  2. okhttp3 get post 简单封装

    最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...

  3. extjs grid

    Ext.onReady(function() { Ext.BLANK_IMAGE_URL = '../resources/images/default/s.gif'; Ext.QuickTips.in ...

  4. 20130617 hbase regionserver 老挂掉

    hbase regionserver 老挂掉: 添加如下: <property><name>hbase.regionserver.restart.on.zk.expire< ...

  5. 运行时(iOS)

    运行时(iOS)   一.什么是运行时(Runtime)? 运行时是苹果提供的纯C语言的开发库(运行时是一种非常牛逼.开发中经常用到的底层技术) 二.运行时的作用? 能获得某个类的所有成员变量 能获得 ...

  6. java 处理xml格式数据

    1.单个xml文件 package lia.meetlucene; import java.io.*; import javax.xml.parsers.DocumentBuilder; import ...

  7. IM客户端Socks 5代理协议应用

    之前编写的一个基于openfire服务器的即时通讯软件,因为部署环境需要,需要增加代理登录通信的实现.整理了一下相关代理的知识分享一下. 一个基于TCP协议的客户端希望与一个只能通过特定网络节点才可以 ...

  8. Win7 桌面应用图标不见了

    taskkill /im explorer.exe /f cd /d %userprofile%\appdata\local del iconcache.db /a start explorer.ex ...

  9. MSF命令 收集

    一.msfconsole ?   帮助菜单 back 从当前环境返回 banner   显示一个MSF banner cd   切换目录 color   颜色转换 connect   连接一个主机 e ...

  10. [办公自动化]PDF大小不一如何调整

    最近使用acrobat制作PDF,结果里面的内容因为来自不同文件.有的大,有的小. 选择打印pdf,即可调整正常. 附: PDF页码也可以调整为与目录实际页码一致. 思考: 利用pdf进行问卷调研:或 ...