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 #### #####
随机推荐
- JMS两种消息模型
前段时间学习EJB.接触到了JMS(Java消息服务),JMS支持两种消息模型:Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub),即点对点和公布订阅模型. ...
- Python——在Unicode和普通字符串之间转换
1.1. 问题 Problem You need to deal with data that doesn't fit in the ASCII character set. 你需要处理不适合用ASC ...
- RSA的密钥把JAVA格式转换成C#的格式(2)
把C#格式转换成Java:RSA的密钥把JAVA格式转换成C#的格式(1) 我已经在第一篇介绍过如何把C#格式转换成Java,现在来看看如何把Java格式转换成C#. /// <summary& ...
- 【JAVA秒会技术之秒杀面试官】秒杀Java面试官——集合篇(一)
[JAVA秒会技术之秒杀面试官]秒杀Java面试官——集合篇(一) [JAVA秒会技术之秒杀面试官]JavaEE常见面试题(三) http://blog.csdn.net/qq296398300/ar ...
- LoadRunner中对图表的分析说明
LoadRunner中对图表的分析说明 (一)在Vusers(虚拟用户状态)中 1.Running Vusers(负载过程中的虚拟用户运行情况) 说明——系统形成负载的过程,随着时间的推移,虚拟用户数 ...
- HDU 4287 Intelligent IME(map运用)
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4287 Intellig ...
- 1高并发server:多路IO之select
1 select A:select能监听的文件描写叙述符个数受限于FD_SETSIZE,一般为1024.单纯改变进程打开 的文件描写叙述符个数并不能改变select监听文件个数 B:解决1024 ...
- mongoDB _id:ObjectId("xxxx")详解
http://blog.haohtml.com/archives/10678 MongoDB ObjectId的优化
- WSDL接口数据传递以及外网发布需要注意的地方
A系统传递数据给B系统 1.A创建asmx推送接口如下 using System; using System.Collection.Generic; using System.Data; using ...
- sql DATEPART() MONTH() convert() cast() dateadd() DATEDIFF() with(nolock)
DATEPART() 函数用于返回日期/时间的单独部分,比如年.月.日.小时.分钟等等. 语法 DATEPART(datepart,date) date 参数是合法的日期表达式.datepart 参数 ...