C++代码如下:
.h头文件

#pragma once

#ifdef DLLTestAPI

#else
#define DLLTestAPI _declspec(dllimport)
#endif

int DLLTestAPI __stdcall add(int, int);

int DLLTestAPI __cdecl subtract(int, int);

.cpp代码文件

#define DLLTestAPI _declspec(dllexport)

#include "Test.h"

int __stdcall add(int a, int b)
{
    return a + b;
}

int __cdecl subtract(int a, int b)
{
    return a - b;
}

可以看到 add方法是使用__stdcall修饰的,而subtract方法是使用__cdecl修饰的。

反汇编后得到的汇编代码如下

add方法:

100115D0    55              PUSH EBP
100115D1    8BEC            MOV EBP,ESP
100115D3    81EC C0000000   SUB ESP,0C0
100115D9    53              PUSH EBX
100115DA    56              PUSH ESI
100115DB    57              PUSH EDI
100115DC    8DBD 40FFFFFF   LEA EDI,DWORD PTR SS:[EBP-C0]
100115E2    B9 30000000     MOV ECX,30
100115E7    B8 CCCCCCCC     MOV EAX,CCCCCCCC
100115EC    F3:AB           REP STOS DWORD PTR ES:[EDI]
100115EE    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
100115F1    0345 0C         ADD EAX,DWORD PTR SS:[EBP+C]
100115F4    5F              POP EDI
100115F5    5E              POP ESI
100115F6    5B              POP EBX
100115F7    8BE5            MOV ESP,EBP
100115F9    5D              POP EBP
100115FA    C2 0800         RETN 8

subtract方法:

10011610    55              PUSH EBP
10011611    8BEC            MOV EBP,ESP
10011613    81EC C0000000   SUB ESP,0C0
10011619    53              PUSH EBX
1001161A    56              PUSH ESI
1001161B    57              PUSH EDI
1001161C    8DBD 40FFFFFF   LEA EDI,DWORD PTR SS:[EBP-C0]
10011622    B9 30000000     MOV ECX,30
10011627    B8 CCCCCCCC     MOV EAX,CCCCCCCC
1001162C    F3:AB           REP STOS DWORD PTR ES:[EDI]
1001162E    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
10011631    2B45 0C         SUB EAX,DWORD PTR SS:[EBP+C]
10011634    5F              POP EDI
10011635    5E              POP ESI
10011636    5B              POP EBX
10011637    8BE5            MOV ESP,EBP
10011639    5D              POP EBP
1001163A    C3              RETN

大家已经看到了,他们的唯一区别是:
使用__stdcall修饰的add方法,最后的RETN指令的操作数是8,而使用__cdecl修饰的subtract方法,最后的RETN指令没有操作数。

RETN指令的操作数为什么是8呢,原因也很简单,就是add方法有两个int参数,也就是说压栈的时候压入了两个字节,正好8位,RETN 8的意思应该是让栈顶指针ESP向后移动8位。

http://blog.csdn.net/songjinshi/article/details/8442829

qt cef嵌入web的更多相关文章

  1. qt cef嵌入web(二)

    在qt cef嵌入web文章中已经讲述了怎么把cef页面嵌入到qt程序中,但是这样并不完美,因为如果需要在多个窗口上创建cef浏览器部件的话,在 消息监听部分没有办法做区分多个浏览器事件,在这篇文章中 ...

  2. qt添加cef库嵌入web [转]

    qt cef嵌入web 原文http://blog.sina.com.cn/s/blog_9e59cf590102vnfc.html 最近项目需要,研究了下libcef库. Cef(Chromium ...

  3. 两个基于C++/Qt的开源WEB框架

    1.tufao 项目地址: https://github.com/vinipsmaker/tufao 主页: http://vinipsmaker.github.io/tufao/ 介绍: Tufão ...

  4. 嵌入Web资源的方法

    可以将js .图片.css等嵌入Assembly中,这样就不用将文件在aspx中写了,特别适合做自定义控件的时候将控件用到的资源打包. 将文件放到项目的合适路径,比如jpg文件所在路径的namespa ...

  5. QT中嵌入SDL

    原地址:http://www.qtcn.org/bbs/read.php?tid=23926 前段时间在做一个音视频编码板卡的PC跨平台程序,使用QT框架,其中有块功能是往QT里嵌入SDL,来播放YU ...

  6. Qt实现嵌入桌面的半透明窗口 good

    这儿用上了前面一文提到的函数findDesktopIconWnd().见: http://mypyg.blog.51cto.com/820446/263349 一.将Qt窗口嵌入到桌面中.声明一个最简 ...

  7. Xamarin.Android 嵌入web端界面

    在程序中嵌入Web端界面. 首先在前台界面上创建一个webview <android.webkit.WebView android:layout_width="match_parent ...

  8. Unity3d嵌入web网页

    应用场景 程序中的界面风格 UI内容等相关内容需要很容易方便的跟新替换,不使用unity传统的热加载方式,也不想使用和H5等做混合APP的时候, 就用嵌入web来实现. 假如我想替换某个背景图,一般来 ...

  9. WinForm嵌入Web网页的解决方案

    企业级信息化系统绝大部分采用BS架构实现,如门户网站.OA系统.电商网站等,通过浏览器输入Web网址即可访问,对于使用者来说非常便捷,对于开发维护者来说也非常方便,程序维护只需更新服务器即可,使用者无 ...

随机推荐

  1. javascript优化--09模式(代码复用)02

    原型继承 ://现代无类继承模式 基本代码: var parent = { name : "Papa" } var child = object(parent); function ...

  2. 使用NGUINGUI的相关介绍

    1.3  使用NGUI 要使用NGUI,需要首先为游戏项目导入NGUI插件资源,然后再创建UI Root对象,在这以后才可以添加各种UI控件,下面本节会详解介绍这些知识本文选自NGUI从入门到实战! ...

  3. 状态压缩 + 暴力 HDOJ 4770 Lights Against Dudely

    题目传送门 题意:有n*m的房间,'.'表示可以被点亮,'#'表示不能被点亮,每点亮一个房间会使旁边的房间也点亮,有意盏特别的灯可以选择周围不同方向的房间点亮.问最少需要多少灯使得所有房间点亮 分析: ...

  4. Nightmare

    Nightmare Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  5. BZOJ3165 : [Heoi2013]Segment

    建立线段树,每个节点维护该区间内的最优线段. 插入线段时,在线段树上分裂成$O(\log n)$棵子树,若与当前点的最优线段不相交,那么取较优的,否则暴力递归子树. 查询时在叶子到根路径上所有点的最优 ...

  6. Codeforces Round #203 (Div. 2) A.TL

    #include <iostream> #include <algorithm> using namespace std; int main(){ int n,m; cin & ...

  7. TYVJ P1080 N皇后 Label:dfs PS:以前做的一道题,贴出来防忘

    描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 5来描 ...

  8. 【BZOJ】1221: [HNOI2001] 软件开发(最小费用最大流)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1221 先吐槽一下,数组依旧开小了RE:在spfa中用了memset和<queue>的版本 ...

  9. Checkbox的选中删除功能且Ajax返回后清除所选行

    转摘:http://javaweb1024.com/qianduan/jQuery/2015/04/13/544.html 功能描述:多选框勾选以后(全部或者部分),需要想后台提交已勾选的数据(Aja ...

  10. 不要使用SBJSON(json-framework)

    不要使用SBJSON(json-framework) 文章目录 不知道为什么,在iOS开发中,有很多人使用 SBJSON (又被称作json-framework)来做JSON解析库.我想这是因为SBJ ...