亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

套鎖實現(xiàn)方法及裝置的制造方法_3

文檔序號:9910664閱讀:來源:國知局
gt;>16//取目標地址的高 16
[0055]ori reg, reg, target&OxOOOOffff//取目標地址的低 16 位
[0056]jalr reg//跳轉到指定目標地址
[0057]nop O//跳轉延時槽
[0058]在具體實現(xiàn)中,上述調用和跳轉指令均為開關參數為指示開啟參數時指令緩沖區(qū)中對應的執(zhí)行指令,該執(zhí)行指令中包括目標地址,相應地,S220可以包括:在開關參數為指示開啟參數時,對寄存器的值進行壓棧操作,并將該目標地址存儲在該寄存器中;將所述編譯器程序跳轉到該目標地址所指示的該編譯器的待分析程序入口,以對該編譯器程序進行分析。
[0059]需要說明的是,套鎖就如同一個嵌入程序的補丁(patch),在指定的指令緩沖區(qū)中插入相應的調用和跳轉指令來分析待檢測編譯器程序的代碼,實現(xiàn)靜態(tài)插入、動態(tài)檢測功能。本實施例提供的套鎖實現(xiàn)方法中,該套鎖指令集中兩個比較重要的參數為目標地址(target)和開關參數(enable) ;target就是插入套鎖對編譯器程序進行分析的目標地址,enabled為套鎖的開關,當enable為true時,向指令緩沖區(qū)發(fā)送函數調用指令,即執(zhí)行插入套鎖的動作,當enable為false時,向指令緩沖區(qū)發(fā)送nop指令,即跳出該套鎖,并且enable由false到ture的轉換過程中可以保留在true時跳轉的target,因此可以將nop指令切換到函數調用指令。具體的實現(xiàn)過程如圖3所示,圖3為圖2所示實施例提供的一種套鎖指令集執(zhí)行方法的流程圖,圖4為圖2所示實施例提供的一種套鎖指令序列的示意圖。
[0060]S301,根據套鎖指令集的開關參數執(zhí)行相應的指令,該套鎖指令集的開關參數包括開啟參數和關閉參數;當enabled為true時,執(zhí)行S302 ;當enable為false時,執(zhí)行S305o
[0061]S302,在開關參數為指示開啟參數時,對寄存器的值進行壓棧操作,例如可以為t9壓棧。
[0062]在本實施例中,實現(xiàn)壓棧操作的指令例如可以為:
[0063]addiu sp,sp,_4
[0064]sw reg, sp (O)
[0065]上述操作為壓棧和存入字節(jié)的操作,具體將reg壓入sp中。
[0066]S303,將32位目標地址立即數存入t9,并將跳轉信息記錄到跳轉列表。
[0067]在本實施例中,實現(xiàn)將32位目標地址存入t9操作的指令可以為:
[0068]Iui reg, target>>16
[0069]ori reg, reg, target&OxOOOOffff
[0070]上述操作為取地址操作,分別為取目標地址的高16位和低16位,具體的,指令中的target即為套鎖插入的目標地址,也即編譯器程序測試的入口位置。
[0071]S304,直接跳轉到t9,進行相應的程序處理操作。通過S304中存入的目標地址,將編譯器程序跳轉到該目標地址所指示的程序的相應位置,對該編譯器程序進行分析測試,該跳轉指令例如可以為:jalr reg。
[0072]S305,向下跳過5條指令。
[0073]在執(zhí)行指令后通??梢杂刑D延時槽,即一個空指令nop,因此,該套鎖在enable為true時向指令緩沖區(qū)發(fā)送了圖4所示的5條指令,因此,在enable為false時,執(zhí)行跳轉操作,具體向下跳轉5條指令就可以跳出該套鎖,該跳轉指令例如可以為:beqzero, zero, 5。
[0074]需要說明的是,本實施例提供的套鎖實現(xiàn)方法:通過執(zhí)行開關參數為指示關閉參數時指令緩沖區(qū)中對應的執(zhí)行指令,跳轉出該套鎖指令集,保留開關參數為指示開啟參數時該指令緩沖區(qū)中的執(zhí)行指令。具體地,當enable為ture時,指令緩沖區(qū)中填充的是一個用MIPS指令實現(xiàn)的跳轉指令序列;當enable為false時,直接跳過上述5條指令,相當于填充了 5條nop指令,原先的指令失效,但是并未被覆蓋原先的指令內容,當enable再為true時便可以輕易轉換成跳轉指令。
[0075]S230,根據對該編譯器程序的分析結果對該編譯器程序進行優(yōu)化處理。
[0076]具體地,S230的具體實現(xiàn)方式參照實施例一中的S120。
[0077]本實施例所提供的套鎖實現(xiàn)方法,通過在執(zhí)行加入套鎖指令集的編譯器程序的過程中,根據該套鎖指令集中開關參數的指示選擇性對該編譯器程序進行分析測試,進而根據該分析結果實現(xiàn)對該編譯器程序的優(yōu)化處理,本實施例提供一種適用于MIPS構架中的套鎖實現(xiàn)方法,以解決現(xiàn)有技術中基于X86構架的套鎖實現(xiàn)方式,對具有固定長度指令的MIPS構架并不適用的問題,使得MIPS構架中編譯器程序的開發(fā)的更加便利和有效。另外,本實施例對開關參數在指示開啟參數和關閉參數之間轉換時保留了當前的執(zhí)行指令,并不影響轉換后的跳轉地址,進一步提高了該套鎖機制的有效性。
[0078]進一步地,在本實施例提供的方法中,該套鎖指令集中還可以包括的參數有該套鎖的返回類型(CodeOffsetLabel), CodeOffsetLabel記錄一個label的位置,僅有偏移量的信息;S301之前還包括:S306,記錄套鎖指令集的返回地址,該返回地址為執(zhí)行所述套鎖指令集前,編譯器程序的當前地址,例如,可以定義CodeOffsetLabel變量cl,將跳轉前地址移到cl.destO中;相應地,S304之后還包括:S307,綁定開關參數為指示開啟參數時記錄的套鎖指令集的返回地址,使得在開關參數為指示關閉參數時,確定將該編譯器程序跳轉到該套鎖指令集的返回地址;例如,可以通過綁定cl.src O,返回函數調用前的地址。
[0079]在本實施例中,根據CodeOffsetLabel記錄的地址作為測試編譯器程序后待返回的地址,綁定開關參數為指示開啟參數時記錄的套鎖指令集的返回地址,使得在開關參數為指示關閉參數時確定跳轉到該套鎖指令集的返回地址。
[0080]實施例三
[0081]圖5為本發(fā)明實施例三所提供的一種套鎖實現(xiàn)裝置的結構示意圖。如圖5所示,本實施例的套鎖實現(xiàn)裝置,具體包括:執(zhí)行模塊11和優(yōu)化模塊12。
[0082]其中,執(zhí)行模塊11,用于在執(zhí)行加入套鎖指令集的編譯器程序時,根據該套鎖指令集中的開關參數,對該編譯器程序進行分析。
[0083]優(yōu)化模塊12,用于根據對該編譯器程序的分析結果對該編譯器程序進行優(yōu)化處理。
[0084]本發(fā)明實施例提供的套鎖實現(xiàn)裝置用于執(zhí)行本發(fā)明實施例一提供的套鎖實現(xiàn)方法,具備相應的功能模塊,其實現(xiàn)原理和技術效果類似,此處不再贅述。
[0085]實施例四
[0086]圖6為本發(fā)明實施例四所提供的一種套鎖實現(xiàn)裝置的結構示意圖。如圖6所示,本實施例提供的套鎖實現(xiàn)裝置在圖5所示裝置結構的基礎上,套鎖指令集還包括:開關參數對應的執(zhí)行指令,相應地,該套鎖實現(xiàn)裝置的執(zhí)行模塊11具體可以包括:發(fā)送單元1
當前第3頁1 2 3 4 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1