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

一種基于自反射機制的動態(tài)指令轉換調試方法與流程

文檔序號:40392687發(fā)布日期:2024-12-20 12:15閱讀:3來源:國知局

本發(fā)明屬于計算機軟件開發(fā),具體涉及一種基于自反射機制的動態(tài)指令轉換調試方法。


背景技術:

1、動態(tài)指令轉換(dynamic?instruction?translation,dit)也被稱為動態(tài)二進制翻譯(dynamic?binary?translation,dbt),是一種在運行時將程序指令從一種指令集轉換為當前物理處理器指令集的方法,主要用于滿足在一種處理器上運行異構指令集程序的需求。以x86處理器程序在arm處理器上執(zhí)行為例,x86處理器上的程序通過動態(tài)指令轉換后在arm處理器上實際執(zhí)行的是轉換得到的arm指令,此時如果程序發(fā)生異?;虮罎ⅲ鲥e的指令則無法映射到原始指令,即無法確定程序崩潰時異常地址處的arm指令對應于原始x86程序中的具體地址及指令,這導致基于dbt執(zhí)行的程序難以調試。


技術實現(xiàn)思路

1、有鑒于此,本發(fā)明提供了一種基于自反射機制的動態(tài)指令轉換調試方法,通過異構程序在目標處理器上的預轉換實現(xiàn)基于dbt執(zhí)行的程序的可調試。

2、本發(fā)明提供的一種基于自反射機制的動態(tài)指令轉換調試方法,具體包括以下步驟:

3、步驟1、在目標處理器中以動態(tài)指令轉換方式啟動異構程序的執(zhí)行,將當前待轉換后執(zhí)行的指令記為當前源指令,將當前源指令的地址記為當前源指令地址;

4、步驟2、若當前源指令為源分割指令則執(zhí)行步驟3,否則執(zhí)行步驟4;

5、步驟3、將當前源指令轉換為目標指令集中的目標非法指令,并在目標非法指令后添加當前源指令地址,將目標非法指令及當前源指令地址保存到目標指令緩存中,執(zhí)行步驟5;

6、步驟4、將當前源指令轉換為目標指令集中對應的一個或多個目標指令,由目標指令構成當前目標指令序列;在當前目標指令序列后添加由分割指令及當前源指令地址組成的分割指令塊,將當前目標指令序列及分割指令塊保存到目標指令緩存中,執(zhí)行步驟5;

7、步驟5、若異構程序內(nèi)存在未轉換的指令,則以下一指令為當前源指令執(zhí)行步驟2;否則在目標指令緩存中添加目標非法指令的異常處理代碼并恢復異常,形成第一目標程序;

8、步驟6、在目標指令集中執(zhí)行第一目標程序,將執(zhí)行過程產(chǎn)生異?;虮罎⒌哪繕酥噶畹刂酚洖楫惓D繕说刂?,在目標指令緩存中從異常目標地址向高地址方向搜索,當?shù)谝淮纬霈F(xiàn)分割指令時獲取其所在的分割指令塊,從分割指令塊提取當前源指令地址確定異?;虮罎⑺鶎漠悩嫵绦蛑性粗噶畹奈恢茫瓿烧{試。

9、進一步地,所述當前源指令地址表示為相對于基地址的偏移地址,所述基地址為異構程序的起始地址。

10、進一步地,所述分割指令為目標指令集中的空指令,所述源分割指令為源指令集中的空指令。

11、進一步地,所述目標非法指令為目標指令集中長度為一字節(jié)或兩字節(jié)的非法指令。

12、進一步地,所述當前源指令地址以立即數(shù)的形式表示,在當前源指令地址需要被拆分為多個當前源指令子地址時分割指令塊包含多個由分割指令與當前源指令子地址形成的組合。

13、進一步地,所述分割指令塊的構建過程包括:

14、步驟4.1、根據(jù)目標指令集中立即數(shù)的表示方式,確定當前源指令地址所需拆分為當前源指令子地址的數(shù)量n,將當前源指令地址拆分為n個立即數(shù);令序列號n的取值為1,n的最大值為n;

15、步驟4.2、添加分割指令,若n=1則執(zhí)行步驟4.3,否則執(zhí)行步驟4.4;

16、步驟4.3、添加第一目標指令,第一目標指令的操作數(shù)分別為預留寄存器和由當前源指令地址拆分得到的第n個立即數(shù),執(zhí)行步驟4.5;

17、步驟4.4、添加第二目標指令,第二目標指令的操作數(shù)分別為預留內(nèi)存地址和由當前源指令地址拆分得到的第n個立即數(shù),執(zhí)行步驟4.5;

18、步驟4.5、若n不大于n則令n自加1后執(zhí)行步驟4.2,否則結束本流程。

19、進一步地,所述步驟5中所述目標非法指令的異常處理代碼為:當捕獲的異常為目標非法指令產(chǎn)生的異常時,獲取異常地址及該異常地址處的當前源指令地址,并將異常地址、目標非法指令的長度及當前源指令地址的長度之和作為恢復執(zhí)行地址;重置異常信息后,以恢復執(zhí)行地址為起始地址重新開始執(zhí)行。

20、進一步地,所述步驟6中所述從分割指令塊提取當前源指令地址的方式為:從分割指令塊中提取所有由分割指令與當前源指令子地址形成的組合,由所有當前源指令子地址從低地址向高地址的方向順序拼接形成當前源指令地址。

21、進一步地,當異構程序存在符號文件時根據(jù)獲取的產(chǎn)生異常或崩潰的異構程序中當前源指令地址定位其所在源代碼文件的文件名及其在文件中的行號。

22、有益效果

23、本發(fā)明基于自反射機制修改dbt引擎,將目標處理器的目標指令集中不影響原異構程序上下文的特定指令作為分割指令,并將其中的特定非法指令作為目標非法指令,在動態(tài)指令轉換過程中為由每個源指令轉換得到的目標指令序列添加分割指令塊,并將源分割指令轉換為目標非法指令,實現(xiàn)異構程序在目標處理器上的預轉換得到對應的目標程序,在目標指令集中調試執(zhí)行該目標程序時即可定位產(chǎn)生異?;虮罎⒌漠悩嫵绦騼?nèi)源指令的地址,實現(xiàn)了基于dbt執(zhí)行的程序的可調試。



技術特征:

1.一種基于自反射機制的動態(tài)指令轉換調試方法,其特征在于,具體包括以下步驟:

2.根據(jù)權利要求1所述的動態(tài)指令轉換調試方法,其特征在于,所述當前源指令地址表示為相對于基地址的偏移地址,所述基地址為異構程序的起始地址。

3.根據(jù)權利要求1所述的動態(tài)指令轉換調試方法,其特征在于,所述分割指令為目標指令集中的空指令,所述源分割指令為源指令集中的空指令。

4.根據(jù)權利要求1所述的動態(tài)指令轉換調試方法,其特征在于,所述目標非法指令為目標指令集中長度為一字節(jié)或兩字節(jié)的非法指令。

5.根據(jù)權利要求1所述的動態(tài)指令轉換調試方法,其特征在于,所述當前源指令地址以立即數(shù)的形式表示,在當前源指令地址需要被拆分為多個當前源指令子地址時分割指令塊包含多個由分割指令與當前源指令子地址形成的組合。

6.根據(jù)權利要求5所述的動態(tài)指令轉換調試方法,其特征在于,所述分割指令塊的構建過程包括:

7.根據(jù)權利要求1所述的動態(tài)指令轉換調試方法,其特征在于,所述步驟5中所述目標非法指令的異常處理代碼為:當捕獲的異常為目標非法指令產(chǎn)生的異常時,獲取異常地址及該異常地址處的當前源指令地址,并將異常地址、目標非法指令的長度及當前源指令地址的長度之和作為恢復執(zhí)行地址;重置異常信息后,以恢復執(zhí)行地址為起始地址重新開始執(zhí)行。

8.根據(jù)權利要求5所述的動態(tài)指令轉換調試方法,其特征在于,所述步驟6中所述從分割指令塊提取當前源指令地址的方式為:從分割指令塊中提取所有由分割指令與當前源指令子地址形成的組合,由所有當前源指令子地址從低地址向高地址的方向順序拼接形成當前源指令地址。

9.根據(jù)權利要求1所述的動態(tài)指令轉換調試方法,其特征在于,當異構程序存在符號文件時根據(jù)獲取的產(chǎn)生異?;虮罎⒌漠悩嫵绦蛑挟斍霸粗噶畹刂范ㄎ黄渌谠创a文件的文件名及其在文件中的行號。


技術總結
本發(fā)明公開了一種基于自反射機制的動態(tài)指令轉換調試方法,基于自反射機制修改DBT引擎,將目標處理器的目標指令集中不影響原異構程序上下文的特定指令作為分割指令,并將其中的特定非法指令作為目標非法指令,在動態(tài)指令轉換過程中為由每個源指令轉換得到的目標指令序列添加分割指令塊,并將源分割指令轉換為目標非法指令,實現(xiàn)異構程序在目標處理器上的預轉換得到對應的目標程序,在目標指令集中調試執(zhí)行該目標程序時即可定位產(chǎn)生異?;虮罎⒌漠悩嫵绦騼?nèi)源指令的地址,實現(xiàn)了基于DBT執(zhí)行的程序的可調試。

技術研發(fā)人員:溫研,劉東
受保護的技術使用者:北京麟卓信息科技有限公司
技術研發(fā)日:
技術公布日:2024/12/19
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1