qt cef嵌入web
C++代码如下:
.h头文件
#ifdef DLLTestAPI
#else
#define DLLTestAPI _declspec(dllimport)
#endif
int DLLTestAPI __stdcall add(int, int);
int DLLTestAPI __cdecl subtract(int, int);
.cpp代码文件
#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方法:
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方法:
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的更多相关文章
- qt cef嵌入web(二)
在qt cef嵌入web文章中已经讲述了怎么把cef页面嵌入到qt程序中,但是这样并不完美,因为如果需要在多个窗口上创建cef浏览器部件的话,在 消息监听部分没有办法做区分多个浏览器事件,在这篇文章中 ...
- qt添加cef库嵌入web [转]
qt cef嵌入web 原文http://blog.sina.com.cn/s/blog_9e59cf590102vnfc.html 最近项目需要,研究了下libcef库. Cef(Chromium ...
- 两个基于C++/Qt的开源WEB框架
1.tufao 项目地址: https://github.com/vinipsmaker/tufao 主页: http://vinipsmaker.github.io/tufao/ 介绍: Tufão ...
- 嵌入Web资源的方法
可以将js .图片.css等嵌入Assembly中,这样就不用将文件在aspx中写了,特别适合做自定义控件的时候将控件用到的资源打包. 将文件放到项目的合适路径,比如jpg文件所在路径的namespa ...
- QT中嵌入SDL
原地址:http://www.qtcn.org/bbs/read.php?tid=23926 前段时间在做一个音视频编码板卡的PC跨平台程序,使用QT框架,其中有块功能是往QT里嵌入SDL,来播放YU ...
- Qt实现嵌入桌面的半透明窗口 good
这儿用上了前面一文提到的函数findDesktopIconWnd().见: http://mypyg.blog.51cto.com/820446/263349 一.将Qt窗口嵌入到桌面中.声明一个最简 ...
- Xamarin.Android 嵌入web端界面
在程序中嵌入Web端界面. 首先在前台界面上创建一个webview <android.webkit.WebView android:layout_width="match_parent ...
- Unity3d嵌入web网页
应用场景 程序中的界面风格 UI内容等相关内容需要很容易方便的跟新替换,不使用unity传统的热加载方式,也不想使用和H5等做混合APP的时候, 就用嵌入web来实现. 假如我想替换某个背景图,一般来 ...
- WinForm嵌入Web网页的解决方案
企业级信息化系统绝大部分采用BS架构实现,如门户网站.OA系统.电商网站等,通过浏览器输入Web网址即可访问,对于使用者来说非常便捷,对于开发维护者来说也非常方便,程序维护只需更新服务器即可,使用者无 ...
随机推荐
- Xamarin Android提示内存溢出错误
Xamarin Android提示内存溢出错误 错误信息:java.lang.OutOfMemoryError, Consider increasing the value of $(JavaMaxi ...
- 10686 DeathGod不知道的事情
Description 蚂蚁是很强大的动物,除了DeathGod知道的事情外还有很多不知道的!例如… 根据某种理论,时间方向上有无数个平行世界,有的世界蚂蚁很多,有的世界蚂蚁很少,有的世界蚂蚁会繁殖, ...
- BZOJ3325 : [Scoi2013]密码
从以每一位为中心的回文串长度可以用Manacher倒推出$O(n)$对相等和不等关系. 将相等的用并查集维护,不等的连边. 然后输出方案时若还没被染过色,则求一个mex. #include<cs ...
- JS设计模式一:单例模式
单例模式 单例模式也称作为单子模式,更多的也叫做单体模式.为软件设计中较为简单但是最为常用的一种设计模式. 下面是维基百科对单例模式的介绍: 在应用单例模式时,生成单例 ...
- html5中manifest特性测试
测试环境和工具 chromium 18.0.1025.151 (开发编译版 130497 Linux) Ubuntu 11.04 一.测试内容 1.A页面manifest缓存的js文件,B页面不 ...
- CC150 - 11.5
Question: Given a sorted array of strings which is interspersed with empty strings, write a method t ...
- BZOJ1367 [Baltic2004]sequence
现学的左偏树...这可是道可并堆的好题目. 首先我们考虑z不减的情况: 我们发现对于一个区间[l, r],里面是递增的,则对于此区间最优解为z[i] = t[i]: 如果里面是递减的,z[l] = z ...
- insertAdjacentHTML和insertAdjacentText方法
IE的DHTML对象提供了四个可读写的属性来动态操作页面元素的内容:innerText, outerText, innerHTML, outerHTML. 需注意两点: 1. 其中innerText, ...
- uva10098 Generating Fast, Sorted Permutation
#include"iostream"#include"stdio.h"#include"string.h"#include"alg ...
- js - 犀牛学习
1.id选择器 var ul = document.getElementById("empty"); 2.属性和事件配置 li.className = "ditem&qu ...