亚洲最大av无码国产网址_日韩少妇高清无码_久久国产精品免费一级片_色综合久久综合欧美综合网_影音先锋亚洲熟女AV网

當(dāng)前位置:首頁(yè) > 熱點(diǎn) > 正文

天天時(shí)訊:abigail(abi)2023-06-22 09:17:45 | 來(lái)源:互聯(lián)網(wǎng) | 查看: | 評(píng)論:0

1、比如我在PC上用不管什么樣的COMPILER, 只要產(chǎn)生符合LINUX的ELF文件, 用相應(yīng)的INSTRUCTION SET(比如INTEL, PPC, SPARC). 就可以在一個(gè)LINUX機(jī)器上運(yùn)行. 調(diào)用系統(tǒng)或別人的LIB.ABI定義了BINARY的文件格式, 內(nèi)容, 以及裝載/卸載程序的要求, 函數(shù)調(diào)用的參數(shù)傳遞規(guī)則, 寄存器, 堆棧的使用等. abi(應(yīng)用二進(jìn)制接口)我的理解就是機(jī)器代碼一層的接口。

2、先說(shuō)一下api(特指系統(tǒng)調(diào)用),api基本上是和機(jī)器硬件平臺(tái)無(wú)關(guān)但是和操作系統(tǒng)密切相關(guān)的接口,一個(gè)api調(diào)用定義了一個(gè)對(duì)內(nèi)核的操作,以及操作的參數(shù)。

3、C語(yǔ)言會(huì)議函數(shù)的形式調(diào)用api。


【資料圖】

4、abi,是比api更貼近硬件的一層接口,它規(guī)定的是二進(jìn)制代碼之間的調(diào)用規(guī)則。

5、舉個(gè)例子來(lái)說(shuō)吧!一個(gè)應(yīng)用程序,調(diào)用了.so庫(kù)中的函數(shù)或者系統(tǒng)調(diào)用,如果它的編譯器可以找到被調(diào)用函數(shù)或者系統(tǒng)調(diào)用的話,則編譯可以同過(guò),也就是說(shuō),它是用的api是正確的。

6、但是,這個(gè)調(diào)用離成功還很遠(yuǎn)。

7、 首先,如果編譯出來(lái)的代碼和運(yùn)行庫(kù)函數(shù)和系統(tǒng)調(diào)用的代碼不是一個(gè)硬件平臺(tái)的,則這個(gè)應(yīng)用根本就不能和被調(diào)用代碼運(yùn)行在一起,則調(diào)用不會(huì)成功。

8、即使庫(kù)函數(shù)、系統(tǒng)調(diào)用和是運(yùn)行在同一硬件平臺(tái)上的調(diào)用也不一定會(huì)趁成功。

9、因?yàn)槌绦蜃罱K是被編譯成二進(jìn)制代碼的,并且是要加載到內(nèi)存中運(yùn)行的。

10、那么,在調(diào)用庫(kù)函數(shù)或者系統(tǒng)調(diào)用的時(shí)候,應(yīng)用要先要以庫(kù)函數(shù)或者系統(tǒng)調(diào)用指定的方式和位置(內(nèi)存或者寄存器)設(shè)置參數(shù),然后通過(guò)中斷或者其他方式跳轉(zhuǎn)到被調(diào)用代碼的起始處進(jìn)行執(zhí)行,被調(diào)用代碼從指定位置去到參數(shù),處理完畢之后再將結(jié)果放到指定的位置,最后應(yīng)用再到指定的地方取回結(jié)果,調(diào)用完畢!我認(rèn)為這個(gè)過(guò)程中,存放參數(shù)和結(jié)果的位置屬于abi規(guī)定的范圍,被調(diào)用程序的跳轉(zhuǎn)地址或者中斷號(hào)碼也是abi規(guī)定的范圍。

11、如果存取參數(shù)、結(jié)果的位置沒(méi)有明確的規(guī)范,或者調(diào)用、被調(diào)用雙方?jīng)]有遵照統(tǒng)一個(gè)規(guī)范,那么這個(gè)調(diào)用能夠根本就不可能成功;如果系統(tǒng)提供的庫(kù)函數(shù)路徑不正確,調(diào)用也不會(huì)成功;如果中斷代碼使用錯(cuò)誤,調(diào)用也不會(huì)正確。

本文到此分享完畢,希望對(duì)大家有所幫助。

上一篇:中國(guó)首款敞篷電跑亮相英國(guó)銀石 軟頂敞篷加剪刀門組合顛覆而至 最后一頁(yè)下一篇:

最近更新
?