女同另类啪啪视频,男人天堂av在线亚洲,免费入口网站黄色,毛片大全在线观看,黄色视频在线观看免费h片,直接看的欧美特一级黄碟,四虎精品久久久

代碼編譯方法、電子設(shè)備和存儲(chǔ)介質(zhì)與流程

文檔序號(hào):42300511發(fā)布日期:2025-06-27 18:42閱讀:17來源:國(guó)知局

本公開的實(shí)施例涉及一種代碼編譯方法、電子設(shè)備和存儲(chǔ)介質(zhì)。


背景技術(shù):

1、底層虛擬機(jī)(low-level?virtual?machine,llvm)是一個(gè)開源的編譯器框架,它被設(shè)計(jì)為一種模塊化、可重用的編譯器及工具鏈技術(shù)的集合。llvm支持線程本地存儲(chǔ)(threadlocal?storage,tls)模型,可以定義線程本地存儲(chǔ)變量,使得每個(gè)線程都有獨(dú)立的變量副本,從而避免線程間的數(shù)據(jù)競(jìng)爭(zhēng)問題。


技術(shù)實(shí)現(xiàn)思路

1、本公開至少一實(shí)施例提供一種代碼編譯方法,其中,所述代碼包括至少一個(gè)線程本地存儲(chǔ)變量,所述代碼編譯方法包括:獲取所述代碼中每個(gè)第一函數(shù)所使用的線程本地存儲(chǔ)變量的記錄,并將所述記錄傳遞給驅(qū)動(dòng)器,以使所述驅(qū)動(dòng)器在運(yùn)行時(shí)根據(jù)所述記錄將每個(gè)線程本地存儲(chǔ)變量分配至線程本地內(nèi)存;根據(jù)所述代碼對(duì)應(yīng)的中間表示生成所述代碼對(duì)應(yīng)的機(jī)器碼,其中,所述機(jī)器碼包括加載指令,所述加載指令在被執(zhí)行時(shí)用于基于所述驅(qū)動(dòng)器的分配結(jié)果獲取每個(gè)線程本地存儲(chǔ)變量對(duì)應(yīng)的線程本地內(nèi)存地址。

2、在本公開至少一實(shí)施例提供的代碼編譯方法中,所述根據(jù)所述代碼對(duì)應(yīng)的中間表示生成所述代碼對(duì)應(yīng)的機(jī)器碼,包括:將所述代碼對(duì)應(yīng)的中間表示中用于獲取線程本地存儲(chǔ)變量的地址的指令轉(zhuǎn)換為所述加載指令。

3、本公開至少一實(shí)施例提供的代碼編譯方法還包括:在所述代碼對(duì)應(yīng)的中間表示中插入對(duì)每個(gè)第一函數(shù)所使用的線程本地存儲(chǔ)變量進(jìn)行初始化的指令。

4、在本公開至少一實(shí)施例提供的代碼編譯方法中,獲取所述代碼中每個(gè)第一函數(shù)所使用的線程本地存儲(chǔ)變量的記錄,包括:對(duì)于每個(gè)線程本地存儲(chǔ)變量,確定使用所述線程本地存儲(chǔ)變量的第一函數(shù),以構(gòu)建線程本地存儲(chǔ)變量-第一函數(shù)映射關(guān)系;對(duì)所述映射關(guān)系進(jìn)行反向映射,得到所述代碼中每個(gè)第一函數(shù)所使用的線程本地存儲(chǔ)變量的記錄。

5、在本公開至少一實(shí)施例提供的代碼編譯方法中,所述第一函數(shù)直接使用所述線程本地存儲(chǔ)變量,或者通過調(diào)用第二函數(shù)以使用所述線程本地存儲(chǔ)變量。

6、在本公開至少一實(shí)施例提供的代碼編譯方法中,所述第一函數(shù)是由主機(jī)端調(diào)用且由設(shè)備端執(zhí)行的函數(shù),所述第二函數(shù)是由設(shè)備端調(diào)用且由設(shè)備端執(zhí)行的函數(shù)。

7、本公開至少一實(shí)施例提供的代碼編譯方法還包括:針對(duì)未被使用的線程本地存儲(chǔ)變量,從所述代碼對(duì)應(yīng)的中間表示中移除用于獲取所述未被使用的線程本地存儲(chǔ)變量的地址的指令。

8、本公開至少一實(shí)施例提供的代碼編譯方法還包括:從所述代碼對(duì)應(yīng)的中間表示中移除重復(fù)的用于獲取線程本地存儲(chǔ)變量的地址的指令,使得對(duì)每個(gè)第一函數(shù)內(nèi)的每個(gè)線程本地存儲(chǔ)變量?jī)H獲取一次地址。

9、在本公開至少一實(shí)施例提供的代碼編譯方法中,所述加載指令進(jìn)一步用于:針對(duì)每個(gè)第一函數(shù),從所述第一函數(shù)對(duì)應(yīng)的寄存器中讀取所述第一函數(shù)所使用的線程本地存儲(chǔ)變量的地址表;基于所述地址表獲取所述第一函數(shù)所使用的每個(gè)線程本地存儲(chǔ)變量對(duì)應(yīng)的線程本地內(nèi)存地址,其中,所述地址表由所述驅(qū)動(dòng)器在運(yùn)行時(shí)、根據(jù)地址分配結(jié)果在所述第一函數(shù)對(duì)應(yīng)的寄存器中創(chuàng)建。

10、在本公開至少一實(shí)施例提供的代碼編譯方法中,所述基于所述地址表獲取所述第一函數(shù)所使用的每個(gè)線程本地存儲(chǔ)變量對(duì)應(yīng)的線程本地內(nèi)存地址,包括:根據(jù)所述第一函數(shù)對(duì)應(yīng)的記錄中每個(gè)線程本地存儲(chǔ)變量的順序和所述第一函數(shù)所使用的每個(gè)線程本地存儲(chǔ)變量的地址占用大小,計(jì)算所述第一函數(shù)所使用的每個(gè)線程本地存儲(chǔ)變量對(duì)應(yīng)的線程本地內(nèi)存地址在所述地址表中對(duì)應(yīng)的偏移量;基于所述偏移量確定所述第一函數(shù)所使用的每個(gè)線程本地存儲(chǔ)變量對(duì)應(yīng)的線程本地內(nèi)存地址。

11、在本公開至少一實(shí)施例提供的代碼編譯方法中,所述寄存器包括常量標(biāo)量寄存器。

12、本公開至少一實(shí)施例提供一種代碼編譯裝置,其中,所述代碼包括至少一個(gè)線程本地存儲(chǔ)變量,所述代碼編譯裝置包括:獲取模塊,被配置為獲取所述代碼中每個(gè)第一函數(shù)所使用的線程本地存儲(chǔ)變量的記錄,并將所述記錄傳遞給驅(qū)動(dòng)器,以使所述驅(qū)動(dòng)器在運(yùn)行時(shí)根據(jù)所述記錄將每個(gè)線程本地存儲(chǔ)變量分配至線程本地內(nèi)存;生成模塊,被配置為根據(jù)所述代碼對(duì)應(yīng)的中間表示生成所述代碼對(duì)應(yīng)的機(jī)器碼,其中所述機(jī)器碼包括加載指令,所述加載指令在被執(zhí)行時(shí)用于基于所述驅(qū)動(dòng)器的分配結(jié)果獲取每個(gè)線程本地存儲(chǔ)變量對(duì)應(yīng)的線程本地內(nèi)存地址。

13、本公開至少一實(shí)施例提供一種電子設(shè)備,該電子設(shè)備包括:至少一個(gè)處理器;至少一個(gè)存儲(chǔ)器,包括一個(gè)或多個(gè)計(jì)算機(jī)程序模塊;其中,所述一個(gè)或多個(gè)計(jì)算機(jī)程序模塊被存儲(chǔ)在所述至少一個(gè)存儲(chǔ)器中并被配置為由所述至少一個(gè)處理器執(zhí)行,所述一個(gè)或多個(gè)計(jì)算機(jī)程序模塊用于實(shí)現(xiàn)本公開至少一實(shí)施例提供的代碼編譯方法。

14、本公開至少一實(shí)施例提供一種非瞬時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)指令,其中,所述計(jì)算機(jī)指令被至少一個(gè)處理器執(zhí)行時(shí)執(zhí)行本公開至少一實(shí)施例提供的代碼編譯方法。

15、本公開至少一實(shí)施例提供的代碼編譯方法、代碼編譯裝置、電子設(shè)備和非瞬時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),采用運(yùn)行時(shí)動(dòng)態(tài)分配地址空間的機(jī)制,核函數(shù)使用了多少線程本地存儲(chǔ)變量,驅(qū)動(dòng)器就會(huì)對(duì)應(yīng)為其分配多少線程本地內(nèi)存空間,不會(huì)造成線程本地內(nèi)存空間的浪費(fèi),提高了線程本地內(nèi)存空間的利用率。



技術(shù)特征:

1.一種代碼編譯方法,其中,所述代碼包括至少一個(gè)線程本地存儲(chǔ)變量,所述代碼編譯方法包括:

2.根據(jù)權(quán)利要求1所述的代碼編譯方法,其中,所述根據(jù)所述代碼對(duì)應(yīng)的中間表示生成所述代碼對(duì)應(yīng)的機(jī)器碼,包括:

3.根據(jù)權(quán)利要求1所述的代碼編譯方法,還包括:

4.根據(jù)權(quán)利要求1所述的代碼編譯方法,其中,所述獲取所述代碼中每個(gè)第一函數(shù)所使用的線程本地存儲(chǔ)變量的記錄,包括:

5.根據(jù)權(quán)利要求4所述的代碼編譯方法,其中,所述第一函數(shù)直接使用所述線程本地存儲(chǔ)變量,或者通過調(diào)用第二函數(shù)以使用所述線程本地存儲(chǔ)變量。

6.根據(jù)權(quán)利要求5所述的代碼編譯方法,其中,所述第一函數(shù)是由主機(jī)端調(diào)用且由設(shè)備端執(zhí)行的函數(shù),所述第二函數(shù)是由設(shè)備端調(diào)用且由設(shè)備端執(zhí)行的函數(shù)。

7.根據(jù)權(quán)利要求1所述的代碼編譯方法,還包括:

8.根據(jù)權(quán)利要求1所述的代碼編譯方法,還包括:

9.根據(jù)權(quán)利要求1所述的代碼編譯方法,其中,所述加載指令進(jìn)一步用于:

10.根據(jù)權(quán)利要求9所述的代碼編譯方法,其中,所述基于所述地址表獲取所述第一函數(shù)所使用的每個(gè)線程本地存儲(chǔ)變量對(duì)應(yīng)的線程本地內(nèi)存地址,包括:

11.根據(jù)權(quán)利要求9所述的代碼編譯方法,其中,所述寄存器包括常量標(biāo)量寄存器。

12.一種電子設(shè)備,包括:

13.一種非瞬時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)指令,其中,所述計(jì)算機(jī)指令被至少一個(gè)處理器執(zhí)行時(shí)執(zhí)行權(quán)利要求1-11任一項(xiàng)所述的代碼編譯方法。


技術(shù)總結(jié)
本公開的實(shí)施例提供了一種代碼編譯方法、電子設(shè)備和存儲(chǔ)介質(zhì)。該代碼編譯方法用于編譯包括至少一個(gè)線程本地存儲(chǔ)變量的代碼,該代碼編譯方法包括:獲取代碼中每個(gè)第一函數(shù)所使用的線程本地存儲(chǔ)變量的記錄,并將記錄傳遞給驅(qū)動(dòng)器,以使驅(qū)動(dòng)器在運(yùn)行時(shí)根據(jù)記錄將每個(gè)線程本地存儲(chǔ)變量分配至線程本地內(nèi)存;根據(jù)代碼對(duì)應(yīng)的中間表示生成代碼對(duì)應(yīng)的機(jī)器碼,其中,機(jī)器碼包括加載指令,加載指令在被執(zhí)行時(shí)用于基于驅(qū)動(dòng)器的分配結(jié)果獲取每個(gè)線程本地存儲(chǔ)變量對(duì)應(yīng)的線程本地內(nèi)存地址。該代碼編譯方法采用運(yùn)行時(shí)動(dòng)態(tài)分配地址空間的機(jī)制,不會(huì)造成線程本地內(nèi)存空間的浪費(fèi),提高了線程本地內(nèi)存空間的利用率。

技術(shù)研發(fā)人員:請(qǐng)求不公布姓名,請(qǐng)求不公布姓名,請(qǐng)求不公布姓名,請(qǐng)求不公布姓名
受保護(hù)的技術(shù)使用者:上海壁仞科技股份有限公司
技術(shù)研發(fā)日:
技術(shù)公布日:2025/6/26
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1