ABI与API的区别
阅读数:152 评论数:0
跳转到新版页面分类
C/C++
正文
ABI是二进制级别的两个模块的接口。比如一个二进制模块想要调用另外一个二进制模块提供的功能,它需要知道怎样通过汇编语言(即机器指令)去调用,以及怎样传递相应的参数和返回值(通过寄存器还是栈内存,以及参数压栈的顺序等细节)。
API是源代码级别的两个模块的接口,是提供到语言层次的函数调用,已经是和具体语言相关的。
相关推荐
组织和策略问题
第0条 不要拘泥于小节(了解哪此东本西不应该标准化)
编程规范不应施加个人喜好或者过时的做法。
第1条 在高警告级别干净利落地进行编译
高度重视警告:使用编译器的最高警告级别。应该要求
C/C++语言在编译以后,函数的名字会被编译器修改,改成编译器内部的名字,这个名字会在链接的时候用到。
将C++源程序标识符(original C++ source identif
编译器中的sanitize来自于google的开源sanitizers项目,后GNU将该工具加入到GCC编译中,是查找隐藏Bug的利器。
-fsanitize=address</p
prolog和epilog其实就是两段固定的代码,当编译器对程序进行编译的时候就会生成两段代码,然后编译器会在每一个函数的开头塞入prolog代码,在每个函数的结尾塞入epilog代码。
1、tail call
在函数f中调用函数b,如果这个调用是函数f中执行的最后一条指令,那么这个调用就称为tail call。
<pre class="language
一、linux kernel与常规C项目的区别
1、Linux内核是一个非常大的项目,所以需要我们有选择的进行代码索引。
2、Linux内核是架构相关,但是我们一般只关注于某一个选定架构,所以不需要索