汇编与C/C++的混合使用
来源:互联网 发布:网络编辑招聘 编辑:程序博客网 时间:2024/06/05 09:40
基本知识:
C的函数返回值: char,bool从al返回;short int从ax返回;int,指针从eax返回;float double long double从浮点堆栈返回。
C的参数传递: 参数按从右到左的顺序压栈,由调用者平衡堆栈
函数在堆栈中的布局:
【参数列表】
【返回地址】
【ebp】
【局部变量】
如int func(int a,int b,int c)
c
b
a
eip (返回地址)
ebp(mov ebp esp)
locals (局部变量列表)
1. ASM文件调用C模块中的函数,须遵循先声明后使用的原则。
在ASM文件的.code之前声明你从C模块调用的函数。
例如,你要调用C文件中一个名为 int funC(char a,int b,char* c)的函数,
则可这样声明:funC proto,a:byte,b:DWORD,c:ptr DWORD。
2. 在C文件中调用ASM文件中的函数,也须遵循先声明后使用的原则。
将要导出的函数在.code之前修饰为public。(如要导出一个名为func1的函数,则表示为: public func1
例如,Asm中有个函数原型为:func proc [uses esi,edi...],a:dword,b:ptr BYTE,c:ptr DWORD
则可在C文件中这样声明:extern void func(int a,char *b,int *c);
如果在func中有返回值,则根据具体情况声明为 int/char/char*/int*/double/... func(int a,char *b,int* c);
3. 在C++文件中调用ASM模块中的函数 或者在ASM模块调用C++文件中的函数,在声明的时候要将extern扩展为extern "C"
不论是C++文件导出给ASM的函数,还是从ASM导入来的函数,都要声明为
“extern "C" 返回类型 函数名(参数列表)”
的形式
- 汇编与C/C++的混合使用
- C与汇编混合编程
- C与汇编混合编程
- C与汇编混合编程
- c与汇编混合编程
- c与汇编混合编程
- C与汇编混合编程
- C/汇编的混合编程
- C/汇编的混合编程
- c/汇编的混合编程
- C/汇编的混合编程
- 汇编与C的混合编程(数字振荡器的实现)
- c语言与汇编的混合编程代码
- 关于c与汇编混合编程的一点总结
- 关于c与汇编混合编程的一点总结
- 关于c与汇编混合编程的一点总结
- 关于C/C++与汇编的混合编程
- 一个简单的C与汇编混合程序
- new和malloc的区别和联系
- 桥接模式和策略模式的区别和联系
- 解决TCP网络传输“粘包”问题
- 分段式内存管理
- C++类对象内存模型与成员函数调用分析(中)
- 汇编与C/C++的混合使用
- 碰到的一些笔试题C语言方面
- Ubuntu 安装 php
- poj3321——Apple Tree//树状数组
- 一些要掌握的基础知识
- C++基本概念学习
- 单片机学习笔记
- MATLAB--自定义函数
- C++类对象内存模型与成员函数调用分析(下)