C++代码中如何调用.asm文件中的函数?
我看到关于这样的运用,可是我在win7 vc不兼容,而且也比较喜欢vs,我想求助一下VS应该怎么设置呢?或者有别的方法。谢谢了。
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
以VC6为例,详细的讲述如何用 .cpp 和 .asm混合编成:
1。工具集成:
1)首先你应该安装汇编器,比如masm,我用的是 Microsoft (R) Macro Assembler Version 6.15.8803,对应的汇编器执行文件时ml.exe,你应该把ml.err,ml.exe 复制到VC的bin目录(我这里是:D:\Program Files\Microsoft Visual Studio\VC98\Bin)
2)在你的project中添加.asm文件,the .asm文件应该和.dsp 位于同一目录。
3)选中project中的asm文件,单击右键,选择settings菜单,弹出一个对话框,打开custom Build选项卡,在commands 中输入:ml /coff /c $(InputName).asm,
在outputs 中输入 $(InputName).obj。
这样,就可以在VC集成环境中自动编译连接你的程序了。
2。函数接口:汇编语言写的函数要被C语言调用,一定要遵循一个规范,调用约定(Calling convention),这个规范定义了参数传递,堆栈平衡等。
1)在Cpp/h文件中声明函数的调用方式:
如 extern "C " void ADD(int *Result, int a,int b);
在cpp文件中调用汇编函数extern "C " 是必须的,在c文件中调用汇编函数不需也不能使用extern "C "。
2)书写汇编程序,汇编语言中的函数名 必须是cpp文件中声明的函数名前加下划线如_Add
第一个参数是 [esp+4],第二个函数时 [esp+8],如果函数有返回值,返回值送入eax,汇编代码中最后一条语句是ret,要注意堆栈平衡.
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
以VC6为例,详细的讲述如何用 .cpp 和 .asm混合编成:
1。工具集成:
1)首先你应该安装汇编器,比如masm,我用的是 Microsoft (R) Macro Assembler Version 6.15.8803,对应的汇编器执行文件时ml.exe,你应该把ml.err,ml.exe 复制到VC的bin目录(我这里是:D:\Program Files\Microsoft Visual Studio\VC98\Bin)
2)在你的project中添加.asm文件,the .asm文件应该和.dsp 位于同一目录。
3)选中project中的asm文件,单击右键,选择settings菜单,弹出一个对话框,打开custom Build选项卡,在commands 中输入:ml /coff /c $(InputName).asm,
在outputs 中输入 $(InputName).obj。
这样,就可以在VC集成环境中自动编译连接你的程序了。
2。函数接口:汇编语言写的函数要被C语言调用,一定要遵循一个规范,调用约定(Calling convention),这个规范定义了参数传递,堆栈平衡等。
1)在Cpp/h文件中声明函数的调用方式:
如 extern "C " void ADD(int *Result, int a,int b);
在cpp文件中调用汇编函数extern "C " 是必须的,在c文件中调用汇编函数不需也不能使用extern "C "。
2)书写汇编程序,汇编语言中的函数名 必须是cpp文件中声明的函数名前加下划线如_Add
第一个参数是 [esp+4],第二个函数时 [esp+8],如果函数有返回值,返回值送入eax,汇编代码中最后一条语句是ret,要注意堆栈平衡.
...全文
相关推荐
ASM5-2-1-A.rar_cell
Automatically scheduled by the system variables RAM cell position
从汇编到C++的桥梁:asm2cpp转换工具
本文还有配套的精品资源,点击获取 简介:本文探讨了如何将x86汇编语言转换为C++代码,强调了在特定场合汇编语言的重要性,并通过asm2cpp工具简化了转换过程。转换过程包括语法解析、指令映射、标签处理、预处理器宏的使用以及内存模型的处理。虽然转换后的C++代码具有更好的可读性和可维护性,但可能会丢失某些汇编特性,因此转换需要深思熟虑。 1. x86汇编语言基础 ...
C++常见问题解答(解决一些常见疑问)
引言篇篇 1.学习C++之前是不是要学习C 2.怎样开始学习C++ 3.改进C++程序的最好方法是什么 .......... 基础篇 1.通常的C++包含哪些部分 2.什么是类型转换 3.如何执行构造函数和析构函数 ..... 提高篇 ........
C++汇编x64调用asm文件例子
VC++在x64开发环境下直接使用asm汇编指令的方法。
js调用c/cpp函数——WebAssembly入门
WebAssembly入门例子源码 博文链接:https://zhhaogen.iteye.com/blog/2391684


