超長(zhǎng)分支跳轉(zhuǎn)處理方法及裝置制造方法
【專利摘要】本發(fā)明提供一種超長(zhǎng)分支跳轉(zhuǎn)處理方法及裝置,該方法包括:在編譯到源代碼段中的第一分支指令時(shí),根據(jù)第一分支指令,確定第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值,在第一跳轉(zhuǎn)指令與目標(biāo)指令之間的地址跨度超過(guò)跨度閾值時(shí),對(duì)第一分支指令所在的源代碼段進(jìn)行解釋執(zhí)行。從而實(shí)現(xiàn)在虛擬機(jī)對(duì)源代碼段的超長(zhǎng)分支跳轉(zhuǎn)的處理,并在處理該超長(zhǎng)分支跳轉(zhuǎn)的同時(shí)無(wú)需引入新的指令模塊,進(jìn)而減少了編譯器在執(zhí)行過(guò)程中的開(kāi)銷(xiāo)。
【專利說(shuō)明】超長(zhǎng)分支跳轉(zhuǎn)處理方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)技術(shù),尤其涉及一種超長(zhǎng)分支跳轉(zhuǎn)處理方法及裝置。
【背景技術(shù)】
[0002]面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,如Java中引入了虛擬機(jī)的概念,即在機(jī)器和程序代碼之間加入了一層抽象的虛擬的機(jī)器。虛擬機(jī)獲取程序代碼之后,將該程序代碼翻譯成特定機(jī)器上的機(jī)器碼,然后在特定的機(jī)器上執(zhí)行。
[0003]在現(xiàn)有技術(shù)中,編譯器中加入了針對(duì)超長(zhǎng)遠(yuǎn)跳轉(zhuǎn)的檢查機(jī)制:在生成分支跳轉(zhuǎn)指令時(shí),檢查是否超過(guò)指令集支持的范圍。如果編譯器在翻譯一個(gè)包含分支跳轉(zhuǎn)邏輯的函數(shù)時(shí),為每個(gè)包含分支跳轉(zhuǎn)邏輯的函數(shù)選擇一套遠(yuǎn)跳轉(zhuǎn)指令模板。
[0004]然而,遠(yuǎn)跳轉(zhuǎn)指令中包括多條指令,因此增大了在執(zhí)行超長(zhǎng)分支跳轉(zhuǎn)處理時(shí)的開(kāi)銷(xiāo)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種超長(zhǎng)分支跳轉(zhuǎn)處理方法及裝置,用以減少執(zhí)行超長(zhǎng)分支跳轉(zhuǎn)處理的開(kāi)銷(xiāo)。
[0006]本發(fā)明的第一個(gè)方面是提供一種超長(zhǎng)分支跳轉(zhuǎn)處理方法,包括:
[0007]在編譯到源代碼段中的第一分支指令時(shí),根據(jù)所述第一分支指令,確定所述第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值;
[0008]在所述第一分支指令與所述目標(biāo)指令之間的地址跨度超過(guò)所述跨度閾值時(shí),對(duì)所述第一分支指令所在的源代碼段進(jìn)行解釋執(zhí)行。
[0009]本發(fā)明的另一個(gè)方面是提供一種超長(zhǎng)分支跳轉(zhuǎn)處理裝置,包括:
[0010]處理模塊,用于在編譯到源代碼段中的第一分支指令時(shí),根據(jù)所述第一分支指令,確定所述第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值;
[0011 ] 發(fā)送模塊,用于在所述第一分支指令與所述目標(biāo)指令之間的地址跨度超過(guò)所述跨度閾值時(shí),對(duì)所述第一分支指令所在的源代碼段進(jìn)行解釋執(zhí)行。
[0012]本發(fā)明提供的超長(zhǎng)分支跳轉(zhuǎn)處理方法及其裝置,通過(guò)在編譯到源代碼段中的第一分支指令時(shí),根據(jù)第一分支指令,確定第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值,在第一跳轉(zhuǎn)指令與目標(biāo)指令之間的地址跨度超過(guò)跨度閾值時(shí),對(duì)第一分支指令所在的源代碼段進(jìn)行解釋執(zhí)行。從而實(shí)現(xiàn)在虛擬機(jī)對(duì)源代碼段的超長(zhǎng)分支跳轉(zhuǎn)的處理,并在處理該超長(zhǎng)分支跳轉(zhuǎn)的同時(shí)無(wú)需引入新的指令模塊,進(jìn)而減少了編譯器在執(zhí)行過(guò)程中的開(kāi)銷(xiāo)。
【專利附圖】
【附圖說(shuō)明】
[0013]圖1為本發(fā)明一實(shí)施例超長(zhǎng)分支跳轉(zhuǎn)處理方法的流程圖;
[0014]圖2為本發(fā)明另一實(shí)施例超長(zhǎng)分支跳轉(zhuǎn)處理方法的流程圖;[0015]圖3為本發(fā)明一實(shí)施例超長(zhǎng)分支跳轉(zhuǎn)處理裝置的結(jié)構(gòu)示意圖;
[0016]圖4為本發(fā)明另一實(shí)施例超長(zhǎng)分支跳轉(zhuǎn)處理裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0017]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0018]本發(fā)明實(shí)施例提供的超長(zhǎng)分支跳轉(zhuǎn)處理方法適用于虛擬機(jī)對(duì)源代碼段進(jìn)行翻譯的過(guò)程中,其中,該源代碼段的跳轉(zhuǎn)范圍超過(guò)預(yù)設(shè)范圍。本實(shí)施例提供的超長(zhǎng)分支跳轉(zhuǎn)處理方法具體可以通過(guò)超長(zhǎng)分支跳轉(zhuǎn)處理裝置來(lái)執(zhí)行,該超長(zhǎng)分支跳轉(zhuǎn)處理裝置可以設(shè)置在虛擬機(jī)中,并可以采用軟件和/或硬件的方式來(lái)實(shí)現(xiàn)。以下對(duì)本實(shí)施例提供的超長(zhǎng)分支跳轉(zhuǎn)處理方法及其裝置進(jìn)行詳細(xì)地說(shuō)明。
[0019]圖1為本發(fā)明一實(shí)施例超長(zhǎng)分支跳轉(zhuǎn)處理方法的流程圖,如圖1所示,本發(fā)明實(shí)施例中的執(zhí)行主體可以為虛擬機(jī),該超長(zhǎng)分支跳轉(zhuǎn)處理方法包括:
[0020]步驟101、在編譯到源代碼段中的第一分支指令時(shí),根據(jù)第一分支指令,確定第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值。
[0021]在本實(shí)施例中,地址跨度為存儲(chǔ)該第一分支指令的地址與第一分支指令準(zhǔn)備跳轉(zhuǎn)的目的地址之間的跨度,跨度閾值為跳轉(zhuǎn)指令最大的跳轉(zhuǎn)范圍,如,X86_64指令集中的分支跳轉(zhuǎn)指令(JMP)能夠達(dá)到的相對(duì)跳轉(zhuǎn)范圍為±231字節(jié);Spare指令集中的分支跳轉(zhuǎn)指令(br)能夠達(dá)到的相對(duì)跳轉(zhuǎn)范圍為±222字節(jié);MIPS指令集中的分支跳轉(zhuǎn)指令(jr)能夠達(dá)到的相對(duì)跳轉(zhuǎn)范圍為±215字節(jié)。
[0022]本實(shí)施例適用于,虛擬機(jī)在進(jìn)行解釋執(zhí)行時(shí),根據(jù)源代碼段的執(zhí)行次數(shù),確定該執(zhí)行次數(shù)大于預(yù)設(shè)執(zhí)行值時(shí),將該源代碼段進(jìn)行編譯執(zhí)行。
[0023]步驟102、在第一跳轉(zhuǎn)指令與目標(biāo)指令之間的地址跨度超過(guò)跨度閾值時(shí),對(duì)第一分支指令所在的源代碼段進(jìn)行解釋執(zhí)行。
[0024]需要說(shuō)明的是,虛擬機(jī)的執(zhí)行引擎主要包括解釋執(zhí)行和編譯執(zhí)行兩種執(zhí)行類型,其中,解釋執(zhí)行是以源代碼段中的每條代碼為單位執(zhí)行,即提取每條代碼、分析每條代碼、執(zhí)行每條代碼,編譯執(zhí)行是以源代碼段為單位的執(zhí)行,并且還將編譯完成的代碼進(jìn)行保存。
[0025]在本實(shí)施例中,若編譯執(zhí)行確定第一分支指令與目標(biāo)指令之間的地址跨度超過(guò)跨度閾值,即需要超長(zhǎng)分支跳轉(zhuǎn)處理時(shí),在編譯執(zhí)行過(guò)程中可以將所述第一分支指令所在的所述源代碼段設(shè)置為不可編譯,用以在執(zhí)行到所述第一分支指令所在的所述源代碼時(shí),進(jìn)行解釋執(zhí)行。
[0026]在本實(shí)施例中,通過(guò)在編譯到源代碼段中的第一分支指令時(shí),根據(jù)第一分支指令,確定第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值,在第一跳轉(zhuǎn)指令與目標(biāo)指令之間的地址跨度超過(guò)跨度閾值時(shí),對(duì)第一分支指令所在的源代碼段進(jìn)行解釋執(zhí)行。從而實(shí)現(xiàn)在虛擬機(jī)對(duì)源代碼段的超長(zhǎng)分支跳轉(zhuǎn)的處理,并在處理該超長(zhǎng)分支跳轉(zhuǎn)的同時(shí)無(wú)需引入新的指令模塊,進(jìn)而減少了編譯器在執(zhí)行過(guò)程中的開(kāi)銷(xiāo)。
[0027]在上述實(shí)施例的基礎(chǔ)上,步驟101,在編譯到源代碼段中的第一分支指令時(shí),根據(jù)所述第一分支指令,確定所述第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值之后,還可以包括:
[0028]若第一跳轉(zhuǎn)指令與目標(biāo)指令之間的地址跨度沒(méi)有超過(guò)所述跨度閾值時(shí),編譯完成第一分支指令所在的源代碼段時(shí),保存并執(zhí)行編譯后的第一分支指令所在的源代碼段。
[0029]進(jìn)一步的,在上述實(shí)施例的基礎(chǔ)上,步驟101,具體包括:
[0030]根據(jù)第一分支指令,確定第一分支指令的目標(biāo)指令是否已經(jīng)翻譯,其中,該翻譯可以為解釋或編譯;
[0031]若否,則在獲取到目標(biāo)指令翻譯完成的時(shí)刻,確定第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值;
[0032]若是,則確定第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值。
[0033]圖2為本發(fā)明另一實(shí)施例超長(zhǎng)分支跳轉(zhuǎn)處理方法的流程圖,在本實(shí)施例中,以JAVA虛擬機(jī)為例進(jìn)行詳細(xì)說(shuō)明,值得說(shuō)明的是,JAVA虛擬機(jī)在對(duì)JAVA程序中的程序代碼進(jìn)行編譯時(shí)以源代碼段作為源代碼段。如圖2所示,該超長(zhǎng)分支跳轉(zhuǎn)處理方法包括:
[0034]步驟201、獲取源代碼段。
[0035]具體的,獲取源代碼段中的每條指令代碼,并將每條指令代碼依次排隊(duì)等待解釋執(zhí)行。
[0036]步驟202、根據(jù)源代碼段,確定是否逐條解釋執(zhí)行源代碼段中的指令代碼。
[0037]在本實(shí)施例中,觸發(fā)解釋執(zhí)行源代碼段的場(chǎng)景為,確定該源代碼段的指令代碼的執(zhí)行次數(shù)是否小于預(yù)設(shè)執(zhí)行值。舉例來(lái)講,確定源代碼段的指令代碼的執(zhí)行次數(shù)小于預(yù)設(shè)執(zhí)行值時(shí),則對(duì)該源代碼段中指令代碼進(jìn)行逐條解釋執(zhí)行,或者,確定源代碼段的指令代碼的執(zhí)行次數(shù)大于或等于預(yù)設(shè)執(zhí)行值時(shí),則無(wú)需逐條解釋執(zhí)行源代碼段中的指令代碼,即對(duì)該源代碼段的指令代碼進(jìn)行編譯執(zhí)行。
[0038]在本實(shí)施例中,若是,則執(zhí)行步驟203 ;若否,則執(zhí)行步驟204。
[0039]需要說(shuō)明的是,若確定第一分支指令所在的源代碼段設(shè)置為不可編譯,則在執(zhí)行到該第一分支指令所在的源代碼時(shí),進(jìn)行解釋執(zhí)行。
[0040]步驟203、對(duì)源代碼段的指令代碼進(jìn)行逐條解釋執(zhí)行。
[0041]步驟204、對(duì)源代碼段的指令代碼進(jìn)行編譯執(zhí)行。
[0042]具體的,將源代碼段的指令代碼添加到編譯執(zhí)行的任務(wù)隊(duì)列中。
[0043]步驟205、根據(jù)第一分支指令,確定第一分支指令的目標(biāo)指令是否已經(jīng)翻譯。
[0044]在本實(shí)施例中,該翻譯可以為解釋或編譯。
[0045]具體的,若確定第一分支指令的目標(biāo)指令沒(méi)有翻譯,則執(zhí)行步驟206和207 ;若確定第一分支指令的目標(biāo)指令已經(jīng)翻譯,則執(zhí)行步驟207。
[0046]步驟206、對(duì)目標(biāo)指令代碼進(jìn)行翻譯。
[0047]在本實(shí)施例中,該翻譯包括編譯執(zhí)行或解釋執(zhí)行。
[0048]步驟207、根據(jù)第一分支指令,確定第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值。
[0049]在本實(shí)施例中,若否,則執(zhí)行步驟208,若是,則執(zhí)行步驟209。
[0050]步驟208、編譯完成第一分支指令所在的源代碼段時(shí),保存并執(zhí)行編譯后的第一分支指令所在的源代碼段。[0051]步驟209、在編譯執(zhí)行過(guò)程中可以將第一分支指令所在的所述源代碼段設(shè)置為不
可編譯。
[0052]在本實(shí)施例中,將第一分支指令所在的所述源代碼段設(shè)置為不可編譯,用以在執(zhí)行到第一分支指令所在的所述源代碼時(shí),進(jìn)行解釋執(zhí)行。
[0053]在本實(shí)施例中,實(shí)現(xiàn)了在虛擬機(jī)對(duì)源代碼段的超長(zhǎng)分支跳轉(zhuǎn)的處理,并在處理該超長(zhǎng)分支跳轉(zhuǎn)的同時(shí)無(wú)需引入新的指令模塊,進(jìn)而減少了編譯器在執(zhí)行過(guò)程中的開(kāi)銷(xiāo)。
[0054]圖3為本發(fā)明一實(shí)施例超長(zhǎng)分支跳轉(zhuǎn)處理裝置的結(jié)構(gòu)示意圖,如圖3所示,該超長(zhǎng)分支跳轉(zhuǎn)處理裝置,包括:處理模塊31和發(fā)送模塊32。其中,處理模塊31,用于在編譯到源代碼段中的第一分支指令時(shí),根據(jù)第一分支指令,確定所述第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值;發(fā)送模塊32,用于在第一分支指令與目標(biāo)指令之間的地址跨度超過(guò)所述跨度閾值時(shí),對(duì)所述第一分支指令所在的源代碼段進(jìn)行解釋執(zhí)行。
[0055]通過(guò)在編譯到源代碼段中的第一分支指令時(shí),根據(jù)第一分支指令,確定第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值,在第一跳轉(zhuǎn)指令與目標(biāo)指令之間的地址跨度超過(guò)跨度閾值時(shí),對(duì)第一分支指令所在的源代碼段進(jìn)行解釋執(zhí)行。從而實(shí)現(xiàn)在虛擬機(jī)對(duì)源代碼段的超長(zhǎng)分支跳轉(zhuǎn)的處理,并在處理該超長(zhǎng)分支跳轉(zhuǎn)的同時(shí)無(wú)需引入新的指令模塊,進(jìn)而減少了編譯器在執(zhí)行過(guò)程中的開(kāi)銷(xiāo)。
[0056]圖4為本發(fā)明另一實(shí)施例超長(zhǎng)分支跳轉(zhuǎn)處理裝置的結(jié)構(gòu)示意圖,如圖4所示,該超長(zhǎng)分支跳轉(zhuǎn)處理裝置的處理模塊31,包括:設(shè)置單元311。其中,設(shè)置單元311,用于將第一分支指令所在的源代碼段設(shè)置為不可編譯,用以在執(zhí)行到第一分支指令所在的源代碼時(shí),進(jìn)行解釋執(zhí)行。
[0057]進(jìn)一步的,在上述實(shí)施例的基礎(chǔ)上,處理模塊31還包括處理單元312,該處理單元312用于根據(jù)所述第一分支指令,確定所述第一分支指令的目標(biāo)指令是否已經(jīng)翻譯;若否,則在獲取到所述目標(biāo)指令翻譯完成的時(shí)刻,確定所述第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值;若是,則確定所述第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值。
[0058]在上述實(shí)施例的基礎(chǔ)上,處理模塊31還包括編譯單元313,該編譯單元313用于在處理單元312確定所述第一跳轉(zhuǎn)指令與所述目標(biāo)指令之間的地址跨度沒(méi)有超過(guò)所述跨度閾值時(shí),編譯完成所述第一分支指令所在的源代碼段時(shí),保存并執(zhí)行編譯后的所述第一分支指令所在的源代碼段
[0059]在本發(fā)明中,實(shí)現(xiàn)了在虛擬機(jī)對(duì)源代碼段的超長(zhǎng)分支跳轉(zhuǎn)的處理,并在處理該超長(zhǎng)分支跳轉(zhuǎn)的同時(shí)無(wú)需引入新的指令模塊,進(jìn)而減少了編譯器在執(zhí)行過(guò)程中的開(kāi)銷(xiāo)。
[0060]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0061]最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種超長(zhǎng)分支跳轉(zhuǎn)處理方法,其特征在于,包括: 在編譯到源代碼段中的第一分支指令時(shí),根據(jù)所述第一分支指令,確定所述第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值; 在所述第一分支指令與所述目標(biāo)指令之間的地址跨度超過(guò)所述跨度閾值時(shí),對(duì)所述第一分支指令所在的源代碼段進(jìn)行解釋執(zhí)行。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對(duì)所述第一分支指令所在的源代碼段進(jìn)行解釋執(zhí)行之前,還包括: 將所述第一分支指令所在的所述源代碼段設(shè)置為不可編譯,用以在執(zhí)行到所述第一分支指令所在的所述源代碼時(shí),進(jìn)行解釋執(zhí)行。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述在編譯到源代碼段中的第一分支指令時(shí),根據(jù)所述第一分支指令,確定所述第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值,包括: 根據(jù)所述第一分支指令,確定所述第一分支指令的目標(biāo)指令是否已經(jīng)翻譯; 若否,則在獲取到所述目標(biāo)指令翻譯完成的時(shí)刻,確定所述第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)所述跨度閾值; 若是,則確定所述第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)所述跨度閾值。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述在編譯到源代碼段中的第一分支指令時(shí),根據(jù)所述第一分支指令,確定所述第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值之后,還包括: 若所述第一跳轉(zhuǎn)指令與所述目標(biāo)指令之間的地址跨度沒(méi)有超過(guò)所述跨度閾值時(shí),編譯完成所述第一分支指令所在的源代碼段時(shí),保存并執(zhí)行編譯后的所述第一分支指令所在的源代碼段。
5.一種超長(zhǎng)分支跳轉(zhuǎn)處理裝置,其特征在于,包括: 處理模塊,用于在編譯到源代碼段中的第一分支指令時(shí),根據(jù)所述第一分支指令,確定所述第一分支指令與目標(biāo)指令之間的地址跨度是否超過(guò)跨度閾值; 發(fā)送模塊,用于在所述第一分支指令與所述目標(biāo)指令之間的地址跨度超過(guò)所述跨度閾值時(shí),對(duì)所述第一分支指令所在的源代碼段進(jìn)行解釋執(zhí)行。
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述處理模塊包括:設(shè)置單元; 所述設(shè)置單元用于將所述第一分支指令所在的所述源代碼段設(shè)置為不可編譯,用以在執(zhí)行到所述第一分支指令所在的所述源代碼時(shí),進(jìn)行解釋執(zhí)行。
7.根據(jù)權(quán)利要求5或6所述的裝置,其特征在于,所述處理模塊還包括:處理單元; 所述處理單元,用于根據(jù)所述第一分支指令,確定所述第一分支指令的目標(biāo)指令是否已經(jīng)翻譯;若否,則在獲取到所述目標(biāo)指令翻譯完成的時(shí)刻,確定所述第一分支指令與所述目標(biāo)指令之間的地址跨度是否超過(guò)所述跨度閾值;若是,則確定所述第一分支指令與所述目標(biāo)指令之間的地址跨度是否超過(guò)所述跨度閾值。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述處理模塊還包括,編譯單元; 所述編譯單元,用于在所述處理單元確定所述第一跳轉(zhuǎn)指令與所述目標(biāo)指令之間的地址跨度沒(méi)有超過(guò)所述跨度閾值時(shí),編譯完成所述第一分支指令所在的源代碼段時(shí),保存并執(zhí)行編譯后的所述第一分支指令所在的源代碼段。
【文檔編號(hào)】G06F9/38GK103984531SQ201410240536
【公開(kāi)日】2014年8月13日 申請(qǐng)日期:2014年5月30日 優(yōu)先權(quán)日:2014年5月30日
【發(fā)明者】靳國(guó)杰, 高翔, 李森, 胡偉武 申請(qǐng)人:龍芯中科技術(shù)有限公司