两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于向量中斷的編譯器的優(yōu)化方法

文檔序號(hào):9396735閱讀:317來(lái)源:國(guó)知局
基于向量中斷的編譯器的優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明創(chuàng)造屬于編譯器優(yōu)化領(lǐng)域,尤其是涉及一種基于向量中斷的編譯器的優(yōu)化方法。
【背景技術(shù)】
[0002]編譯器,是一種電腦程式,它將用某種高級(jí)編程語(yǔ)言寫成的源代碼(源語(yǔ)言),轉(zhuǎn)換成另一種編程語(yǔ)言(目標(biāo)語(yǔ)言)。編譯器從結(jié)構(gòu)體上分為前段、中端和后端,前端主要是詞法分析、語(yǔ)法分析階段,前端生成的賦值樹(shù)作為輸入,提供給中端作為輸入,中端包括中間代碼生成和優(yōu)化中間代碼,中端生成的中間代碼作為輸出,提供給后端作為輸入,后端將中間代碼編譯成匯編代碼。
[0003]中斷是處理器響應(yīng)外設(shè)請(qǐng)求的最常用的方式。處理器響應(yīng)中斷,本質(zhì)上是執(zhí)行中斷服務(wù)函數(shù),由于處理器響應(yīng)中斷后需要繼續(xù)進(jìn)行發(fā)生中斷時(shí)執(zhí)行的程序,就好像中斷沒(méi)有發(fā)生過(guò)一樣,所以處理器在執(zhí)行中斷服務(wù)函數(shù)之前需要保存中斷現(xiàn)場(chǎng),在執(zhí)行中斷服務(wù)函數(shù)之后還原中斷現(xiàn)場(chǎng)。
[0004]向量中斷,外部中斷控制器通過(guò)單獨(dú)一條連接到處理器的數(shù)據(jù)總線,在進(jìn)行中斷請(qǐng)求的同時(shí)告知處理器中斷服務(wù)函數(shù)的地址。
[0005]中斷響應(yīng)的一般流程為:
[0006](I)進(jìn)入中斷
[0007](2)保存中斷現(xiàn)場(chǎng)
[0008](3)跳轉(zhuǎn)到中斷服務(wù)函數(shù)
[0009](4)執(zhí)行中斷服務(wù)函數(shù)
[0010](5)從中斷服務(wù)函數(shù)返回
[0011](6)還原中斷現(xiàn)場(chǎng)
[0012](7)返回中斷現(xiàn)場(chǎng)
[0013]這里“保存中斷現(xiàn)場(chǎng)”,保存所有軟件可訪問(wèn)的寄存器,涉及大量store操作,“還原中斷現(xiàn)場(chǎng)”,還原所有軟件可訪問(wèn)的寄存器,涉及大量load操作,這里并沒(méi)有考慮到中斷服務(wù)函數(shù)中是否用到;“跳轉(zhuǎn)到中斷服務(wù)函數(shù)”和“從中斷服務(wù)函數(shù)返回”涉及兩次跳轉(zhuǎn)操作。更關(guān)鍵的是執(zhí)行中斷服務(wù)函數(shù)時(shí),作為函數(shù),編譯器會(huì)將其使用的需要保存的寄存器進(jìn)行保存,這點(diǎn)與“保存中斷現(xiàn)場(chǎng)”是重復(fù)保存操作,中斷響應(yīng)的一般流程無(wú)法充分體現(xiàn)向量中斷的優(yōu)勢(shì)。

【發(fā)明內(nèi)容】

[0014]有鑒于此,本發(fā)明創(chuàng)造旨在提出一種基于向量中斷的編譯器的優(yōu)化方法,以實(shí)現(xiàn)精簡(jiǎn)保存中斷現(xiàn)場(chǎng)、還原中斷現(xiàn)場(chǎng)過(guò)程中涉及的load、store次數(shù)同時(shí)中斷流程上的簡(jiǎn)化也減少了跳轉(zhuǎn)的次數(shù),從而提高處理器中斷響應(yīng)的速度。
[0015]為達(dá)到上述目的,本發(fā)明創(chuàng)造的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0016]基于向量中斷的編譯器的優(yōu)化方法,包括如下步驟:
[0017](I)通過(guò)預(yù)處理指令完成對(duì)向量中斷函數(shù)的定義;
[0018](2)編譯器在預(yù)編譯階段識(shí)別向量中斷函數(shù),分析中斷函數(shù)內(nèi)通用寄存器的使用情況;
[0019](3)根據(jù)處理器種類和編程模型確定需要保存的通用寄存器,及通用寄存器保存的順序;
[0020](4)根據(jù)處理器種類、編程模型和中斷服務(wù)函數(shù)的內(nèi)容確定需要保存的中斷現(xiàn)場(chǎng),特別是特殊寄存器;
[0021](5)根據(jù)保存寄存器的順序還原寄存器,還原中斷現(xiàn)場(chǎng);
[0022](6)中斷服務(wù)函數(shù)返回,同時(shí)也是中斷現(xiàn)場(chǎng)返回。
[0023]進(jìn)一步的,所述步驟(I)中采用關(guān)鍵字定義向量中斷函數(shù),便于編譯器前端解析,所述關(guān)鍵字包括#pragma、—attribute—。
[0024]進(jìn)一步的,所述步驟(2)中,編譯器前端在預(yù)編譯階段通過(guò)詞法分析、句法分析識(shí)別向量中斷函數(shù),通過(guò)預(yù)編譯得到的信息指導(dǎo)后續(xù)的寄存器分配過(guò)程;如果中斷服務(wù)函數(shù)使用這些寄存器,在中斷現(xiàn)場(chǎng)保存時(shí)進(jìn)行保存,否則不必保存。
[0025]進(jìn)一步的,所述步驟(3)中,保存通用寄存器遵循以下原則:
[0026](al)參數(shù)寄存器,用于函數(shù)調(diào)用時(shí)傳遞參數(shù)使用,根據(jù)編譯器分析結(jié)果確定寄存器是否保存,寄存器保存無(wú)順序要求,寄存器保存和還原順序?qū)?yīng);
[0027](a2)固定寄存器,根據(jù)編譯器分析結(jié)果確定寄存器是否保存,寄存器保存無(wú)順序要求,寄存器保存和還原順序?qū)?yīng);
[0028](a3)可跨越函數(shù)的寄存器,根據(jù)函數(shù)繁雜度和編程模型里面規(guī)定的寄存器調(diào)用的順序,編譯器選擇需要保存和還原的寄存器,寄存器保存和還原的順序?qū)?yīng)。
[0029]進(jìn)一步的,所述步驟¢)中編譯器將中斷服務(wù)函數(shù)結(jié)尾的指令編譯為中斷返回指令。
[0030]進(jìn)一步的,所述的步驟(3)、步驟(4)分析中斷服務(wù)函數(shù)中,對(duì)其子函數(shù)進(jìn)行分析,分析的原則如下:
[0031](bl)編譯器需要分析中斷服務(wù)函數(shù)及其子函數(shù)中寄存器使用情況,直到分析的函數(shù)不再有子函數(shù)為止;
[0032](b2)對(duì)于中斷服務(wù)函數(shù)及其子函數(shù),均分析參數(shù)通用寄存器、固定通用寄存器以及高級(jí)語(yǔ)言會(huì)影響的特殊寄存器;
[0033](b3)只分析中斷服務(wù)函數(shù)中可跨越函數(shù)的寄存器的使用情況,中斷服務(wù)函數(shù)的子函數(shù)中不用分析可跨越函數(shù)的寄存器的使用情況;
[0034](b4)在中斷函數(shù)定義時(shí)指定的特殊寄存器需要保存
[0035]相對(duì)于現(xiàn)有技術(shù),本發(fā)明創(chuàng)造所述的基于向量中斷的編譯器的優(yōu)化方法具有以下優(yōu)勢(shì):本發(fā)明將中斷現(xiàn)場(chǎng)保存在中斷服務(wù)函數(shù)內(nèi)進(jìn)行,考慮到中斷服務(wù)函數(shù)使用的通用寄存器的狀況,減少了 load/store操作,簡(jiǎn)化了流程,減少了跳轉(zhuǎn)到中斷服務(wù)函數(shù)和從中斷服務(wù)函數(shù)返回涉及到兩次跳轉(zhuǎn)操作,從而加快中斷函數(shù)執(zhí)行效率,提高處理器中斷響應(yīng)的速度。
【附圖說(shuō)明】
[0036]構(gòu)成本發(fā)明創(chuàng)造的一部分的附圖用來(lái)提供對(duì)本發(fā)明創(chuàng)造的進(jìn)一步理解,本發(fā)明創(chuàng)造的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明創(chuàng)造,并不構(gòu)成對(duì)本發(fā)明創(chuàng)造的不當(dāng)限定。在附圖中:
[0037]圖1為示例處理器編程模型寄存器示例;
[0038]圖2為編譯器對(duì)中斷服務(wù)函數(shù)寄存器分析流程圖;
[0039]圖3為分析寄存器使用情況時(shí)寄存器初始狀態(tài)表;
[0040]圖4為分析寄存器使用情況時(shí)用到的寄存器狀態(tài)表;
[0041]圖5為對(duì)于示例1,使用傳統(tǒng)編譯器中斷服務(wù)程序編譯出來(lái)的匯編程序示意圖;
[0042]圖6為對(duì)于示例1,使用優(yōu)化的編譯器中斷服務(wù)程序編譯出來(lái)的匯編程序示意圖;
[0043]圖7為對(duì)于示例2,使用傳統(tǒng)編譯器中斷服務(wù)程序編譯出來(lái)的匯編程序示意圖;
[0044]圖8為對(duì)于示例2,使用優(yōu)化的編譯器中斷服務(wù)程序編譯出來(lái)的匯編程序示意圖。
【具體實(shí)施方式】
[0045]需要說(shuō)明的是,在不沖突的情況下,本發(fā)明創(chuàng)造中的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0046]下面將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明創(chuàng)造。
[0047]如圖1所述的處理器編程模型寄存器,設(shè)處理器沒(méi)有硬件保存中斷現(xiàn)場(chǎng)的機(jī)制,基于中斷的編譯器優(yōu)化方法【具體實(shí)施方式】如下所示:
[0048]在執(zhí)行中斷服務(wù)函數(shù)時(shí),根據(jù)編譯器對(duì)寄存器是否保存的問(wèn)題,可將寄存器分為三類:
[0049](I)所有通用寄存器,編譯器根據(jù)分析中斷服務(wù)函數(shù)內(nèi)寄存器分配,可知中斷服務(wù)函數(shù)中使用的通用寄存器以及需要保存的通用寄存器。
[0050](2)高級(jí)語(yǔ)言會(huì)影響的特殊寄存器,編譯器根據(jù)分析中斷服務(wù)函數(shù)內(nèi)的指令,可知中斷服務(wù)函數(shù)會(huì)影響哪些特殊寄存器,例如條件寄存器(cr),如果存在條件指令,則會(huì)影響條件寄存器的值。
[0051](3)只有匯編語(yǔ)言操作的特殊寄存器,也就是程序員在中斷服務(wù)函數(shù)中會(huì)對(duì)這些特殊寄存器通過(guò)匯編形式操作。這樣,編譯器不知道中斷服務(wù)函數(shù)是否會(huì)影響這些寄存器,而程序員應(yīng)該知道中斷服務(wù)函數(shù)是否會(huì)影響哪些特殊寄存器,因此,通過(guò)預(yù)處理指令定義中斷服務(wù)函數(shù)時(shí),應(yīng)該為此類寄存器提供控制接口,這樣寄存器例如狀態(tài)寄存器(msr),處理器控制寄存器(ccr)。
[0052]步驟(I):需要通過(guò)預(yù)處理指令完成對(duì)向量中斷函數(shù)的定義,可以采用如下形式定義向量中斷函數(shù):
[0053]—attribute—((interrupt ( “msr”)))void I SR (void);
[0054]ISR為向量中斷服務(wù)函數(shù),并且在中斷服務(wù)函數(shù)中會(huì)使用狀態(tài)寄存器(msr)。
[0055]步驟(2):編譯器在預(yù)編譯階段識(shí)別向量中斷函數(shù),分析中斷函數(shù)內(nèi)通用寄存器的使用情況。
[0056]步驟(3):編譯器根據(jù)處理器種類和編程模型確定需要
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
黄梅县| 瑞昌市| 峨眉山市| 贺州市| 泽普县| 嘉定区| 曲麻莱县| 汤阴县| 湖北省| 济南市| 丰原市| 略阳县| 克山县| 夹江县| 南召县| 旬邑县| 始兴县| 广丰县| 科技| 环江| 巴中市| 连平县| 潼南县| 和平县| 杨浦区| 稷山县| 泸定县| 信丰县| 左贡县| 三原县| 铜山县| 张掖市| 金沙县| 松阳县| 黔西| 土默特左旗| 大埔区| 莱阳市| 德兴市| 蒙自县| 竹溪县|