本公開(kāi)涉及計(jì)算機(jī),特別是涉及一種指令翻譯方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、目前,當(dāng)客戶(hù)端出現(xiàn)崩潰和卡頓等問(wèn)題時(shí),一般通過(guò)讀取符號(hào)表文件,基于指令翻譯請(qǐng)求映射得到函數(shù)字符和行編號(hào)等,方便定位故障位置。相關(guān)技術(shù)中,一般采用二分查找法在符號(hào)表文件中查找函數(shù)字符和行編號(hào),其時(shí)間復(fù)雜度較高,翻譯效率有待提升。
技術(shù)實(shí)現(xiàn)思路
1、以下是對(duì)本公開(kāi)詳細(xì)描述的主題的概述。本概述并非是為了限制權(quán)利要求的保護(hù)范圍。
2、本公開(kāi)實(shí)施例提供了一種指令翻譯方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì),能夠降低指令翻譯時(shí)的時(shí)間復(fù)雜度,提升指令翻譯效率。
3、一方面,本公開(kāi)實(shí)施例提供了一種指令翻譯方法,包括:
4、接收指令翻譯請(qǐng)求,當(dāng)所述指令翻譯請(qǐng)求攜帶有原始指令的目標(biāo)地址時(shí),在所述指令翻譯請(qǐng)求中獲取所述目標(biāo)地址;
5、獲取第一符號(hào)表文件,根據(jù)所述目標(biāo)地址在所述第一符號(hào)表文件的樹(shù)形數(shù)據(jù)結(jié)構(gòu)中檢索出目標(biāo)節(jié)點(diǎn),從所述目標(biāo)節(jié)點(diǎn)中讀取符號(hào)偏移;
6、根據(jù)所述符號(hào)偏移在所述第一符號(hào)表文件的第一符號(hào)信息中檢索出所述目標(biāo)地址的函數(shù)編號(hào)以及所述原始指令所在的第一行編號(hào),其中,所述第一符號(hào)信息用于存儲(chǔ)所述符號(hào)偏移、所述函數(shù)編號(hào)以及所述第一行編號(hào)之間的映射關(guān)系;
7、根據(jù)所述目標(biāo)地址獲取第一符號(hào)字典,根據(jù)所述函數(shù)編號(hào)在所述第一符號(hào)字典中檢索出所述原始指令的第一函數(shù)字符,基于所述第一函數(shù)字符與所述第一行編號(hào)得到所述原始指令的翻譯結(jié)果。
8、另一方面,本公開(kāi)實(shí)施例還提供了一種指令翻譯裝置,包括:
9、請(qǐng)求處理模塊,用于接收指令翻譯請(qǐng)求,當(dāng)所述指令翻譯請(qǐng)求攜帶有原始指令的目標(biāo)地址時(shí),在所述指令翻譯請(qǐng)求中獲取所述目標(biāo)地址;
10、樹(shù)形數(shù)據(jù)結(jié)構(gòu)處理模塊,用于獲取第一符號(hào)表文件,根據(jù)所述目標(biāo)地址在所述第一符號(hào)表文件的樹(shù)形數(shù)據(jù)結(jié)構(gòu)中檢索出目標(biāo)節(jié)點(diǎn),從所述目標(biāo)節(jié)點(diǎn)中讀取符號(hào)偏移;
11、符號(hào)信息處理模塊,用于根據(jù)所述符號(hào)偏移在所述第一符號(hào)表文件的第一符號(hào)信息中檢索出所述目標(biāo)地址的函數(shù)編號(hào)以及所述原始指令的第一行編號(hào),其中,所述第一符號(hào)信息用于存儲(chǔ)所述符號(hào)偏移、所述函數(shù)編號(hào)以及所述第一行編號(hào)之間的映射關(guān)系;
12、符號(hào)字典處理模塊,用于根據(jù)所述目標(biāo)地址獲取第一符號(hào)字典,在所述第一符號(hào)字典中檢索出所述原始指令的第一函數(shù)字符,基于所述第一函數(shù)字符與所述第一行編號(hào)得到所述原始指令的翻譯結(jié)果。
13、可選地,上述樹(shù)形數(shù)據(jù)結(jié)構(gòu)處理模塊還用于:
14、在所述第一符號(hào)表文件的樹(shù)形數(shù)據(jù)結(jié)構(gòu)的根節(jié)點(diǎn)中檢索出與所述目標(biāo)地址匹配的第一參考地址,其中,所述第一參考地址為所述目標(biāo)地址所在的地址范圍的起始地址;
15、在所述第一參考地址關(guān)聯(lián)的分支節(jié)點(diǎn)中檢索出與所述目標(biāo)地址匹配的第二參考地址;
16、將所述第二參考地址關(guān)聯(lián)的葉子節(jié)點(diǎn)確定為目標(biāo)節(jié)點(diǎn)。
17、可選地,上述樹(shù)形數(shù)據(jù)結(jié)構(gòu)處理模塊還用于:
18、確定所述第一參考地址在所述根節(jié)點(diǎn)中的元素位置,根據(jù)所述元素位置確定節(jié)點(diǎn)地址偏移;
19、獲取所述根節(jié)點(diǎn)關(guān)聯(lián)的葉子節(jié)點(diǎn)的節(jié)點(diǎn)起始地址,根據(jù)所述節(jié)點(diǎn)起始地址與所述節(jié)點(diǎn)地址偏移確定目的節(jié)點(diǎn)地址;
20、在所述目的節(jié)點(diǎn)地址對(duì)應(yīng)的分支節(jié)點(diǎn)中檢索出與所述目標(biāo)地址匹配的第二參考地址。
21、可選地,上述樹(shù)形數(shù)據(jù)結(jié)構(gòu)處理模塊還用于:
22、在所述指令翻譯請(qǐng)求中獲取所述指令翻譯請(qǐng)求所來(lái)自的操作系統(tǒng)的系統(tǒng)標(biāo)識(shí),根據(jù)所述系統(tǒng)標(biāo)識(shí)確定所述操作系統(tǒng)對(duì)應(yīng)的內(nèi)存塊大??;
23、根據(jù)所述元素位置與所述內(nèi)存塊大小的乘積確定節(jié)點(diǎn)地址偏移。
24、可選地,上述符號(hào)字典處理模塊還用于:
25、獲取標(biāo)記文件,根據(jù)所述目標(biāo)地址在所述標(biāo)記文件中檢索得到符號(hào)字典索引,其中,所述符號(hào)字典索引用于指示所述目標(biāo)地址所在的地址范圍;
26、根據(jù)所述第一符號(hào)表文件標(biāo)識(shí)以及所述符號(hào)字典索引在分片存儲(chǔ)的多個(gè)第一候選字典中獲取第一符號(hào)字典。
27、可選地,上述符號(hào)字典處理模塊還用于:
28、獲取各個(gè)服務(wù)對(duì)象的服務(wù)對(duì)象標(biāo)識(shí)、各個(gè)所述服務(wù)對(duì)象的第一原始字典以及所述第一符號(hào)表文件標(biāo)識(shí);
29、將所述第一原始字典劃分為多個(gè)所述第一候選字典,為各個(gè)所述第一候選字典分配對(duì)應(yīng)的所述符號(hào)字典索引;
30、將所述標(biāo)記文件、所述第一符號(hào)表文件標(biāo)識(shí)、所述服務(wù)對(duì)象標(biāo)識(shí)、多個(gè)所述符號(hào)字典索引以及多個(gè)所述第一候選字典關(guān)聯(lián)存儲(chǔ)。
31、可選地,上述樹(shù)形數(shù)據(jù)結(jié)構(gòu)處理模塊還用于:
32、根據(jù)所述第一符號(hào)表文件標(biāo)識(shí)在本地磁盤(pán)中獲取第一符號(hào)表文件;
33、當(dāng)所述本地磁盤(pán)中不存在所述第一符號(hào)表文件時(shí),根據(jù)所述第一符號(hào)表文件標(biāo)識(shí)在網(wǎng)絡(luò)文件系統(tǒng)中獲取第一符號(hào)表文件;
34、當(dāng)所述網(wǎng)絡(luò)文件系統(tǒng)中不存在所述第一符號(hào)表文件時(shí),根據(jù)所述第一符號(hào)表文件標(biāo)識(shí)在云對(duì)象存儲(chǔ)中獲取第一符號(hào)表文件。
35、可選地,上述樹(shù)形數(shù)據(jù)結(jié)構(gòu)處理模塊還用于:
36、確定所述第一符號(hào)表文件的使用熱度;
37、根據(jù)所述使用熱度調(diào)整所述第一符號(hào)表文件的存儲(chǔ)位置,其中,所述存儲(chǔ)位置包括所述本地磁盤(pán)、所述網(wǎng)絡(luò)文件系統(tǒng)以及所述云對(duì)象存儲(chǔ),所述本地磁盤(pán)、所述網(wǎng)絡(luò)文件系統(tǒng)以及所述云對(duì)象存儲(chǔ)所對(duì)應(yīng)的所述使用熱度依次降低。
38、可選地,上述指令翻譯裝置還包括符號(hào)表文件制作模塊,符號(hào)表文件制作模塊用于:
39、獲取原始符號(hào)表文件,在所述原始符號(hào)表文件中提取出多個(gè)所述目標(biāo)地址、各個(gè)所述目標(biāo)地址對(duì)應(yīng)的所述第一函數(shù)字符以及各個(gè)所述第一函數(shù)字符對(duì)應(yīng)的所述第一行編號(hào);
40、基于多個(gè)所述目標(biāo)地址以及所述符號(hào)偏移創(chuàng)建所述樹(shù)形數(shù)據(jù)結(jié)構(gòu),為所述第一函數(shù)字符分配所述函數(shù)編號(hào),基于所述符號(hào)偏移、所述函數(shù)編號(hào)以及所述第一行編號(hào)創(chuàng)建所述第一符號(hào)信息,將所述樹(shù)形數(shù)據(jù)結(jié)構(gòu)以及所述第一符號(hào)信息封裝為所述第一符號(hào)表文件;
41、基于所述函數(shù)編號(hào)以及所述第一函數(shù)字符創(chuàng)建所述第一符號(hào)字典。
42、可選地,
43、上述請(qǐng)求處理模塊還用于當(dāng)所述指令翻譯請(qǐng)求攜帶有待翻譯指令時(shí),在所述指令翻譯請(qǐng)求中獲取所述待翻譯指令與第二符號(hào)表文件標(biāo)識(shí),其中,所述待翻譯指令包括待翻譯字符以及所述原始指令中除了第二函數(shù)字符以外的原始指令字符,所述待翻譯字符為所述第二函數(shù)字符對(duì)應(yīng)的翻譯前的字符;
44、上述樹(shù)形數(shù)據(jù)結(jié)構(gòu)處理模塊還用于根據(jù)所述第二符號(hào)表文件標(biāo)識(shí)獲取第二符號(hào)表文件,根據(jù)所述待翻譯字符在所述第二符號(hào)表文件的第二符號(hào)信息中檢索得到所述待翻譯字符在第二符號(hào)字典中的第二行編號(hào),其中,所述第二符號(hào)信息用于存儲(chǔ)所述待翻譯字符以及所述第二行編號(hào)之間的映射關(guān)系;
45、上述符號(hào)字典處理模塊還用于根據(jù)所述待翻譯字符獲取所述第二符號(hào)字典,根據(jù)所述第二行編號(hào)在所述第二符號(hào)字典中獲取所述第二函數(shù)字符以及所述原始指令所在的第三行編號(hào)作為所述待翻譯指令的翻譯結(jié)果。
46、可選地,上述符號(hào)字典處理模塊還用于:
47、根據(jù)所述第二符號(hào)表文件標(biāo)識(shí)確定分片存儲(chǔ)的多個(gè)第二候選字典,將所述待翻譯字符與各個(gè)所述第二候選字典對(duì)應(yīng)的指令索引進(jìn)行匹配,其中,所述指令索引包括索引字符;
48、當(dāng)不存在與所述待翻譯字符相匹配的所述指令索引時(shí),將各個(gè)所述索引字符按照預(yù)設(shè)順序進(jìn)行排序,得到索引字符序列;
49、確定所述待翻譯字符在所述索引字符序列中相鄰的第一字符和第二字符,其中,所述第一字符在所述索引字符序列中的排名小于所述第二字符在所述索引字符序列中的排名;
50、獲取所述第一字符所在的所述指令索引對(duì)應(yīng)的所述第二候選字典作為所述第二符號(hào)字典。
51、可選地,上述符號(hào)字典處理模塊還用于:
52、獲取各個(gè)服務(wù)對(duì)象的服務(wù)對(duì)象標(biāo)識(shí)、各個(gè)所述服務(wù)對(duì)象的第二原始字典以及所述第二符號(hào)表文件標(biāo)識(shí),在所述第二原始字典中獲取多個(gè)所述第二函數(shù)字符以及各個(gè)所述第二函數(shù)字符對(duì)應(yīng)的所述第二行編號(hào);
53、創(chuàng)建第二候選字典,依次將所述第二函數(shù)字符以及對(duì)應(yīng)的所述第二行編號(hào)作為條目寫(xiě)入至所述第二候選字典,直至所述第二候選字典所占用的存儲(chǔ)空間達(dá)到預(yù)設(shè)閾值,創(chuàng)建下一個(gè)所述第二候選字典繼續(xù)進(jìn)行所述條目的寫(xiě)入,直至將所有的所述第二函數(shù)字符以及對(duì)應(yīng)的所述第二行編號(hào)寫(xiě)入完畢,為各個(gè)所述第二候選字典分配對(duì)應(yīng)的所述指令索引;
54、將所述第二符號(hào)表文件標(biāo)識(shí)、所述服務(wù)對(duì)象標(biāo)識(shí)、多個(gè)所述指令索引以及多個(gè)所述第二候選字典關(guān)聯(lián)存儲(chǔ)。
55、另一方面,本公開(kāi)實(shí)施例還提供了一種電子設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器存儲(chǔ)有計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)上述的指令翻譯方法。
56、另一方面,本公開(kāi)實(shí)施例還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行實(shí)現(xiàn)上述的指令翻譯方法。
57、另一方面,本公開(kāi)實(shí)施例還提供了一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序,該計(jì)算機(jī)程序存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。計(jì)算機(jī)設(shè)備的處理器從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)讀取該計(jì)算機(jī)程序,處理器執(zhí)行該計(jì)算機(jī)程序,使得該計(jì)算機(jī)設(shè)備執(zhí)行實(shí)現(xiàn)上述的指令翻譯方法。
58、本公開(kāi)實(shí)施例至少包括以下有益效果:通過(guò)接收指令翻譯請(qǐng)求,當(dāng)指令翻譯請(qǐng)求攜帶有原始指令的目標(biāo)地址時(shí),在指令翻譯請(qǐng)求中獲取目標(biāo)地址,獲取第一符號(hào)表文件,根據(jù)目標(biāo)地址在第一符號(hào)表文件的樹(shù)形數(shù)據(jù)結(jié)構(gòu)中檢索出目標(biāo)節(jié)點(diǎn),從目標(biāo)節(jié)點(diǎn)中讀取符號(hào)偏移,根據(jù)符號(hào)偏移在第一符號(hào)表文件的第一符號(hào)信息中檢索出目標(biāo)地址的函數(shù)編號(hào)以及原始指令的第一行編號(hào),由于第一符號(hào)表文件中包含了樹(shù)形數(shù)據(jù)結(jié)構(gòu)和第一符號(hào)信息,相較于相關(guān)技術(shù)中的符號(hào)表文件進(jìn)行了內(nèi)容重構(gòu),能夠基于樹(shù)形數(shù)據(jù)結(jié)構(gòu)以及第一符號(hào)信息將目標(biāo)地址、函數(shù)編號(hào)與第一行編號(hào)建立映射關(guān)系,實(shí)現(xiàn)文件體積的縮減,在此基礎(chǔ)上,再根據(jù)目標(biāo)地址獲取第一符號(hào)字典,根據(jù)函數(shù)編號(hào)在第一符號(hào)字典中檢索出原始指令的第一函數(shù)字符,基于第一函數(shù)字符與第一行編號(hào)得到原始指令的翻譯結(jié)果,上述翻譯過(guò)程相較于采用二分查找法的方式優(yōu)化了檢索過(guò)程,能夠降低指令翻譯時(shí)的時(shí)間復(fù)雜度,提升指令翻譯效率。
59、本公開(kāi)的其他特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書(shū)中闡述,并且,部分地從說(shuō)明書(shū)中變得顯而易見(jiàn),或者通過(guò)實(shí)施本公開(kāi)而了解。