C/C++中调用直接用汇编写的函数
2011-05-14 20:31
141 查看
// test1_func.asm
// test1.cpp
编译链接方法(需要VC6.0以及Masm6.15):
1、ml -c -coff test1_func.asm
2、cl test1.cpp test1_func.obj
第一步生成test1_func.obj,第二步生成test1.obj之后将这两个obj文件进行链接,从而生成最终的test1.exe可执行文件。
以下还有一个稍稍复杂些的例子:
// test2_func.asm
// test2.cpp
编译链接方法:同上。
.386 .MODEL flat,stdcall .STACK 4096 .data a DWORD 886 .code MyAsmFunc proc mov eax,a ret MyAsmFunc endp end
// test1.cpp
#include <stdio.h> extern "C" int __stdcall MyAsmFunc(void); int main(void) { printf("[%d]/n", MyAsmFunc()); return 0; }
编译链接方法(需要VC6.0以及Masm6.15):
1、ml -c -coff test1_func.asm
2、cl test1.cpp test1_func.obj
第一步生成test1_func.obj,第二步生成test1.obj之后将这两个obj文件进行链接,从而生成最终的test1.exe可执行文件。
以下还有一个稍稍复杂些的例子:
// test2_func.asm
.386 .model flat,c .code addnum proc push ebp mov ebp,esp push esi mov esi,[ebp+8] mov eax,[esi] add eax,[esi+4] add eax,[esi+8] pop esi pop ebp ret addnum endp end
// test2.cpp
#include <iostream> using namespace std; struct num { int a; int b; int c; }; extern "C" int addnum(num *ss); int main(void) { num s; s.a=1000; s.b=2000; s.c=3000; int d = addnum(&s); cout<<d<<endl; return 0; }
编译链接方法:同上。
相关文章推荐
- c++下类成员函数的调用发生了啥(从汇编看)
- QML与c++交互学习笔记(八) qt c++直接调用QML中的函数, 直接设置属性
- 转:C++指针直接调用类成员函数探讨
- [转]浅析C++中虚函数的调用及对象的内部布局(利用汇编深刻理解C++虚函数底层实现机制)
- 汇编文件(*.S)如何调用C++文件中的函数
- C/C++与汇编语言的交互之-(2)从C/C++代码调用汇编代码中的函数与变量
- C++指针直接调用类成员函数探讨(转载)
- QML与c++交互学习笔记(八) qt c++直接调用QML中的函数, 直接设置属性
- C/C++与汇编的函数相互调用分析
- GCC&&G++ C && C++ 内嵌汇编和调用汇编函数的方法(x86,ARM自己对照改)
- C++直接调用外部函数
- 转: C++指针直接调用类成员函数探讨
- C++指针直接调用类成员函数探讨(zz)
- 浅谈C++指针直接调用类成员函数
- C/C++不同函数调用方式(在汇编下调试)总结
- C/C++与汇编混编时的内嵌汇编调用C/C++写的函数的演示
- C++在windows下直接调用dll文件中的函数--封装
- C++指针直接调用类成员函数探讨
- [转]浅析C++中虚函数的调用及对象的内部布局(利用汇编深刻理解C++虚函数底层实现机制)
- C++中的虚函数调用原理的反汇编实例分析(1)