X64平台C/C++与汇编混编工程搭建说明

X64平台C/C++与汇编混编工程搭建说明

文章地址:

 图片不好上传,直接下载详细文档即可,地址

http://download.csdn.net/detail/zhangpu1980/6417239

 

1.  电脑配置

2.  VisualStudio 2012混编设置

2.1.  VS2012版本

2.2.  混编工程创建步骤

2.2.1. 创建空白工程

2.2.1.1.    Step1

2.2.1.2.     Step2

2.2.1.3.    Step3

2.2.2. 添加测试cpp文件

2.2.2.1.    Step1

2.2.2.2.     Step2

2.2.2.3.     Step3

2.2.2.4.     Step4添加测试代码

#include <iostream>

#include "windows.h"

 

using namespace std;

 

//汇编语言外暴漏函数

extern "C" double __stdcallCombineA(int a, int b, int c, int d, int e, double f);

 

//与汇编语言功能相同的C函数

double CombineC(int a, int b, int c, intd, int e, double f)

{

       return(a + b + c + d +e)/(f + 1.5);

}

 

//测试主函数

void main()

{

       cout<<CombineC(1,2,3,4,5,6.1)<<endl;

       cout<<CombineA(1,2,3,4,5,6.1)<<endl;

}

2.2.3. 添加测试asm文件

2.2.3.1.    Step1

2.2.3.2.    Step2

2.2.3.3.    Step3添加测试汇编代码

 

;CombineA(int a, int b, int c, int d,int e, double f)

 

.data

realVal REAL8 + 1.5;

 

.code

PUBLIC CombineA

 

CombineA PROC

ADD ECX, DWORD PTR [RSP+28H]

 

parameter:

ADD ECX, R9D

ADD ECX, R8D

ADD ECX, EDX

MOVD XMM0, ECX

CVTDQ2PD XMM0, XMM0

MOVSD XMM1, realVal

ADDSD XMM1, MMWORD PTR [RSP+30H]

DIVSD XMM0, XMM1

RET

CombineA ENDP

End

2.2.4. 配置asm文件编译属性

2.2.4.1.    修改编译环境为X64

 

如果没有X64,则选择New

修改为x64

 

2.2.4.2.    设置asm文件属性

2.2.4.3.    讲上面的Does not…修改为Custom Build Tool

2.2.4.4.    属性页左侧多出一项自定义编译设置

2.2.4.5.    修改Command line和Outputs

Command line

ml64.exe /DWIN_X64 /Zi /c /Cp /Fl /Fo$(IntDir)\X64asm.obj X64asm.asm

 

Outputs

$(IntDir)\X64asm.obj

注意:上述红色字体如果改为$(InputName)会报错,“找不到.asm文件”,所以我修改为了文件名,这样编译就通过了。

同理,可以设置release模式。

2.2.4.6.    编译asm文件

2.2.4.7.    编译成功

 

2.2.5. 编译整个工程

 

2.2.6. 输出结果正确

 

至此,X64环境下VS2012混合编程成功

 

 图片不好上传,直接下载详细文档即可,地址

http://download.csdn.net/detail/zhangpu1980/6417239

 

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值