国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      代碼塊轉(zhuǎn)換方法和裝置的制作方法

      文檔序號(hào):6369319閱讀:154來源:國(guó)知局
      專利名稱:代碼塊轉(zhuǎn)換方法和裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及動(dòng)態(tài)ニ進(jìn)制翻譯領(lǐng)域,具體而言,涉及ー種代碼塊轉(zhuǎn)換方法和裝置。
      背景技術(shù)
      動(dòng)態(tài)ニ進(jìn)制翻譯是指通過對(duì)已完成靜態(tài)編譯的可執(zhí)行程序進(jìn)行代碼的實(shí)時(shí)轉(zhuǎn)換,以實(shí)現(xiàn)軟件跨平臺(tái)執(zhí)行的方法,它是不同體系結(jié)構(gòu)之間實(shí)現(xiàn)軟件兼容的有效解決方案。在新體系結(jié)構(gòu)的推廣中,大量商業(yè)軟件難以實(shí)現(xiàn)跨平臺(tái)移植。ニ進(jìn)制翻譯可以使新平臺(tái)直接運(yùn)行已有的軟件,從而促進(jìn)新結(jié)構(gòu)的推廣和發(fā)展。一般動(dòng)態(tài)ニ進(jìn)制翻譯是采用以基本塊(或稱代碼塊)為單位進(jìn)行轉(zhuǎn)換的模式,具體來說,在源程序代碼序列中,以跳轉(zhuǎn)指令為標(biāo)志截取一系列代碼段,稱為基本塊(或稱代碼塊),基本塊(或稱代碼塊)作為轉(zhuǎn)換和執(zhí)行的基本単位。每轉(zhuǎn)換ー個(gè)基本塊之后,執(zhí)行相應(yīng) 的轉(zhuǎn)換后的代碼,繼而根據(jù)執(zhí)行的結(jié)果,獲取下ー個(gè)基本塊的起始位置,繼續(xù)進(jìn)行轉(zhuǎn)換和執(zhí)行。每個(gè)轉(zhuǎn)換完成的基本塊,都會(huì)被儲(chǔ)存于緩存區(qū)中,以備查詢和再次執(zhí)行。現(xiàn)有的ニ進(jìn)制翻譯的過程如圖I所示,首先在轉(zhuǎn)換緩存區(qū)查詢是否存在當(dāng)前基本塊(代碼塊)轉(zhuǎn)換后的后繼代碼塊,若查詢成功后,執(zhí)行該后繼代碼塊,若查詢失敗,則將當(dāng)前基本塊(代碼塊)轉(zhuǎn)換為中間碼,然后在遇到跳轉(zhuǎn)指令結(jié)束基本塊(代碼塊)后,將中間碼轉(zhuǎn)換成本地碼。現(xiàn)有的ニ進(jìn)制翻譯的過程雖然采用緩存區(qū)的方法能夠削減翻譯時(shí)間,但轉(zhuǎn)換后的代碼的查詢和調(diào)用的過程只有在轉(zhuǎn)換工作完成后才能進(jìn)行,而大部分轉(zhuǎn)換工作是在程序執(zhí)行過程的初期完成的,因此在程序啟動(dòng)過程中,大量代碼需要實(shí)時(shí)轉(zhuǎn)換,致使代碼轉(zhuǎn)換的時(shí)間所占比重高,造成程序啟動(dòng)較慢。針對(duì)相關(guān)技術(shù)中的上述問題,目前尚未提出有效的解決方案。

      發(fā)明內(nèi)容
      本發(fā)明提供了一種代碼塊轉(zhuǎn)換方法和裝置,以解決相關(guān)技術(shù)中的ニ進(jìn)制翻譯過程中在程序啟動(dòng)時(shí)需要實(shí)時(shí)轉(zhuǎn)換大量代碼塊,使得代碼塊轉(zhuǎn)換的時(shí)間所占比重高、程序啟動(dòng)較慢的問題。根據(jù)本發(fā)明的ー個(gè)方面,提供了一種代碼塊轉(zhuǎn)換方法,包括判斷與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊是否已轉(zhuǎn)換;若后繼代碼塊未被轉(zhuǎn)換,則在執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)未轉(zhuǎn)換的后繼代碼塊進(jìn)行轉(zhuǎn)換。優(yōu)選地,在執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)未轉(zhuǎn)換的后繼代碼塊進(jìn)行轉(zhuǎn)換的步驟包括當(dāng)前轉(zhuǎn)換線程接收?qǐng)?zhí)行線程發(fā)送的轉(zhuǎn)換請(qǐng)求,其中,執(zhí)行線程用于執(zhí)行當(dāng)前代碼塊;當(dāng)前轉(zhuǎn)換線程判斷是否已存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換;若不存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換,則當(dāng)前轉(zhuǎn)換線程在執(zhí)行線程執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換。優(yōu)選地,在當(dāng)前轉(zhuǎn)換線程判斷是否已存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換之后,該方法還包括若存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換,則將轉(zhuǎn)換隊(duì)列清空,并將后繼代碼塊的后繼代碼塊的地址存入到轉(zhuǎn)換隊(duì)列中,其中,轉(zhuǎn)換隊(duì)列用于存儲(chǔ)待轉(zhuǎn)換的代碼塊的地址。優(yōu)選地,當(dāng)前轉(zhuǎn)換線程在執(zhí)行線程執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換之后,該方法還包括當(dāng)前轉(zhuǎn)換線程將轉(zhuǎn)換后的后繼代碼塊存入與當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)的緩存區(qū),其中,每ー個(gè)當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)ー個(gè)緩存區(qū)。優(yōu)選地,在執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)未轉(zhuǎn)換的后繼代碼塊進(jìn)行轉(zhuǎn)換之后,該方法還包括根據(jù)轉(zhuǎn)換后的后繼代碼塊的首地址生成哈希索引,并將轉(zhuǎn)換后的后繼代碼塊的首地址存入轉(zhuǎn)換查詢表中索引為哈希索引的表項(xiàng)中;當(dāng)執(zhí)行到后繼代碼塊時(shí),判斷用于記錄待執(zhí)行代碼塊的首地址的執(zhí)行查詢表中是否記錄有后繼代碼塊的首地址;若執(zhí)行查詢表中未記錄有后繼代碼塊的首地址,則從轉(zhuǎn)換查詢表中獲取后繼代碼塊的首地址,并將從轉(zhuǎn)換查詢表中獲取到的后繼代碼塊的首地址記錄在執(zhí)行查詢表中;根據(jù)執(zhí)行查詢表中記錄的后繼代碼塊的首地址來執(zhí)行后繼代碼塊。根據(jù)本發(fā)明的另一方面,提供了一種代碼塊轉(zhuǎn)換裝置,包括第一判斷単元,用于 判斷與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊是否已轉(zhuǎn)換;轉(zhuǎn)換單元,用于在第一判斷単元判斷出后繼代碼塊未被轉(zhuǎn)換的情況下,在執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)未轉(zhuǎn)換的后繼代碼塊進(jìn)行轉(zhuǎn)換。優(yōu)選地,轉(zhuǎn)換單元包括接收模塊,用于接收?qǐng)?zhí)行線程發(fā)送的轉(zhuǎn)換請(qǐng)求,其中,執(zhí)行線程用于執(zhí)行當(dāng)前代碼塊;判斷模塊,用于判斷是否已存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換;轉(zhuǎn)換模塊,用于在判斷模塊判斷出不存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換吋,在執(zhí)行線程執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換。優(yōu)選地,轉(zhuǎn)換單元還包括清空模塊,用于在判斷模塊判斷出存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換時(shí),將轉(zhuǎn)換隊(duì)列清空,并將后繼代碼塊的后繼代碼塊的地址存入到轉(zhuǎn)換隊(duì)列中,其中,轉(zhuǎn)換隊(duì)列用于存儲(chǔ)待轉(zhuǎn)換的代碼塊的地址。優(yōu)選地,代碼塊轉(zhuǎn)換裝置還包括存儲(chǔ)單元,用于將轉(zhuǎn)換后的后繼代碼塊存入與當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)的緩存區(qū),其中,每ー個(gè)當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)ー個(gè)緩存區(qū)。優(yōu)選地,代碼塊轉(zhuǎn)換裝置還包括哈希單元,用于根據(jù)轉(zhuǎn)換后的后繼代碼塊的首地址生成哈希索引,并將轉(zhuǎn)換后的后繼代碼塊的首地址存入轉(zhuǎn)換查詢表中索引為哈希索引的表項(xiàng)中;第二判斷単元,用于在執(zhí)行到后繼代碼塊時(shí),判斷用于記錄待執(zhí)行代碼塊的首地址的執(zhí)行查詢表中是否記錄有后繼代碼塊的首地址;獲取單元,用于在第二判斷単元判斷出執(zhí)行查詢表中未記錄有后繼代碼塊的首地址,則從轉(zhuǎn)換查詢表中獲取后繼代碼塊的首地址,并將從轉(zhuǎn)換查詢表中獲取到的后繼代碼塊的首地址記錄在執(zhí)行查詢表中;執(zhí)行單元,用于根據(jù)執(zhí)行查詢表中記錄的后繼代碼塊的首地址來執(zhí)行后繼代碼塊。在本發(fā)明中,在執(zhí)行線程執(zhí)行當(dāng)前代碼塊的同時(shí),轉(zhuǎn)換線程獲取與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊并進(jìn)行預(yù)翻譯,使得在ニ進(jìn)制翻譯的過程中,執(zhí)行線程在執(zhí)行當(dāng)前代碼塊之后,該當(dāng)前代碼塊可能出現(xiàn)的后繼代碼塊已經(jīng)被轉(zhuǎn)換線程轉(zhuǎn)換完畢,由于執(zhí)行當(dāng)前代碼塊和轉(zhuǎn)換與當(dāng)前代碼塊相關(guān)的后繼代碼塊的操作同時(shí)并行的完成,減少了等待轉(zhuǎn)換代碼塊的時(shí)間。通過并行地處理執(zhí)行和轉(zhuǎn)換工作解決了相關(guān)技術(shù)中的ニ進(jìn)制翻譯過程在程序啟動(dòng)時(shí)需要實(shí)時(shí)轉(zhuǎn)換大量代碼,使得代碼轉(zhuǎn)換的時(shí)間所占比重高、程序啟動(dòng)較慢的問題,達(dá)到了減少轉(zhuǎn)換代碼在程序啟動(dòng)過程中的時(shí)間的效果。


      此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)ー步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中圖I是根據(jù)相關(guān)技術(shù)的代碼轉(zhuǎn)換過程的一種流程示意圖;圖2是根據(jù)本發(fā)明實(shí)施例的代碼塊轉(zhuǎn)換方法的一種優(yōu)選的流程圖;圖3是根據(jù)本發(fā)明實(shí)施例的代碼塊轉(zhuǎn)換裝置的一種優(yōu)選的結(jié)構(gòu)圖;圖4是根據(jù)本發(fā)明實(shí)施例的代碼塊轉(zhuǎn)換裝置的另ー種優(yōu)選的結(jié)構(gòu)圖;圖5是根據(jù)本發(fā)明實(shí)施例的代碼塊轉(zhuǎn)換裝置的另ー種優(yōu)選的結(jié)構(gòu)圖;
      圖6是根據(jù)本發(fā)明實(shí)施例的代碼塊轉(zhuǎn)換裝置的另ー種優(yōu)選的結(jié)構(gòu)圖;圖7是根據(jù)本發(fā)明實(shí)施例的代碼塊轉(zhuǎn)換裝置的又一種優(yōu)選的結(jié)構(gòu)圖;圖8是根據(jù)本發(fā)明實(shí)施例的代碼塊轉(zhuǎn)換方法中并行轉(zhuǎn)換的ー種原理圖。
      具體實(shí)施例方式下文中將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。實(shí)施例I本申請(qǐng)優(yōu)選地實(shí)施例提供了一種代碼塊轉(zhuǎn)換方法,具體地,如圖2所示,該方法包括S202,判斷與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊是否已轉(zhuǎn)換;S204,若后繼代碼塊未被轉(zhuǎn)換,則在執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)未轉(zhuǎn)換的后繼代碼塊進(jìn)行轉(zhuǎn)換。優(yōu)選的,在判斷出與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊未被轉(zhuǎn)換時(shí),將與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊的地址存入轉(zhuǎn)換隊(duì)列中,在執(zhí)行線程執(zhí)行當(dāng)前代碼塊的同時(shí),轉(zhuǎn)換線程從轉(zhuǎn)換隊(duì)列中獲取與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊并進(jìn)行轉(zhuǎn)換。在上述優(yōu)選的實(shí)施方式中,在執(zhí)行線程執(zhí)行當(dāng)前代碼塊的同時(shí),轉(zhuǎn)換線程獲取與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊并進(jìn)行預(yù)翻譯,使得在ニ進(jìn)制翻譯的過程中,執(zhí)行線程在執(zhí)行當(dāng)前代碼塊之后,該當(dāng)前代碼塊可能出現(xiàn)的后繼代碼塊已經(jīng)被轉(zhuǎn)換線程轉(zhuǎn)換完畢,由于執(zhí)行當(dāng)前代碼塊和轉(zhuǎn)換與當(dāng)前代碼塊相關(guān)的后繼代碼塊的操作同時(shí)并行的完成,減少了等待轉(zhuǎn)換代碼塊的時(shí)間。通過并行地處理執(zhí)行和轉(zhuǎn)換工作解決了相關(guān)技術(shù)中的ニ進(jìn)制翻譯過程在程序啟動(dòng)時(shí)需要實(shí)時(shí)轉(zhuǎn)換大量代碼,使得代碼轉(zhuǎn)換的時(shí)間所占比重高、程序啟動(dòng)較慢的問題,達(dá)到了減少轉(zhuǎn)換代碼在程序啟動(dòng)過程中的時(shí)間的效果。基于上述優(yōu)選的實(shí)施方式,本發(fā)明還提供了一種在執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)未轉(zhuǎn)換的后繼代碼塊進(jìn)行轉(zhuǎn)換的優(yōu)選的方案,具體來說,該方案包括當(dāng)前轉(zhuǎn)換線程接收?qǐng)?zhí)行線程發(fā)送的轉(zhuǎn)換請(qǐng)求,其中,執(zhí)行線程用于執(zhí)行當(dāng)前代碼塊;當(dāng)前轉(zhuǎn)換線程判斷是否已存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換;若不存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換,則當(dāng)前轉(zhuǎn)換線程在執(zhí)行線程執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換。在上述優(yōu)選的實(shí)施方式中,使用多個(gè)獨(dú)立的轉(zhuǎn)換線程來轉(zhuǎn)換代碼,在轉(zhuǎn)換線程進(jìn)行代碼轉(zhuǎn)換之前,接收到轉(zhuǎn)換請(qǐng)求的當(dāng)前轉(zhuǎn)換線程首先判斷是否存在其他轉(zhuǎn)換線程已經(jīng)對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換,在不存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換吋,當(dāng)前轉(zhuǎn)換線程在執(zhí)行當(dāng)前代碼塊的過程中對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換,以提高轉(zhuǎn)換線程轉(zhuǎn)換代碼塊的效率。本優(yōu)選的實(shí)施方式還對(duì)上述代碼塊轉(zhuǎn)換方法進(jìn)行了優(yōu)化,具體來說,在當(dāng)前轉(zhuǎn)換線程判斷是否已存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換之后,上述代碼塊轉(zhuǎn)換方法還包括若存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換,則將轉(zhuǎn)換隊(duì)列清空,并將后繼代碼塊的后繼代碼塊的地址存入到轉(zhuǎn)換隊(duì)列中,其中,轉(zhuǎn)換隊(duì)列用于存儲(chǔ)待轉(zhuǎn)換的代碼塊的地址。在上述優(yōu)選的實(shí)施方式的基礎(chǔ)上,本發(fā)明還對(duì)上述代碼塊轉(zhuǎn)換方法進(jìn)行了優(yōu)化,具體來說,當(dāng)前轉(zhuǎn)換線程在執(zhí)行線程執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換之后,上述代碼塊轉(zhuǎn)換方法還包括當(dāng)前轉(zhuǎn)換線程將轉(zhuǎn)換后的后繼代碼塊存入與當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)的緩存區(qū),其中,每ー個(gè)當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)ー個(gè)緩存區(qū)。在上述優(yōu)選的實(shí)施方式中,將轉(zhuǎn)換后的后繼代碼塊存入與當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)的緩存區(qū),且每ー個(gè)當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)ー個(gè)緩存區(qū),保證每個(gè)轉(zhuǎn)換線程可以獨(dú)立轉(zhuǎn)換代碼,并將轉(zhuǎn)換后的代碼獨(dú)立存儲(chǔ),方便調(diào) 用的同時(shí),避免了由于多線程使用相同的數(shù)據(jù)空間需要增加維護(hù)數(shù)據(jù)一致性的開銷問題。本優(yōu)選的實(shí)施方式還對(duì)上述代碼塊轉(zhuǎn)換方法進(jìn)行了進(jìn)ー步優(yōu)化,具體來說,在執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)未轉(zhuǎn)換的后繼代碼塊進(jìn)行轉(zhuǎn)換之后,上述代碼塊轉(zhuǎn)換方法還包括根據(jù)轉(zhuǎn)換后的后繼代碼塊的首地址生成哈希索引,并將轉(zhuǎn)換后的后繼代碼塊的首地址存入轉(zhuǎn)換查詢表中索引為哈希索引的表項(xiàng)中;當(dāng)執(zhí)行到后繼代碼塊時(shí),判斷用于記錄待執(zhí)行代碼塊的首地址的執(zhí)行查詢表中是否記錄有后繼代碼塊的首地址;若執(zhí)行查詢表中未記錄有后繼代碼塊的首地址,則從轉(zhuǎn)換查詢表中獲取后繼代碼塊的首地址,并將從轉(zhuǎn)換查詢表中獲取到的后繼代碼塊的首地址記錄在執(zhí)行查詢表中;根據(jù)執(zhí)行查詢表中記錄的后繼代碼塊的首地址來執(zhí)行后繼代碼塊。通過上述優(yōu)選的實(shí)施方式,在轉(zhuǎn)換過程中,并不將轉(zhuǎn)換產(chǎn)生的代碼塊直接放入供執(zhí)行線程使用的執(zhí)行查詢表,而是根據(jù)代碼塊的首地址生成哈希索引,并建立轉(zhuǎn)換查詢表,優(yōu)選的,對(duì)相同的哈希索引值采取用新表項(xiàng)替換舊表項(xiàng)的策略。當(dāng)執(zhí)行線程在執(zhí)行查詢表中未找到所需代碼塊時(shí),查詢上述轉(zhuǎn)換查詢表,如查找成功,則將查找到的代碼塊放入執(zhí)行線程使用的執(zhí)行查詢表;如在上述轉(zhuǎn)換查詢表沒有查找到,則發(fā)出轉(zhuǎn)換請(qǐng)求,執(zhí)行轉(zhuǎn)換操作。實(shí)施例2在上述實(shí)施例I的基礎(chǔ)上,本優(yōu)選的實(shí)施例提供了一種代碼塊轉(zhuǎn)換裝置,具體來說,如圖3所示,該裝置包括第一判斷単元302,用于判斷與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊是否已轉(zhuǎn)換;轉(zhuǎn)換單元304,用于在第一判斷単元302判斷出后繼代碼塊未被轉(zhuǎn)換的情況下,在執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)未轉(zhuǎn)換的后繼代碼塊進(jìn)行轉(zhuǎn)換。優(yōu)選的,在判斷出與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊未被轉(zhuǎn)換時(shí),將與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊的地址存入轉(zhuǎn)換隊(duì)列中,在執(zhí)行線程執(zhí)行當(dāng)前代碼塊的同吋,轉(zhuǎn)換線程從轉(zhuǎn)換隊(duì)列中獲取與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊并進(jìn)行轉(zhuǎn)換。在上述優(yōu)選的實(shí)施方式中,在執(zhí)行線程執(zhí)行當(dāng)前代碼塊的同時(shí),轉(zhuǎn)換線程獲取與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊并進(jìn)行預(yù)翻譯,使得在ニ進(jìn)制翻譯的過程中,執(zhí)行線程在執(zhí)行當(dāng)前代碼塊之后,該當(dāng)前代碼塊可能出現(xiàn)的后繼代碼塊已經(jīng)被轉(zhuǎn)換線程轉(zhuǎn)換完畢,由于執(zhí)行當(dāng)前代碼塊和轉(zhuǎn)換與當(dāng)前代碼塊相關(guān)的后繼代碼塊的操作同時(shí)并行的完成,減少了等待轉(zhuǎn)換代碼塊的時(shí)間。通過并行地處理執(zhí)行和轉(zhuǎn)換工作解決了相關(guān)技術(shù)中的ニ進(jìn)制翻譯過程在程序啟動(dòng)時(shí)需要實(shí)時(shí)轉(zhuǎn)換大量代碼,使得代碼轉(zhuǎn)換的時(shí)間所占比重高、程序啟動(dòng)較慢的問題,達(dá)到了減少轉(zhuǎn)換代碼在程序啟動(dòng)過程中的時(shí)間的效果?;谏鲜鰞?yōu)選的實(shí)施方式,本發(fā)明還對(duì)轉(zhuǎn)換単元304進(jìn)行了改進(jìn),具體來說,如圖4所示,該轉(zhuǎn)換単元304包括接收模塊402,用于接收?qǐng)?zhí)行線程發(fā)送的轉(zhuǎn)換請(qǐng)求,其中,執(zhí)行線程用于執(zhí)行當(dāng)前代碼塊;判斷模塊404,用于判斷是否已存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換;轉(zhuǎn)換模塊406,用于在判斷模塊判斷出不存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換時(shí),在執(zhí)行線程執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換。在上述優(yōu)選的實(shí)施方式中,使用多個(gè)獨(dú)立的轉(zhuǎn)換線程來轉(zhuǎn)換代碼,在轉(zhuǎn)換線程進(jìn)行代碼轉(zhuǎn)換之前,接收到轉(zhuǎn)換請(qǐng)求的當(dāng)前轉(zhuǎn)換線程首先判斷是否存在其他轉(zhuǎn)換線程已經(jīng)對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換,在不存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換時(shí),當(dāng)前轉(zhuǎn)換線程在執(zhí)行當(dāng)前代碼塊的過程中對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換,以提高轉(zhuǎn)換線程轉(zhuǎn)換代碼塊的效率。 本優(yōu)選的實(shí)施方式還對(duì)轉(zhuǎn)換單元304進(jìn)行了改進(jìn),具體來說,如圖5所示,轉(zhuǎn)換單元304還包括清空模塊502,用于在判斷模塊404判斷出存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換時(shí),將轉(zhuǎn)換隊(duì)列清空,并將后繼代碼塊的后繼代碼塊的地址存入到轉(zhuǎn)換隊(duì)列中,其中,轉(zhuǎn)換隊(duì)列用于存儲(chǔ)待轉(zhuǎn)換的代碼塊的地址。在上述優(yōu)選的實(shí)施方式中,接收到轉(zhuǎn)換請(qǐng)求的當(dāng)前轉(zhuǎn)換線程判斷出存在其他轉(zhuǎn)換線程對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換,將轉(zhuǎn)換隊(duì)列清空,并將后繼代碼塊的后繼代碼塊的地址存入到轉(zhuǎn)換隊(duì)列中,由該對(duì)后繼代碼塊進(jìn)行轉(zhuǎn)換的轉(zhuǎn)換線程執(zhí)行轉(zhuǎn)換操作,進(jìn)ー步地提高了轉(zhuǎn)換線程轉(zhuǎn)換代碼塊的效率。本優(yōu)選的實(shí)施方式還對(duì)上述代碼塊轉(zhuǎn)換裝置進(jìn)行了進(jìn)ー步改進(jìn),具體來說,如圖6所示,該裝置還包括存儲(chǔ)單元602,用于將轉(zhuǎn)換后的后繼代碼塊存入與當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)的緩存區(qū),其中,每ー個(gè)當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)ー個(gè)緩存區(qū)。在上述優(yōu)選的實(shí)施方式中,將轉(zhuǎn)換后的后繼代碼塊存入與當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)的緩存區(qū),且每ー個(gè)當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)ー個(gè)緩存區(qū),保證每個(gè)轉(zhuǎn)換線程可以獨(dú)立轉(zhuǎn)換代碼,并將轉(zhuǎn)換后的代碼獨(dú)立存儲(chǔ),方便調(diào)用的同吋,避免了由于多線程使用相同的數(shù)據(jù)空間需要增加維護(hù)數(shù)據(jù)一致性的開銷問題。本優(yōu)選的實(shí)施方式還對(duì)上述代碼塊轉(zhuǎn)換裝置進(jìn)行優(yōu)化,具體來說,如圖7所示,該裝置還包括哈希單元702,用于根據(jù)轉(zhuǎn)換后的后繼代碼塊的首地址生成哈希索引,并將轉(zhuǎn)換后的后繼代碼塊的首地址存入轉(zhuǎn)換查詢表中索引為哈希索引的表項(xiàng)中;第二判斷単元704,用于在執(zhí)行到后繼代碼塊時(shí),判斷用于記錄待執(zhí)行代碼塊的首地址的執(zhí)行查詢表中是否記錄有后繼代碼塊的首地址;獲取單元706,用于在第二判斷単元704判斷出執(zhí)行查詢表中未記錄有后繼代碼塊的首地址,則從轉(zhuǎn)換查詢表中獲取后繼代碼塊的首地址,并將從轉(zhuǎn)換查詢表中獲取到的后繼代碼塊的首地址記錄在執(zhí)行查詢表中;執(zhí)行單元708,用于根據(jù)執(zhí)行查詢表中記錄的后繼代碼塊的首地址來執(zhí)行后繼代碼塊。此處需要說明的是,上述第一判斷単元302和第二判斷単元704,可以是執(zhí)行判斷功能的同一個(gè)判斷単元,也可以是兩個(gè)相互獨(dú)立的判斷単元。在上述優(yōu)選的實(shí)施方式中可以看出,在轉(zhuǎn)換過程中,并不將轉(zhuǎn)換產(chǎn)生的代碼塊直接放入供執(zhí)行線程使用的執(zhí)行查詢表,而是根據(jù)代碼塊的首地址生成哈希索引,并建立轉(zhuǎn)換查詢表,優(yōu)選的,對(duì)相同的哈希索引值采取用新表項(xiàng)替換舊表項(xiàng)的策略。當(dāng)執(zhí)行線程在執(zhí)行查詢表中未找到所需代碼塊時(shí),查詢上述轉(zhuǎn)換查詢表,如查找成功,則將查找到的代碼塊放入執(zhí)行線程使用的執(zhí)行查詢表;如在上述轉(zhuǎn)換查詢表沒有查找到,則發(fā)出轉(zhuǎn)換請(qǐng)求,執(zhí)行轉(zhuǎn)換操作。實(shí)施例3在上述實(shí)施例I和實(shí)施例2的基礎(chǔ)上,本實(shí)施例提供了ー種具體的代碼塊轉(zhuǎn)換方法,在該代碼塊轉(zhuǎn)換方法中,創(chuàng)建了ー個(gè)執(zhí)行線程和多個(gè)轉(zhuǎn)換線程,其中,執(zhí)行線程負(fù)責(zé)執(zhí)行代碼塊,轉(zhuǎn)換線程負(fù)責(zé)轉(zhuǎn)換代碼塊。該代碼塊轉(zhuǎn)換方法包括如下步驟I.執(zhí)行線程發(fā)起轉(zhuǎn)換請(qǐng)求當(dāng)執(zhí)行線程判斷出所要執(zhí)行的代碼塊未被轉(zhuǎn)換時(shí),執(zhí)行線程暫停執(zhí)行并發(fā)起轉(zhuǎn)換請(qǐng)求以通知轉(zhuǎn)換線程需要轉(zhuǎn)換指定的基本塊(或稱代碼塊)。2.轉(zhuǎn)換線程在接收到轉(zhuǎn)換請(qǐng)求后,轉(zhuǎn)換相應(yīng)的基本塊(代碼塊);優(yōu)選的,在轉(zhuǎn)換過程中,首先判斷是否有其他轉(zhuǎn)換線程轉(zhuǎn)換該被請(qǐng)求的基本塊(代 碼塊),如果有,則由轉(zhuǎn)換該被請(qǐng)求的基本塊(代碼塊)的轉(zhuǎn)換線程響應(yīng)轉(zhuǎn)換請(qǐng)求,同時(shí),清空轉(zhuǎn)換隊(duì)列并重新預(yù)取后繼代碼塊并填充轉(zhuǎn)換隊(duì)列,其中,在轉(zhuǎn)換隊(duì)列中存儲(chǔ)待轉(zhuǎn)換的代碼塊的地址,接收到轉(zhuǎn)換請(qǐng)求的轉(zhuǎn)換線程繼續(xù)執(zhí)行其此前的預(yù)取和轉(zhuǎn)換工作;如果不存在其他轉(zhuǎn)換線程轉(zhuǎn)換該被請(qǐng)求的基本塊(代碼塊),由該接收到轉(zhuǎn)換請(qǐng)求的轉(zhuǎn)換線程響應(yīng)該轉(zhuǎn)換請(qǐng)求,并通知其他轉(zhuǎn)換線程不再響應(yīng)該轉(zhuǎn)換請(qǐng)求。在轉(zhuǎn)換過程中,轉(zhuǎn)換線程能夠獲取當(dāng)前代碼塊的后繼代碼塊的地址以及直接跳轉(zhuǎn)的目標(biāo)地址,從而對(duì)后繼代碼塊進(jìn)行預(yù)取并進(jìn)ー步并行轉(zhuǎn)換,其中,在轉(zhuǎn)換隊(duì)列中存儲(chǔ)待轉(zhuǎn)換的代碼塊的地址。當(dāng)預(yù)取到多個(gè)后繼代碼塊時(shí),將其依次放入稱為轉(zhuǎn)換隊(duì)列的緩存區(qū),所有轉(zhuǎn)換線程共享該轉(zhuǎn)換隊(duì)列的緩存區(qū),并按照順序?qū)D(zhuǎn)換隊(duì)列的緩存區(qū)的基本塊(代碼塊)進(jìn)行并行轉(zhuǎn)換,同時(shí)繼續(xù)預(yù)取后繼代碼塊并填充轉(zhuǎn)換隊(duì)列,實(shí)現(xiàn)廣度優(yōu)先的預(yù)測(cè)過程。優(yōu)選的,在轉(zhuǎn)換過程中,每個(gè)轉(zhuǎn)換線程使用相互獨(dú)立的轉(zhuǎn)換代碼緩存區(qū)存儲(chǔ)轉(zhuǎn)換后的基本塊(代碼塊),避免了由于多個(gè)轉(zhuǎn)換線程使用相同的數(shù)據(jù)空間而需要額外增加維護(hù)數(shù)據(jù)一致性的開銷問題。同時(shí),為了避免在預(yù)取轉(zhuǎn)換的基本塊(代碼塊)時(shí)影響執(zhí)行線程檢索基本塊的速度,優(yōu)選的,在轉(zhuǎn)換過程中,并不將轉(zhuǎn)換產(chǎn)生的代碼塊直接放入供執(zhí)行線程使用的執(zhí)行查詢表,而是根據(jù)代碼塊的首地址生成哈希索引,并建立轉(zhuǎn)換查詢表,優(yōu)選的,對(duì)相同的哈希索引值采取用新表項(xiàng)替換舊表項(xiàng)的策略。當(dāng)執(zhí)行線程在執(zhí)行查詢表中未找到所需代碼塊時(shí),查詢上述轉(zhuǎn)換查詢表,如查找成功,則將查找到的代碼塊放入執(zhí)行線程使用的執(zhí)行查詢表;如在上述轉(zhuǎn)換查詢表沒有查找到,則發(fā)出轉(zhuǎn)換請(qǐng)求,執(zhí)行轉(zhuǎn)換操作。在上述轉(zhuǎn)換工程中,當(dāng)轉(zhuǎn)換隊(duì)列為空,且沒有轉(zhuǎn)換請(qǐng)求時(shí),轉(zhuǎn)換線程暫停,直到再次接收到請(qǐng)求,重復(fù)上述預(yù)取和并行轉(zhuǎn)換的過程。此外,本實(shí)施例還提供了一種代碼塊轉(zhuǎn)換方法中并行轉(zhuǎn)換的原理圖,具體地,如圖8所示,圖8中可以看出,完成代碼塊轉(zhuǎn)換的線程包括轉(zhuǎn)換線程和執(zhí)行線程,具體來說,該方法包括如下步驟在代碼塊轉(zhuǎn)換過程中,執(zhí)行線程首先根據(jù)轉(zhuǎn)換線程對(duì)應(yīng)緩存區(qū)查詢是否存在已經(jīng)翻譯過的后繼代碼塊,若查詢成功,執(zhí)行線程執(zhí)行該翻譯過的后繼代碼塊,若查詢失敗,則向翻譯線程發(fā)出轉(zhuǎn)換請(qǐng)求。轉(zhuǎn)換線程接收?qǐng)?zhí)行線程發(fā)起的轉(zhuǎn)換請(qǐng)求,判斷是否由該接收轉(zhuǎn)換請(qǐng)求的轉(zhuǎn)換線程進(jìn)行轉(zhuǎn)換,具體判斷方法為首先判斷是否有其他轉(zhuǎn)換線程轉(zhuǎn)換被請(qǐng)求的基本塊(代碼塊),如果有,則由轉(zhuǎn)換被請(qǐng)求的基本塊(代碼塊)的轉(zhuǎn)換線程響應(yīng)轉(zhuǎn)換請(qǐng)求,同時(shí),清空轉(zhuǎn)換隊(duì)列并重新預(yù)取后繼代碼塊并填充轉(zhuǎn)換隊(duì)列;如果不存在其他轉(zhuǎn)換線程轉(zhuǎn)換被請(qǐng)求的基本塊(代碼塊),由該接收到轉(zhuǎn)換請(qǐng)求的轉(zhuǎn)換線程響應(yīng)轉(zhuǎn)換請(qǐng)求,并通知其他轉(zhuǎn)換線程不再響應(yīng)轉(zhuǎn)換請(qǐng)求。在響應(yīng)轉(zhuǎn)換請(qǐng)求并完成轉(zhuǎn)換之后,喚醒執(zhí)行線程,并將翻譯后的后繼代碼塊存入轉(zhuǎn)換線程對(duì)應(yīng)緩存區(qū),以供執(zhí)行線程查詢;執(zhí)行線程根據(jù)轉(zhuǎn)換線程對(duì)應(yīng)緩存區(qū)查詢是否存在已經(jīng)翻譯過的后繼代碼塊。從以上的描述中,可以看出,在本發(fā)明中,使用多個(gè)獨(dú)立的轉(zhuǎn)換線程來轉(zhuǎn)換代碼,具體來說,在執(zhí)行線程執(zhí)行當(dāng)前代碼塊的同時(shí),多個(gè)轉(zhuǎn)換線程轉(zhuǎn)換當(dāng)前代碼塊的后繼代碼塊,使得在ニ進(jìn)制翻譯的過程中,執(zhí)行線程和轉(zhuǎn)換線程并行處理執(zhí)行和轉(zhuǎn)換工作,解決了相關(guān)技術(shù)中的ニ進(jìn)制翻譯在程序啟動(dòng)過程中需要實(shí)時(shí)轉(zhuǎn)換大量代碼,使得代碼轉(zhuǎn)換的時(shí)間所占比重高、程序啟動(dòng)較慢的問題,達(dá)到了減少轉(zhuǎn)換代碼在程序啟動(dòng)過程中的時(shí)間的效果。
      顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      權(quán)利要求
      1.一種代碼塊轉(zhuǎn)換方法,其特征在于,包括 判斷與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊是否已轉(zhuǎn)換; 若所述后繼代碼塊未被轉(zhuǎn)換,則在執(zhí)行所述當(dāng)前代碼塊的同時(shí)并行地對(duì)未轉(zhuǎn)換的后繼代碼塊進(jìn)行轉(zhuǎn)換。
      2.根據(jù)權(quán)利要求I所述的方法,其特征在于,在執(zhí)行所述當(dāng)前代碼塊的同時(shí)并行地對(duì)未轉(zhuǎn)換的后繼代碼塊進(jìn)行轉(zhuǎn)換的步驟包括 當(dāng)前轉(zhuǎn)換線程接收?qǐng)?zhí)行線程發(fā)送的轉(zhuǎn)換請(qǐng)求,其中,所述執(zhí)行線程用于執(zhí)行所述當(dāng)前代碼塊; 所述當(dāng)前轉(zhuǎn)換線程判斷是否已存在其他轉(zhuǎn)換線程對(duì)所述后繼代碼塊進(jìn)行轉(zhuǎn)換; 若不存在其他轉(zhuǎn)換線程對(duì)所述后繼代碼塊進(jìn)行轉(zhuǎn)換,則所述當(dāng)前轉(zhuǎn)換線程在所述執(zhí)行線程執(zhí)行所述當(dāng)前代碼塊的同時(shí)并行地對(duì)所述后繼代碼塊進(jìn)行轉(zhuǎn)換。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在干,在所述當(dāng)前轉(zhuǎn)換線程判斷是否已存在其他轉(zhuǎn)換線程對(duì)所述后繼代碼塊進(jìn)行轉(zhuǎn)換之后,還包括 若存在其他轉(zhuǎn)換線程對(duì)所述后繼代碼塊進(jìn)行轉(zhuǎn)換,則將轉(zhuǎn)換隊(duì)列清空,并將所述后繼代碼塊的后繼代碼塊的地址存入到所述轉(zhuǎn)換隊(duì)列中,其中,所述轉(zhuǎn)換隊(duì)列用于存儲(chǔ)待轉(zhuǎn)換的代碼塊的地址。
      4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述當(dāng)前轉(zhuǎn)換線程在所述執(zhí)行線程執(zhí)行所述當(dāng)前代碼塊的同時(shí)并行地對(duì)所述后繼代碼塊進(jìn)行轉(zhuǎn)換之后,還包括 所述當(dāng)前轉(zhuǎn)換線程將轉(zhuǎn)換后的后繼代碼塊存入與所述當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)的緩存區(qū),其中,每ー個(gè)當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)ー個(gè)緩存區(qū)。
      5.根據(jù)權(quán)利要求I所述的方法,其特征在于,在執(zhí)行所述當(dāng)前代碼塊的同時(shí)并行地對(duì)未轉(zhuǎn)換的后繼代碼塊進(jìn)行轉(zhuǎn)換之后,還包括 根據(jù)轉(zhuǎn)換后的后繼代碼塊的首地址生成哈希索引,并將轉(zhuǎn)換后的后繼代碼塊的首地址存入轉(zhuǎn)換查詢表中索引為所述哈希索引的表項(xiàng)中; 當(dāng)執(zhí)行到所述后繼代碼塊時(shí),判斷用于記錄待執(zhí)行代碼塊的首地址的執(zhí)行查詢表中是否記錄有所述后繼代碼塊的首地址; 若所述執(zhí)行查詢表中未記錄有所述后繼代碼塊的首地址,則從所述轉(zhuǎn)換查詢表中獲取所述后繼代碼塊的首地址,并將從所述轉(zhuǎn)換查詢表中獲取到的所述后繼代碼塊的首地址記錄在所述執(zhí)行查詢表中; 根據(jù)所述執(zhí)行查詢表中記錄的所述后繼代碼塊的首地址來執(zhí)行所述后繼代碼塊。
      6.一種代碼塊轉(zhuǎn)換裝置,其特征在于,包括 第一判斷単元,用于判斷與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊是否已轉(zhuǎn)換;轉(zhuǎn)換單元,用于在所述第一判斷単元判斷出所述后繼代碼塊未被轉(zhuǎn)換的情況下,在執(zhí)行所述當(dāng)前代碼塊的同時(shí)并行地對(duì)未轉(zhuǎn)換的后繼代碼塊進(jìn)行轉(zhuǎn)換。
      7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述轉(zhuǎn)換単元包括 接收模塊,用于接收?qǐng)?zhí)行線程發(fā)送的轉(zhuǎn)換請(qǐng)求,其中,所述執(zhí)行線程用于執(zhí)行所述當(dāng)前代碼塊; 判斷模塊,用于判斷是否已存在其他轉(zhuǎn)換線程對(duì)所述后繼代碼塊進(jìn)行轉(zhuǎn)換; 轉(zhuǎn)換模塊,用于在所述判斷模塊判斷出不存在其他轉(zhuǎn)換線程對(duì)所述后繼代碼塊進(jìn)行轉(zhuǎn)換時(shí),在所述執(zhí)行線程執(zhí)行所述當(dāng)前代碼塊的同時(shí)并行地對(duì)所述后繼代碼塊進(jìn)行轉(zhuǎn)換。
      8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述轉(zhuǎn)換單元還包括 清空模塊,用于在所述判斷模塊判斷出存在其他轉(zhuǎn)換線程對(duì)所述后繼代碼塊進(jìn)行轉(zhuǎn)換時(shí),將轉(zhuǎn)換隊(duì)列清空,并將所述后繼代碼塊的后繼代碼塊的地址存入到所述轉(zhuǎn)換隊(duì)列中,其中,所述轉(zhuǎn)換隊(duì)列用于存儲(chǔ)待轉(zhuǎn)換的代碼塊的地址。
      9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括 存儲(chǔ)單元,用于將轉(zhuǎn)換后的后繼代碼塊存入與所述當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)的緩存區(qū),其中,每ー個(gè)當(dāng)前轉(zhuǎn)換線程對(duì)應(yīng)ー個(gè)緩存區(qū)。
      10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,還包括 哈希單元,用于根據(jù)轉(zhuǎn)換后的后繼代碼塊的首地址生成哈希索引,并將轉(zhuǎn)換后的后繼代碼塊的首地址存入轉(zhuǎn)換查詢表中索引為所述哈希索引的表項(xiàng)中; 第二判斷単元,用于在執(zhí)行到所述后繼代碼塊時(shí),判斷用于記錄待執(zhí)行代碼塊的首地址的執(zhí)行查詢表中是否記錄有所述后繼代碼塊的首地址; 獲取單元,用于在所述第二判斷単元判斷出執(zhí)行查詢表中未記錄有所述后繼代碼塊的首地址,則從所述轉(zhuǎn)換查詢表中獲取所述后繼代碼塊的首地址,并將從所述轉(zhuǎn)換查詢表中獲取到的所述后繼代碼塊的首地址記錄在所述執(zhí)行查詢表中; 執(zhí)行單元,用于根據(jù)所述執(zhí)行查詢表中記錄的所述后繼代碼塊的首地址來執(zhí)行所述后繼代碼塊。
      全文摘要
      本發(fā)明提供了一種代碼塊轉(zhuǎn)換方法和裝置,其中,該方法包括判斷與正在執(zhí)行的當(dāng)前代碼塊相關(guān)的后繼代碼塊是否已轉(zhuǎn)換;若未轉(zhuǎn)換,則在執(zhí)行當(dāng)前代碼塊的同時(shí)并行地對(duì)未轉(zhuǎn)換的后繼代碼塊進(jìn)行轉(zhuǎn)換。本發(fā)明通過并行地處理執(zhí)行和轉(zhuǎn)換工作解決了相關(guān)技術(shù)中的二進(jìn)制翻譯過程在程序啟動(dòng)時(shí)需要實(shí)時(shí)轉(zhuǎn)換大量代碼,使得代碼轉(zhuǎn)換的時(shí)間所占比重高、程序啟動(dòng)較慢的問題,達(dá)到了減少轉(zhuǎn)換代碼在程序啟動(dòng)過程中的時(shí)間的效果。
      文檔編號(hào)G06F9/45GK102693146SQ20121014332
      公開日2012年9月26日 申請(qǐng)日期2012年5月9日 優(yōu)先權(quán)日2012年5月9日
      發(fā)明者張曉春, 靳國(guó)杰, 高翔 申請(qǐng)人:龍芯中科技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1