1、比如我在PC上用不管什么样的COMPILER, 只要产生符合LINUX的ELF文件, 用相应的INSTRUCTION SET(比如INTEL, PPC, SPARC). 就可以在一个LINUX机器上运行. 调用系统或别人的LIB.ABI定义了BINARY的文件格式, 内容, 以及装载/卸载程序的要求, 函数调用的参数传递规则, 寄存器, 堆栈的使用等. abi(应用二进制接口)我的理解就是机器代码一层的接口。
(资料图片)
2、先说一下api(特指系统调用),api基本上是和机器硬件平台无关但是和操作系统密切相关的接口,一个api调用定义了一个对内核的操作,以及操作的参数。
3、C语言会议函数的形式调用api。
4、abi,是比api更贴近硬件的一层接口,它规定的是二进制代码之间的调用规则。
5、举个例子来说吧!一个应用程序,调用了.so库中的函数或者系统调用,如果它的编译器可以找到被调用函数或者系统调用的话,则编译可以同过,也就是说,它是用的api是正确的。
6、但是,这个调用离成功还很远。
7、 首先,如果编译出来的代码和运行库函数和系统调用的代码不是一个硬件平台的,则这个应用根本就不能和被调用代码运行在一起,则调用不会成功。
8、即使库函数、系统调用和是运行在同一硬件平台上的调用也不一定会趁成功。
9、因为程序最终是被编译成二进制代码的,并且是要加载到内存中运行的。
10、那么,在调用库函数或者系统调用的时候,应用要先要以库函数或者系统调用指定的方式和位置(内存或者寄存器)设置参数,然后通过中断或者其他方式跳转到被调用代码的起始处进行执行,被调用代码从指定位置去到参数,处理完毕之后再将结果放到指定的位置,最后应用再到指定的地方取回结果,调用完毕!我认为这个过程中,存放参数和结果的位置属于abi规定的范围,被调用程序的跳转地址或者中断号码也是abi规定的范围。
11、如果存取参数、结果的位置没有明确的规范,或者调用、被调用双方没有遵照统一个规范,那么这个调用能够根本就不可能成功;如果系统提供的库函数路径不正确,调用也不会成功;如果中断代码使用错误,调用也不会正确。
本文到此分享完毕,希望对大家有所帮助。
标签:
-
焚烧秸秆被罚1.7亿,核酸检测造假却罚7万,为什么差距如此之大?我国疫情防控工作的严格程度是有目共睹的,而在这场长达三年...
-
实时焦点:宋尚1、宋尚,原HP、KAPPA高级经理,清华大学总裁班客座教授,世...
-
【天天时快讯】汽车玻璃膜怎么撕下来的视频_汽车玻璃膜怎么撕下来你们好,最近小品发现有诸多的小伙伴们对于汽车玻璃膜怎么撕...
-
天天视讯!ppt字体大小统一修改设置_ppt字体大小1、文字的字体、大小、排列都影响着PPT的制作,可以参考以下...
-
好看的言情小说推荐(五本高质量文笔好的言情小说排行)今天给大家带来的是五本名字不好,内容却超好看的言情小说,...
-
天天观速讯丨永恒余烬(关于永恒余烬的基本详情介绍)1、《刺客信条:余烬》是一部30分钟短片,讲述了刺客信条2的...
-
观焦点:6月12日随着新写字楼的供应 投资势头将持续随着新的投资级项目在未来两年投入使用,该国将继续见证商业...
-
全球观热点:迁安镇第二初级中学_迁安镇1、锦江饭店西行。2、公交四路车迁安镇政府下车即到。本文分...
-
启智习礼明志感恩 嘉祥县金屯镇大孙小学举办“成童礼”_中国山东网_济宁 天天快资讯中国山东网-感知山东6月21日讯(记者郝亚松通讯员张华茂王友芹...
-
看完今年618,理解了阿里变革的决心 每日速看在淘宝618活动最后一天,阿里换帅的消息铺天盖地。在马云给出...
- 智联世界,元生无界!快手虚拟人IP亮相2022人工智能大会
2022-09-07 10:47:54
- 机器人界“奥林匹克”!2022世界机器人大会8月18日举行
2022-08-10 09:58:58
- 2025年全球人口将达到90亿!机器人将在农业领域大显身手
2022-07-14 09:41:10
- 中科院院士蒋华良:AI+分子模拟与药物研发将大有可为
2022-07-14 09:37:00
- “千垛之城荷你有约” 2022兴化市荷文化旅游节正式开幕
2022-07-07 09:28:34