[發(fā)明專利]一種熱補(bǔ)丁方法及設(shè)備在審
| 申請(qǐng)?zhí)枺?/td> | 201310337461.3 | 申請(qǐng)日: | 2013-08-05 |
| 公開(kāi)(公告)號(hào): | CN103399775A | 公開(kāi)(公告)日: | 2013-11-20 |
| 發(fā)明(設(shè)計(jì))人: | 楊磊;熊怡;支晶晶 | 申請(qǐng)(專利權(quán))人: | 北京華為數(shù)字技術(shù)有限公司 |
| 主分類號(hào): | G06F9/45 | 分類號(hào): | G06F9/45 |
| 代理公司: | 深圳中一專利商標(biāo)事務(wù)所 44237 | 代理人: | 張全文 |
| 地址: | 100085 *** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 補(bǔ)丁 方法 設(shè)備 | ||
技術(shù)領(lǐng)域
本發(fā)明實(shí)施例屬于通信領(lǐng)域,尤其涉及一種熱補(bǔ)丁方法及設(shè)備。
背景技術(shù)
熱補(bǔ)丁技術(shù)是一種能夠在不中斷業(yè)務(wù)運(yùn)行的情況下,完成產(chǎn)品軟件缺陷修復(fù)的技術(shù)。在熱補(bǔ)丁中常用的跳轉(zhuǎn)指令有短跳轉(zhuǎn)指令,短跳轉(zhuǎn)指令一條指令能夠完成跳轉(zhuǎn)動(dòng)作,但是短跳轉(zhuǎn)指令跳轉(zhuǎn)的可跨越空間存儲(chǔ)位置小于32兆字節(jié),與短跳轉(zhuǎn)相對(duì)的有長(zhǎng)跳轉(zhuǎn)指令,長(zhǎng)跳轉(zhuǎn)指令需要借助寄存器輔助完成跳轉(zhuǎn)動(dòng)作,長(zhǎng)跳轉(zhuǎn)指令需要多條指令來(lái)完成。
由于熱補(bǔ)丁的實(shí)現(xiàn)需要進(jìn)行指令的替換,指令的替換是指將位于函數(shù)開(kāi)頭的指令替換成跳轉(zhuǎn)指令,跳轉(zhuǎn)到補(bǔ)丁區(qū),而在具體的指令替換中,指令的替換跟操作系統(tǒng)、CPU(Central?Processing?Unit)中央處理器的體系結(jié)構(gòu)強(qiáng)密切相關(guān)。
早期的設(shè)備主要選型VXWORKS嵌入式實(shí)時(shí)操作系統(tǒng),PPC(PowerPC)精簡(jiǎn)指令集計(jì)算機(jī)微處理器架構(gòu)的單核處理器。在這種硬件條件下進(jìn)行熱補(bǔ)丁處理時(shí),不需要過(guò)多的考慮并發(fā)性及不同軟、硬件架構(gòu)帶來(lái)的差異。然而隨著軟、硬件技術(shù)的發(fā)展,LINUX等操作系統(tǒng)更多的開(kāi)始應(yīng)用,處理器也從單核發(fā)展到多核,同時(shí)包含如MIPS(Microprocessor?without?Interlocked?Pipeline?Stages)精簡(jiǎn)指令集處理器架構(gòu)、X86等多種指令集架構(gòu)。這時(shí)候,熱補(bǔ)丁處理面臨多操作系統(tǒng)、多硬件系統(tǒng)架構(gòu)、大量任務(wù)并發(fā)處理的問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提供一種熱補(bǔ)丁方法,旨在解決現(xiàn)有的技術(shù)方案在多種處理器架構(gòu)、不同操作系統(tǒng)情況下無(wú)法提供統(tǒng)一的熱補(bǔ)丁解決方案的問(wèn)題。
第一方面,本發(fā)明提供了一種熱補(bǔ)丁方法,所述方法包括:
對(duì)編譯器進(jìn)行擴(kuò)展,新增編譯選項(xiàng);
當(dāng)進(jìn)行編譯時(shí),通過(guò)擴(kuò)展編譯器的新增編譯選項(xiàng)為函數(shù)插入自定義指令序列;
當(dāng)進(jìn)行熱補(bǔ)丁處理時(shí),先修改自定義指令序列的長(zhǎng)跳轉(zhuǎn)指令,使長(zhǎng)跳轉(zhuǎn)指令指向跳轉(zhuǎn)的補(bǔ)丁區(qū),之后修改短跳轉(zhuǎn)指令使短跳轉(zhuǎn)指令指向修改后的長(zhǎng)跳轉(zhuǎn)指令。
在第一方面的第一種實(shí)現(xiàn)方式中,所述通過(guò)擴(kuò)展編譯器為函數(shù)插入自定義指令序列包括:
在緊臨所述函數(shù)頭部之前插入自定義指令序列;或
在所述函數(shù)頭部插入所述自定義指令序列。
結(jié)合第一方面,在第一方面的第二種實(shí)現(xiàn)方式中,所述自定義指令序列包括:
空指令或所述長(zhǎng)跳轉(zhuǎn)指令。
結(jié)合第一方面,在第一方面的第三種實(shí)現(xiàn)方式中,所述修改短跳轉(zhuǎn)指令包括:
修改在所述函數(shù)中所述自定義指令序列內(nèi)的短跳轉(zhuǎn)指令;或
修改在所述函數(shù)中所述自定義指令序列外的短跳轉(zhuǎn)指令。
第二方面,本發(fā)明提供了一種熱補(bǔ)丁設(shè)備,所述設(shè)備包括:
編譯器擴(kuò)展單元,用于對(duì)編譯器進(jìn)行擴(kuò)展;
編譯單元,用于當(dāng)進(jìn)行編譯時(shí),通過(guò)擴(kuò)展的所述編譯器為函數(shù)插入自定義指令序列;
熱補(bǔ)丁單元,用于當(dāng)進(jìn)行熱補(bǔ)丁處理時(shí),先修改所述自定義指令序列的長(zhǎng)跳轉(zhuǎn)指令,使所述長(zhǎng)跳轉(zhuǎn)指令指向跳轉(zhuǎn)的補(bǔ)丁區(qū),之后修改短跳轉(zhuǎn)指令使所述短跳轉(zhuǎn)指令指向修改后的所述長(zhǎng)跳轉(zhuǎn)指令。
在第二方面的第一種實(shí)現(xiàn)方式中,所述編譯單元插入自定義指令序列包括:
在緊臨所述函數(shù)頭部之前插入所述自定義指令序列;或
在所述函數(shù)頭部插入所述自定義指令序列。
結(jié)合第二方面,在第二方面的第二種實(shí)現(xiàn)方式中,所述編譯單元插入的自定義指令序列包括:
空指令或所述長(zhǎng)跳轉(zhuǎn)指令。
結(jié)合第二方面,在第二方面的第三種實(shí)現(xiàn)方式中,修改短跳轉(zhuǎn)指令具體包括修改;
修改在所述函數(shù)中自定義指令序列內(nèi)的短跳轉(zhuǎn)指令;或
修改在所述函數(shù)中自定義指令序列外的短跳轉(zhuǎn)指令。
在本發(fā)明提供的技術(shù)方案中,通過(guò)擴(kuò)展編譯器對(duì)函數(shù)插入自定義指令序列,以實(shí)現(xiàn)軟、硬件架構(gòu)通用的熱補(bǔ)丁機(jī)制,同時(shí)也與現(xiàn)有成熟的跳轉(zhuǎn)島熱補(bǔ)丁方式實(shí)現(xiàn)兼容,并能對(duì)存在并發(fā)處理情況進(jìn)行有效的控制。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例一提供的一種熱補(bǔ)丁方法的流程圖;
圖2是本發(fā)明實(shí)施例二提供的一種熱補(bǔ)丁方法的流程圖;
圖3是本發(fā)明實(shí)施例三提供的一種熱補(bǔ)丁設(shè)備的結(jié)構(gòu)框圖;
圖4是本發(fā)明實(shí)施例四提供的一種熱補(bǔ)丁設(shè)備的結(jié)構(gòu)圖。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京華為數(shù)字技術(shù)有限公司,未經(jīng)北京華為數(shù)字技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310337461.3/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 一種數(shù)據(jù)庫(kù)讀寫(xiě)分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)
- 傳感設(shè)備、檢索設(shè)備和中繼設(shè)備
- 簽名設(shè)備、檢驗(yàn)設(shè)備、驗(yàn)證設(shè)備、加密設(shè)備及解密設(shè)備
- 色彩調(diào)整設(shè)備、顯示設(shè)備、打印設(shè)備、圖像處理設(shè)備
- 驅(qū)動(dòng)設(shè)備、定影設(shè)備和成像設(shè)備
- 發(fā)送設(shè)備、中繼設(shè)備和接收設(shè)備
- 定點(diǎn)設(shè)備、接口設(shè)備和顯示設(shè)備
- 傳輸設(shè)備、DP源設(shè)備、接收設(shè)備以及DP接受設(shè)備
- 設(shè)備綁定方法、設(shè)備、終端設(shè)備以及網(wǎng)絡(luò)側(cè)設(shè)備
- 設(shè)備、主設(shè)備及從設(shè)備
- 設(shè)備向設(shè)備轉(zhuǎn)發(fā)





