System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 亚洲AV综合永久无码精品天堂,无码国产精品一区二区免费vr,在线高清无码A.
  • 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種用戶態(tài)二進(jìn)制程序指令集兼容方法和系統(tǒng)及設(shè)備技術(shù)方案

    技術(shù)編號(hào):44390341 閱讀:4 留言:0更新日期:2025-02-25 10:05
    本發(fā)明專利技術(shù)涉及二進(jìn)制程序兼容性技術(shù)領(lǐng)域,提供一種用戶態(tài)二進(jìn)制程序指令集兼容方法和系統(tǒng)及設(shè)備,包括:在構(gòu)建二進(jìn)制程序的編譯階段,初始化alt?instr指令替換環(huán)境并向源代碼中插入alt?instr指令;在構(gòu)建二進(jìn)制程序的鏈接階段,插入多指令集特性節(jié),在執(zhí)行構(gòu)建的二進(jìn)制程序過程中,對alt?instr構(gòu)造函數(shù)進(jìn)行優(yōu)先級(jí)配置;通過執(zhí)行優(yōu)先級(jí)配置的alt?instr構(gòu)造函數(shù)遍歷多指令集特性節(jié)的alt?instr指令,判斷是否進(jìn)行指令替換,當(dāng)需要進(jìn)行指令替換時(shí),先進(jìn)行指令替換再開始執(zhí)行程序主函數(shù)。根據(jù)本發(fā)明專利技術(shù)的用戶態(tài)二進(jìn)制程序指令集兼容方法和系統(tǒng)及設(shè)備,可以實(shí)現(xiàn)支持指令集的CO?RE二進(jìn)制程序,用于增強(qiáng)二進(jìn)制程序?qū)Σ煌珻PU指令集的兼容性。

    【技術(shù)實(shí)現(xiàn)步驟摘要】

    本專利技術(shù)涉及二進(jìn)制程序兼容性,尤其涉及一種用戶態(tài)二進(jìn)制程序指令集兼容方法和系統(tǒng)及設(shè)備。


    技術(shù)介紹

    1、在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,操作系統(tǒng)是管理和控制計(jì)算機(jī)硬件與軟件資源的核心程序,它由軟件和配置兩大部分構(gòu)成。軟件部分中,可執(zhí)行二進(jìn)制程序是操作系統(tǒng)執(zhí)行任務(wù)的關(guān)鍵組成部分。這些程序由編譯器從源代碼編譯生成,而編譯過程依賴于特定的架構(gòu)指令集。通常情況下,編譯器使用的是默認(rèn)的指令集,或者開發(fā)者可以通過編譯參數(shù)指定特定的指令集。由此產(chǎn)生的可執(zhí)行二進(jìn)制程序包含了與特定cpu架構(gòu)相對應(yīng)的指令,這些指令只能在支持相應(yīng)指令集架構(gòu)的cpu上運(yùn)行。

    2、在特定的cpu架構(gòu)如x86或arm等架構(gòu)中,高版本的指令集往往能夠向后兼容低版本的指令集。例如,基于armv8.2-a指令集開發(fā)的軟件能夠在支持armv8.3-a指令集的cpu上運(yùn)行,但反之則不成立。這種兼容性使得軟件能夠在不同版本的cpu指令集上運(yùn)行,但同時(shí)也帶來了挑戰(zhàn):當(dāng)運(yùn)行環(huán)境的cpu指令集版本低于二進(jìn)制程序所需的cpu指令集時(shí),程序可能會(huì)在運(yùn)行過程中遇到非法指令錯(cuò)誤,導(dǎo)致程序崩潰。

    3、為了提高軟件的兼容性,開發(fā)者在構(gòu)建軟件時(shí)通常會(huì)選擇一個(gè)較低版本的指令集,這樣做可以使軟件在低版本和高版本指令集的運(yùn)行環(huán)境中都能執(zhí)行。然而,支持更高版本指令集的cpu通常包含更多的指令,這些指令在性能或能效方面通常優(yōu)于軟件實(shí)現(xiàn)的功能。如果選擇高版本指令集作為編譯環(huán)境,生成的二進(jìn)制程序能夠充分利用這些硬件特性,但代價(jià)是犧牲了在低版本指令集環(huán)境下的兼容性。相反,如果在較低版本指令集的編譯環(huán)境下構(gòu)建軟件,雖然能夠保證在高版本指令集環(huán)境下的運(yùn)行,但卻無法利用高版本cpu的硬件特性。

    4、在實(shí)際生產(chǎn)中,這種兼容性問題尤為突出。例如,特定版本的chromium軟件在鯤鵬920上運(yùn)行時(shí)出現(xiàn)了非法指令錯(cuò)誤,原因在于chromium軟件包含了paciasp指令,該指令屬于armv8.3-a指令集,而鯤鵬920僅支持armv8.2-a指令集。這一問題導(dǎo)致該版本chromium軟件在所有不支持paciasp指令的arm64環(huán)境下都無法運(yùn)行。問題的根源在于該版本chromium軟件是在支持armv8.3-a指令集的環(huán)境中編譯的,因此其二進(jìn)制程序中包含了armv8.3-a特有的paciasp指令。

    5、綜上所述,從兼容性和穩(wěn)定性的角度出發(fā),開發(fā)者通常會(huì)選擇在較低版本的指令集環(huán)境下編譯構(gòu)建軟件,以提高軟件的兼容性和穩(wěn)定性。然而,這種做法限制了軟件充分利用最新硬件特性的能力,從而在性能和能效方面造成了潛在的損失。

    6、因此,如何提供一種能夠在不同指令集版本之間靈活切換,同時(shí)保持高性能和高兼容性的軟件構(gòu)建和運(yùn)行機(jī)制,成為亟待解決的技術(shù)問題。


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

    1、有鑒于此,為了克服現(xiàn)有技術(shù)的不足,本專利技術(shù)旨在提供一種用戶態(tài)二進(jìn)制程序指令集兼容方法和系統(tǒng)及設(shè)備。

    2、根據(jù)本專利技術(shù)的第一方面,提供一種用戶態(tài)二進(jìn)制程序指令集兼容方法,該方法包括:

    3、在構(gòu)建二進(jìn)制程序的編譯階段,初始化alt?instr指令替換環(huán)境并向源代碼中插入alt?instr指令;

    4、在構(gòu)建二進(jìn)制程序的鏈接階段,插入多指令集特性節(jié),在執(zhí)行構(gòu)建的二進(jìn)制程序過程中,對alt?instr構(gòu)造函數(shù)進(jìn)行優(yōu)先級(jí)配置;

    5、通過執(zhí)行優(yōu)先級(jí)配置的alt?instr構(gòu)造函數(shù)遍歷多指令集特性節(jié)的alt?instr指令,判斷是否進(jìn)行指令替換,當(dāng)需要進(jìn)行指令替換時(shí),先進(jìn)行指令替換再開始執(zhí)行程序主函數(shù)。

    6、優(yōu)選地,本專利技術(shù)的用戶態(tài)二進(jìn)制程序指令集兼容方法中,初始化alt?instr指令替換環(huán)境并向源代碼中插入alt?instr指令,包括:獲取并編譯源代碼,添加alt?instr編譯參數(shù)和alt?instr構(gòu)造函數(shù),通過alt?instr編譯參數(shù)向源代碼中插入alt?instr指令。

    7、優(yōu)選地,本專利技術(shù)的用戶態(tài)二進(jìn)制程序指令集兼容方法中,初始化alt?instr指令替換環(huán)境并向源代碼中插入alt?instr指令,還包括:通過對源代碼進(jìn)行硬編碼,向源代碼中插入alt?instr指令。

    8、優(yōu)選地,本專利技術(shù)的用戶態(tài)二進(jìn)制程序指令集兼容方法中,多指令集特性節(jié)用于存放alt?instr元數(shù)據(jù)和指令并標(biāo)記alt?instr元數(shù)據(jù)和指令的位置信息。

    9、優(yōu)選地,本專利技術(shù)的用戶態(tài)二進(jìn)制程序指令集兼容方法中,在執(zhí)行構(gòu)建的二進(jìn)制程序過程中,對alt?instr構(gòu)造函數(shù)進(jìn)行優(yōu)先級(jí)配置,包括:為alt?instr構(gòu)造函數(shù)配置constructor?隱藏優(yōu)先級(jí),所述constructor?隱藏優(yōu)先級(jí)高于用戶可編碼的其他constructor優(yōu)先級(jí)。

    10、優(yōu)選地,本專利技術(shù)的用戶態(tài)二進(jìn)制程序指令集兼容方法中,通過執(zhí)行優(yōu)先級(jí)配置的alt?instr構(gòu)造函數(shù)遍歷多指令集特性節(jié)的alt?instr指令,包括:執(zhí)行優(yōu)先級(jí)配置的altinstr構(gòu)造函數(shù),根據(jù)alt?instr元數(shù)據(jù)和指令的位置信息標(biāo)記,遍歷多指令集特性節(jié)中的alt?instr指令。

    11、優(yōu)選地,本專利技術(shù)的用戶態(tài)二進(jìn)制程序指令集兼容方法中,判斷是否進(jìn)行指令替換,包括:將運(yùn)行環(huán)境的cpu特性與alt?instr指令的cpu特性進(jìn)行匹配,當(dāng)運(yùn)行環(huán)境的cpu特性與alt?instr指令的cpu特性相匹配,判定需要進(jìn)行指令替換;當(dāng)運(yùn)行環(huán)境的cpu特性與altinstr指令的cpu特性不匹配,判定不需要進(jìn)行指令替換。

    12、優(yōu)選地,本專利技術(shù)的用戶態(tài)二進(jìn)制程序指令集兼容方法中,當(dāng)需要進(jìn)行指令替換時(shí),先進(jìn)行指令替換再開始執(zhí)行程序主函數(shù),包括:當(dāng)替換后指令的長度小于替換前指令的長度時(shí),采用空指令對替換后指令的長度進(jìn)行補(bǔ)齊。

    13、根據(jù)本專利技術(shù)的第二方面,提供一種用戶態(tài)二進(jìn)制程序指令集兼容系統(tǒng),該系統(tǒng)包括指令集兼容服務(wù)端,所述指令集兼容服務(wù)端用于:在構(gòu)建二進(jìn)制程序的編譯階段,初始化alt?instr指令替換環(huán)境并向源代碼中插入alt?instr指令;在構(gòu)建二進(jìn)制程序的鏈接階段,插入多指令集特性節(jié),在執(zhí)行構(gòu)建的二進(jìn)制程序過程中,對alt?instr構(gòu)造函數(shù)進(jìn)行優(yōu)先級(jí)配置;通過執(zhí)行優(yōu)先級(jí)配置的alt?instr構(gòu)造函數(shù)遍歷多指令集特性節(jié)的alt?instr指令,判斷是否進(jìn)行指令替換,當(dāng)需要進(jìn)行指令替換時(shí),先進(jìn)行指令替換再開始執(zhí)行程序主函數(shù)。

    14、根據(jù)本專利技術(shù)的第三方面,提供一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)本專利技術(shù)第一方面所述的方法。

    15、本專利技術(shù),通過用戶態(tài)二進(jìn)制程序指令集兼容方法和系統(tǒng)及設(shè)備,在軟件構(gòu)建階段,通過在鏈接腳本中插入?alt?instr相關(guān)節(jié),實(shí)現(xiàn)在程序中遍歷?alt?instr數(shù)據(jù)結(jié)構(gòu);在編譯階段引入隱藏的最高優(yōu)先級(jí)構(gòu)造函數(shù),并使用此最高優(yōu)先級(jí)構(gòu)造函數(shù)實(shí)現(xiàn)二進(jìn)制程序指令替換;在程序運(yùn)行前,在構(gòu)造函數(shù)中通過寫/proc/self/mem進(jìn)行指令替換,用以支持二進(jìn)制程序針對指令集架構(gòu)本文檔來自技高網(wǎng)...

    【技術(shù)保護(hù)點(diǎn)】

    1.一種用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,所述方法包括:

    2.根據(jù)權(quán)利要求1所述的用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,初始化altinstr指令替換環(huán)境并向源代碼中插入alt?instr指令,包括:獲取并編譯源代碼,添加altinstr編譯參數(shù)和alt?instr構(gòu)造函數(shù),通過alt?instr編譯參數(shù)向源代碼中插入alt?instr指令。

    3.根據(jù)權(quán)利要求1所述的用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,初始化altinstr指令替換環(huán)境并向源代碼中插入alt?instr指令,還包括:通過對源代碼進(jìn)行硬編碼,向源代碼中插入alt?instr指令。

    4.根據(jù)權(quán)利要求1所述的用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,多指令集特性節(jié)用于存放alt?instr元數(shù)據(jù)和指令并標(biāo)記alt?instr元數(shù)據(jù)和指令的位置信息。

    5.根據(jù)權(quán)利要求1所述的用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,在執(zhí)行構(gòu)建的二進(jìn)制程序過程中,對alt?instr構(gòu)造函數(shù)進(jìn)行優(yōu)先級(jí)配置,包括:為alt?instr構(gòu)造函數(shù)配置constructor?隱藏優(yōu)先級(jí),所述constructor?隱藏優(yōu)先級(jí)高于用戶可編碼的其他constructor優(yōu)先級(jí)。

    6.根據(jù)權(quán)利要求1所述的用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,通過執(zhí)行優(yōu)先級(jí)配置的alt?instr構(gòu)造函數(shù)遍歷多指令集特性節(jié)的alt?instr指令,包括:執(zhí)行優(yōu)先級(jí)配置的alt?instr構(gòu)造函數(shù),根據(jù)alt?instr元數(shù)據(jù)和指令的位置信息標(biāo)記,遍歷多指令集特性節(jié)中的alt?instr指令。

    7.根據(jù)權(quán)利要求1所述的用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,判斷是否進(jìn)行指令替換,包括:將運(yùn)行環(huán)境的CPU特性與alt?instr指令的CPU特性進(jìn)行匹配,當(dāng)運(yùn)行環(huán)境的CPU特性與alt?instr指令的CPU特性相匹配,判定需要進(jìn)行指令替換;當(dāng)運(yùn)行環(huán)境的CPU特性與alt?instr指令的CPU特性不匹配,判定不需要進(jìn)行指令替換。

    8.根據(jù)權(quán)利要求1所述的用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,當(dāng)需要進(jìn)行指令替換時(shí),先進(jìn)行指令替換再開始執(zhí)行程序主函數(shù),包括:當(dāng)替換后指令的長度小于替換前指令的長度時(shí),采用空指令對替換后指令的長度進(jìn)行補(bǔ)齊。

    9.一種用戶態(tài)二進(jìn)制程序指令集兼容系統(tǒng),其特征在于,所述系統(tǒng)包括指令集兼容服務(wù)端,所述指令集兼容服務(wù)端用于:在構(gòu)建二進(jìn)制程序的編譯階段,初始化alt?instr指令替換環(huán)境并向源代碼中插入alt?instr指令;在構(gòu)建二進(jìn)制程序的鏈接階段,插入多指令集特性節(jié),在執(zhí)行構(gòu)建的二進(jìn)制程序過程中,對alt?instr構(gòu)造函數(shù)進(jìn)行優(yōu)先級(jí)配置;通過執(zhí)行優(yōu)先級(jí)配置的alt?instr構(gòu)造函數(shù)遍歷多指令集特性節(jié)的alt?instr指令,判斷是否進(jìn)行指令替換,當(dāng)需要進(jìn)行指令替換時(shí),先進(jìn)行指令替換再開始執(zhí)行程序主函數(shù)。

    10.一種計(jì)算機(jī)設(shè)備,其特征在于,其特征在于,所述計(jì)算機(jī)設(shè)備包括存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)權(quán)利要求1-8中任一項(xiàng)所述方法的步驟。

    ...

    【技術(shù)特征摘要】

    1.一種用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,所述方法包括:

    2.根據(jù)權(quán)利要求1所述的用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,初始化altinstr指令替換環(huán)境并向源代碼中插入alt?instr指令,包括:獲取并編譯源代碼,添加altinstr編譯參數(shù)和alt?instr構(gòu)造函數(shù),通過alt?instr編譯參數(shù)向源代碼中插入alt?instr指令。

    3.根據(jù)權(quán)利要求1所述的用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,初始化altinstr指令替換環(huán)境并向源代碼中插入alt?instr指令,還包括:通過對源代碼進(jìn)行硬編碼,向源代碼中插入alt?instr指令。

    4.根據(jù)權(quán)利要求1所述的用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,多指令集特性節(jié)用于存放alt?instr元數(shù)據(jù)和指令并標(biāo)記alt?instr元數(shù)據(jù)和指令的位置信息。

    5.根據(jù)權(quán)利要求1所述的用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,在執(zhí)行構(gòu)建的二進(jìn)制程序過程中,對alt?instr構(gòu)造函數(shù)進(jìn)行優(yōu)先級(jí)配置,包括:為alt?instr構(gòu)造函數(shù)配置constructor?隱藏優(yōu)先級(jí),所述constructor?隱藏優(yōu)先級(jí)高于用戶可編碼的其他constructor優(yōu)先級(jí)。

    6.根據(jù)權(quán)利要求1所述的用戶態(tài)二進(jìn)制程序指令集兼容方法,其特征在于,通過執(zhí)行優(yōu)先級(jí)配置的alt?instr構(gòu)造函數(shù)遍歷多指令集特性節(jié)的alt?instr指令,包括:執(zhí)行優(yōu)先級(jí)配置的alt?instr構(gòu)造函數(shù),根據(jù)alt?instr元數(shù)據(jù)和指令的位置信息標(biāo)...

    【專利技術(shù)屬性】
    技術(shù)研發(fā)人員:榮濤,
    申請(專利權(quán))人:中電云計(jì)算技術(shù)有限公司,
    類型:發(fā)明
    國別省市:

    網(wǎng)友詢問留言 已有0條評(píng)論
    • 還沒有人留言評(píng)論。發(fā)表了對其他瀏覽者有用的留言會(huì)獲得科技券。

    1
    主站蜘蛛池模板: 亚洲AV无码精品蜜桃| 亚洲日韩VA无码中文字幕| 中文字幕乱码人妻无码久久| 亚洲成av人片在线观看天堂无码| 精品无码人妻久久久久久| 精品韩国亚洲av无码不卡区| 国产精品无码久久久久| 日韩人妻无码一区二区三区99| 精品久久久久久无码人妻热 | 国产亚洲?V无码?V男人的天堂| 熟妇无码乱子成人精品| 无码一区二区三区亚洲人妻| 无码国产精成人午夜视频不卡| 亚洲AV色吊丝无码| 国产激情无码一区二区app| 久久青青草原亚洲av无码| 一本大道在线无码一区| 亚洲国产成人无码AV在线| 亚洲av永久无码精品网站| 中文无码vs无码人妻| 久久久久无码专区亚洲av| 日韩AV无码精品一二三区| 亚洲中文字幕无码亚洲成A人片| 亚洲自偷自偷偷色无码中文| 国产精品亚洲αv天堂无码| 无码成人AAAAA毛片| 亚洲国产精品无码观看久久| 久久国产精品无码HDAV| 中文无码字幕中文有码字幕| 亚洲AV无码精品国产成人| 免费看无码自慰一区二区| 亚洲精品无码国产片| 亚洲heyzo专区无码综合| 精品成在人线AV无码免费看| 日韩精品无码一区二区中文字幕 | 亚洲国产精品无码久久一线| 亚洲日韩精品无码专区网站| 日韩乱码人妻无码中文视频| 亚洲成?v人片天堂网无码| 亚洲人成国产精品无码| 久久无码精品一区二区三区|