码迷,mamicode.com
首页 > 其他好文 > 详细

Misc: 那些放在函数定义前的 _cdecl , _stdcall, _fastcall 到底是什么鬼

时间:2016-05-15 21:39:20      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

如果看一些很底层的代码(比如很多库的代码,或者内核代码),会经常见到形如 _cdecl  ,  _stdcall (这个在Windows下的代码中很常见),  _fastcall (这个比较少见)这一类的东西,到底是什么?

这些其实是用来指示编译器做函数调用的时候,应该如何调用,比如说,

  a)参数的传递是放在寄存器中还是放在栈中

  b)参数是从左传到右还是从右传到左

  etc.

说得专业一点,就是calling convention. 

这些关乎系统底层ABI层面的东西。处理得不好,你的程序在链接的时候就会出现一堆的" Unresolved References" 错误(两个程序在ABI层面上不相容)。

当然一般high-level的程序不需要理会这些。

 

Reference:

  https://en.wikibooks.org/wiki/Embedded_Systems/Mixed_C_and_Assembly_Programming#Calling_Conventions

  https://en.wikipedia.org/wiki/X86_calling_conventions

 

 

 

 

 

 

 

 

 

 

:)

Misc: 那些放在函数定义前的 _cdecl , _stdcall, _fastcall 到底是什么鬼

标签:

原文地址:http://www.cnblogs.com/walkerlala/p/5496054.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!