函数调用方式小结
来源:互联网 发布:mysql数据库备份还原 编辑:程序博客网 时间:2024/06/05 22:48
我们知道,调用函数时,计算机常用栈来存放函数执行需要的参数,由于栈的空间大小是有限的,在windows下栈是向低地址扩展的数据结构,是一块连续的内存区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,windows下栈的大小是2M(也有的说是1M),如果申请的空间超过栈的剩余空间时,将提示overflow。
在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。
下面以函数int fun(int a, int b)举例来说明:
注:
1.C的函数名的修饰约定规则均不改变输出函数名中的字符大小写,而PASCAL约定输出的函数名是无任何修饰且全部大写。
2.关键字 __stdcall、__cdecl和__fastcall可以直接加在要输出的函数前,也可以在编译环境的Setting…/C/C++ /Code Generation项选择。当加在输出函数前的关键字与编译环境中的选择不同时,直接加在输出函数前的关键字有效。它们对应的命令行参数分别为 /Gz、/Gd和/Gr。缺省状态为/Gd,即__cdecl。
下面以实际例子来说明__stdcall、__cdecl和__fastcall修饰名的不同:
使用LordPE查看导出表:
0 0
- 函数调用方式小结
- 函数调用方式小结
- 函数调用小结
- Node.js入门(一)——调用函数方式小结
- javascript 逗号() 函数调用小结
- js 函数调用模式小结
- 函数调用方式总结
- 函数调用方式介绍
- 函数调用方式总结
- vc 函数调用方式
- 函数调用方式总结
- 函数调用方式
- 函数调用方式
- 函数调用方式
- 函数调用方式
- 函数调用方式
- 函数调用方式总结
- 函数调用方式
- Intent常用
- C/C++的输出
- Codevs3162抄书问题题解
- java web开发 高并发处理
- 软件测试工程的思路、方法、原则、
- 函数调用方式小结
- 【JavaScript】--原型
- linux动态库(二)
- IEEE 802.11ac 无线协议
- arm-linux-gdb+gdbserver环境搭建以及远程调试 及调试core文件
- [leetcode] 94.Binary Tree Inorder Traversal
- hdu 5120
- OpenVPN
- LXC1.0.7-- lxc-start 源码分析 01