VC++ 汇编相关的东西
Tips: VC++在新建一个.asm文件后必须重新导入project中才能进行编译。
下面是一个汇编与C++相互调用的例子:
Main.cpp
#include <stdio.h>
#include <Windows.h>
#include <string.h> class CTest
{
public:
void Init()
{
m_nSize = 100;
m_pContent = new char[m_nSize];
strcpy(m_pContent,"hello world!");
}
void Show()
{
printf("%s\n",m_pContent);
}
void Destory()
{
if (m_pContent)
{
delete[] m_pContent;
m_pContent = NULL;
}
m_nSize = 0;
}
private:
int m_nSize;
char* m_pContent;
}; extern "C" void __stdcall InitTest(DWORD pThis,DWORD pFunc);
extern "C" int __stdcall bswap_func(int InputVar); int main(int agrc,char* argv[])
{
CTest* pTest = new CTest();
#ifdef TEST_ASM_INFILE
_asm
{
mov eax,pTest
call CTest::Init
}
#else
void (__thiscall CTest::* pFunc)(void) = &CTest::Init;
InitTest((DWORD)pTest,*(DWORD*)&pFunc);
#endif
pTest->Show();
pTest->Destory();
delete pTest; int nTest = 0x12345678;
int nResult = bswap_func(nTest);
printf("Original number:0x%x reverse number:0x%x\n",nTest,nResult);
return 0;
}
Func.asm
.686
.model flat, stdcall .code
InitTest proc pThis:DWORD,pFunc:DWORD
mov ecx,pThis
call pFunc
ret
InitTest endp bswap_func proc InVar:DWORD
mov eax, InVar
bswap eax
ret
bswap_func endp end
VC++ 汇编相关的东西的更多相关文章
- VC++ ADO相关
<VC对ADO的操作> ADO概述: ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口. ADO 使您能够编写应用程序以通过 ...
- VC++文件相关操作的函数封装实现
在开发编译工具中,需要用到文件的相关操作,于是就封装了相关的函数实现: //判断文件是否存在 BOOL FileIsExist(CString strFileName) { CFileFind fin ...
- Cesium中常用的一些地理数据文件 以及数据相关的东西
KML Cesium.KmlDataSource.load CZML Cesium.CzmlDataSource.load GeoJson Cesium.GeoJsonDataSource.load ...
- VC维相关知识
假设空间H(Hypothesis Set) 输入空间D(X1...Xn) 1.增长函数(grown function) 是关于输入空间尺寸n的函数 假设空间对于D中所有实例实现分类(赋予标记)的分类方 ...
- android一些系统相关的东西
添加快捷方式和删除快捷方式: private void addShortcut() { Intent shortcut = new Intent( "com.android.launcher ...
- C# 反射相关的东西
public class PlugingManager { //插件装载器 public ArrayList Plugins = new ArrayList(); ...
- 编译用到boost相关的东西,问题的解决;以及和googletest库
编译https://github.com/RAttab/reflect, 发现需要gcc4.7以上的版本才行.于是编译安装最新的gcc-6.2.0, 过程算顺利. http://www.linuxfr ...
- spring MVC学习(二)---配置相关的东西
1.在上一节中我们提到过每一个DispatcherServlet都会有一个上下文 (WebApplictionContext),并且继承了这些上下文中的bean,其中以一些"特殊" ...
- 珠峰-cookie相关的东西
#### md5 #### #####
随机推荐
- python之pack布局
#Pack为一布局管理器,可将它视为一个弹性的容器 '''1.一个空的widget'''#不使用pack # -*- coding: cp936 -*- from Tkinter imp ort * ...
- http://blog.csdn.net/huang_xw/article/details/7090173
http://blog.csdn.net/huang_xw/article/details/7090173
- 代码这样写更优雅(Python 版)(转载)
转载:https://mp.weixin.qq.com/s?timestamp=1498528588&src=3&ver=1&signature=DfFeOFPXy44ObCM ...
- C#文本框中默认是不允许使用全选的
C#文本框中默认是不允许使用全选的.可以通过以下事件完成: private void textBox1_KeyDown(object sender, KeyEventArgs e) { i ...
- 【转】Python——编码规范
来自于 啄木鸟社区 Python Coding Rule --- hoxide 初译 dreamingk 校对发布 040724 --- xyb 重新排版 040915 --- ZoomQuiet M ...
- lodash forIn forOwn 遍历对象属性
_.forIn(object, [iteratee=_.identity]) 使用 iteratee 遍历对象的自身和继承的可枚举属性. function Foo() { this.a = 1; th ...
- tomcat 输入localhost:8080显示404 (找不到tomcat主页)
最近使用tomcat时常出现一个问题,tomcat开启后浏览器输入localhost:8080时显示404,但是输入项目的路径是可以看到效果的,因为没啥大碍,所以没有在意 [ 在这里顺便介绍几种访问 ...
- ddr3调试经验分享(一)——modelsim实现对vivado中的MIG ddr3的仿真
Vivado中的MIG已经集成了modelsim仿真环境,是不是所有IP 都有这个福利呢,不知道哦,没空去验证. 第一步:使用vivado中的MIG IP生成一堆东西 ,这个过程自己百度.或者是ug5 ...
- hdu 4597 Play Game(记忆化搜索)
题目链接:hdu 4597 Play Game 题目大意:给出两堆牌,仅仅能从最上和最下取,然后两个人轮流取,都依照自己最优的策略.问说第一个人对多的分值. 解题思路:记忆化搜索,状态出来就很水,dp ...
- 淡入淡出效果模板 js
html文件中: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> &l ...