TW201903606A - 二元碼轉譯裝置及方法 - Google Patents

二元碼轉譯裝置及方法 Download PDF

Info

Publication number
TW201903606A
TW201903606A TW106119320A TW106119320A TW201903606A TW 201903606 A TW201903606 A TW 201903606A TW 106119320 A TW106119320 A TW 106119320A TW 106119320 A TW106119320 A TW 106119320A TW 201903606 A TW201903606 A TW 201903606A
Authority
TW
Taiwan
Prior art keywords
function
code
processor
memory
address
Prior art date
Application number
TW106119320A
Other languages
English (en)
Other versions
TWI660307B (zh
Inventor
楊武
林宗俊
Original Assignee
國立交通大學
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 國立交通大學 filed Critical 國立交通大學
Priority to TW106119320A priority Critical patent/TWI660307B/zh
Priority to US15/712,158 priority patent/US10203942B2/en
Publication of TW201903606A publication Critical patent/TW201903606A/zh
Application granted granted Critical
Publication of TWI660307B publication Critical patent/TWI660307B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

一種二元碼轉譯裝置,包含轉譯模組、記憶體及處理器。轉譯模組用以轉譯第二程式碼至第一程式碼。處理器用以執行轉譯模組已轉譯的第一程式碼。第一程式碼暫存於該記憶體中並具有程式執行位址,至少一函式庫暫存於記憶體中,至少一函式庫包含第一函式以及第二函式,且第一函式與第二函式分別位於記憶體的第一函式位址以及第二函式位址。當處理器仍在執行第一程式碼並呼叫第一函式時,利用轉譯模組轉譯第一程式碼得到接續第一函式之第二函式,且處理器取得第二函式位於記憶體中之第二函式位址。當第一程式碼呼叫第一函式並執行完成時,處理器不返回程式執行位置並直接執行位於第二函式位址上的第二函式。

Description

二元碼轉譯裝置及方法
本揭示文件是關於二元碼轉譯裝置及方法,更明確而言是關於動態二元碼轉譯裝置及方法。
隨著雲端運算的蓬勃發展,雲端資料會在不同平台間存取應用。由於不同平台間可能會使用不同處理器,雲端資料會在不同平台間轉換,跨平台虛擬化的技術應運而生,成為雲端技術的重要議題。動態二元碼轉譯(Dynamic Binary Translation)為跨平台虛擬化之核心技術。在動態二元碼轉譯的過程,因函式返回所導致的間接跳躍(indirect branch),可能會導致處理速度降低以致整體系統效能不佳的問題。
本揭示內容提供一種二元碼轉譯裝置,包含轉譯模組、記憶體及處理器。轉譯模組用以轉譯第二程式碼至第一程式碼。處理器用以執行轉譯模組已轉譯的第一程式碼。第一程式碼暫存於記憶體中並具有程式執行位址,至少一函 式庫暫存於記憶體中,至少一函式庫包含第一函式以及第二函式,且第一函式與第二函式分別位於記憶體的第一函式位址以及第二函式位址。當處理器仍在執行第一程式碼並呼叫第一函式時,利用轉譯模組轉譯第一程式碼得到接續第一函式之第二函式,且處理器取得第二函式位於記憶體中之第二函式位址。當第一程式碼呼叫第一函式並執行完成時,處理器不返回程式執行位置並直接執行位於第二函式位址上的第二函式。
本揭示內容亦提供一種二元碼轉譯方法,包含下列步驟。轉譯第二程式碼至第一程式碼,其中第一程式碼暫存於記憶體中並具有程式執行位址,至少一函式庫暫存於記憶體中,至少一函式庫包含第一函式以及第二函式,且第一函式與第二函式分別位於記憶體的第一函式位址以及第二函式位址。由處理器執行已轉譯的第一程式碼。當處理器仍在執行第一程式碼並呼叫第一函式時,轉譯第一程式碼得到接續第一函式之第二函式,且處理器取得第二函式位於記憶體中之第二函式位址。當第一程式碼呼叫第一函式並執行完成時,處理器不返回程式執行位址並直接執行位於第二函式位址上的第二函式。
本揭示內容更提供一種二元碼轉譯裝置,包含處理器及記憶體。在處理器執行將變數儲存至記憶體之第一位址之第一指令且變數關聯於記憶體之位址時,若第一指令之後存在將變數儲存至記憶體之第二位址之第二指令且在第一指令及第二指令之間存在與變數無關之若干指令,則處理 器只執行第一指令。
本揭示內容亦提供一種二元碼轉譯裝置,包含處理器及記憶體。在處理器執行從記憶體存取變數至第一暫存器之第一指令且變數關聯於記憶體之位址時,若第一指令之後存在從記憶體存取變數至第二暫存器之第二指令時且在第一指令及第二指令之間存在與變數無關之若干指令,則處理器只執行第二指令。
100‧‧‧目標裝置
110‧‧‧目標處理器
120‧‧‧目標程式碼
130‧‧‧轉譯模組
140‧‧‧程式碼接收模組
150‧‧‧記憶體
160‧‧‧目標函式庫
200‧‧‧來源裝置
210‧‧‧來源處理器
220‧‧‧來源程式碼
FunS1‧‧‧第一來源函式
FunS2‧‧‧第二來源函式
FunD1‧‧‧第一目標函式
FunD2‧‧‧第二目標函式
S410至S470‧‧‧步驟
S510至S570‧‧‧步驟
S610至S670‧‧‧步驟
X0‧‧‧變數
第1圖係依照本揭示文件一實施例繪示之二元碼於不同裝置間轉譯之示意圖。
第2圖係依照本揭示文件一實施例繪示之二元碼在目標裝置中轉譯及執行之示意圖。
第3圖係依照本揭示文件一實施例繪示之目標程式碼執行函式之示意圖。
第4圖係依照本揭示文件一實施例繪示之二元碼在目標裝置中轉譯及執行的方法之流程圖。
第5圖係依照本揭示文件另一實施例繪示之二元碼在目標裝置中轉譯及執行的方法之流程圖。
第6圖係依照本揭示文件又一實施例繪示之二元碼在目標裝置中轉譯及執行的方法之流程圖。
第1圖係依照本揭示文件一實施例繪示之二元碼於不同裝置間轉譯之示意圖。參考第1圖,來源裝置200包含來源處理器210,來源程式碼220是適於在來源處理器210處理之程式碼。繼續參考第1圖,於一實施例中,目標裝置100利用程式碼接收模組140接收來自來源裝置200之來源程式碼220。一般而言,目標裝置100與來源裝置200會是不同的系統。在目標裝置100中,使用轉譯模組130轉譯程式碼接收模組140中的來源程式碼220以得到適於在目標處理器110處理之目標程式碼120。
在一實施例中,目標處理器110可為ARM、SoC、MIPS、x86、DSP或PowerPC。
在一實施例中,來源處理器210可為ARM、SoC、MIPS、x86、DSP或PowerPC。
第2圖係依照本揭示文件一實施例繪示之二元碼在目標裝置100中轉譯及執行之示意圖。目標裝置100包含轉譯模組130、記憶體150及目標處理器110。轉譯模組130用以轉譯來源程式碼220至目標程式碼120。目標處理器110用以執行轉譯模組130已轉譯的目標程式碼120。
第3圖係依照本揭示文件一實施例繪示之目標程式碼執行函式之示意圖。目標程式碼120是適於在目標處理器110之程式碼,且來源程式碼220是適於在來源處理器210之程式碼。在來源程式碼220中在呼叫第一來源函式FunS1()後,隨即呼叫第二來源函式FunS2()。第一來源函式FunS1()及第二來源函式FunS2()均存在於來源函式庫(圖 中未示)中。同樣地,從來源程式碼220轉譯後的目標程式碼120中亦存在第一目標函式FunD1()及第二目標函式FunD2(),在目標程式碼120中在呼叫第一目標函式FunD1()後,隨即呼叫第二目標函式FunD2()。第一目標函式FunD1()及第二目標函式FunD2()均存在於來源函式庫160。
第4圖係依照本揭示文件一實施例繪示之二元碼在目標裝置中轉譯及執行的方法之流程圖。同時參考第2、3及4圖。在步驟S410,首先,由轉譯模組130轉譯來源程式碼220至目標程式碼120。
目標程式碼120暫存於記憶體150中並具有程式執行位址。程式執行位址即第一目標函式FunD1()之返回位址。一般而言,返回位址會暫存於連接暫存器(link register)中,以使得在函式執行完成後,跳躍回原來的程式執行位址而繼續執行程式碼。來源函式庫160暫存於記憶體150中且包含若干函式,其中來源函式庫160包含第一目標函式FunD1()及第二目標函式FunD2()。第一目標函式FunD1()及第二目標函式FunD2()位於記憶體150的第一目標函式位址以及第二目標函式位址。
在步驟S430,目標處理器110用以執行轉譯模組130已轉譯的目標程式碼120。
一般而言,在靜態二元碼轉譯時,由於程式碼是完整轉譯的,因此執行第一目標函式FunD1()之後跳躍至第二目標函式FnnD2()的第二目標函式位址是已知的。因 此,可輕易得知第二目標函式位址而跳躍。然而,在動態二元碼轉譯時,因為程式碼並非完全轉譯的,而是在執行一個區段時同時轉譯下一個區段,所以第二目標函式位址是未知的。
因此,在步驟S450,本揭示內容提供能夠提升動態二元碼轉譯處理效益的機制,當目標處理器110仍在執行目標程式碼120並呼叫第一目標函式FunD1()時,轉譯目標程式碼120得到接續第一目標函式FunD1()之第二目標函式FunD2(),且目標處理器110取得第二目標函式FunD2()位於記憶體150中之第二目標函式位址。
最後,在步驟S470,當目標程式碼120呼叫第一目標函式FunD1()並執行完成時,目標處理器120不返回程式執行位址並直接執行位於第二目標函式位址上的第二目標函式FunD2()。
依照上述步驟,由於在第一目標函式FunD1()返回前,目標處理器110已從來源程式碼220轉譯出第二目標函式位址,藉由第二目標函式位址取代程式執行位址(即返回位址)而直接執行接續於第一目標函式FunD1()的第二目標函式FunD2(),可使得動態二元碼轉譯更有效率。
第5圖係依照本揭示文件另一實施例繪示之二元碼在目標裝置中轉譯及執行的方法之流程圖。依照以下步驟,可消除程式碼中對記憶體的冗餘存取。
同時參考第2及5圖。首先,在步驟S510,目標處理器110執行以來源程式碼220轉譯之目標程式碼120。在步驟 S530,目標處理器110執行將變數X0儲存至記憶體150之第一位址之第一指令且變數X0關聯於記憶體150之位址。步驟S550中,判斷該第一指令之後是否存在將變數X0儲存至記憶體150之第二位址之第二指令,且判斷在第一指令及第二指令之間是否存在與變數無關之若干指令。若是,則進入步驟S570,目標處理器110只執行該第一指令。若否,則回到步驟S510,繼續執行目標程式碼120。
同時參考第2圖及第5圖及以下指令碼。以下指令碼是根據第5圖之步驟之儲存資料到記憶體的指令之實例。記憶體位址位於變數X0中,執行時才可得知此明確位址。在兩個對相同的對暫存器模擬的全域變數(global variable)的存取指令間,第二指令(為存取指令)是無法消除的。由於在靜態二元碼轉譯過程中,無法得知儲存資料到記憶體的指令之位址是否與對暫存器模擬的全域變數其位址相同。然而,在動態二元碼轉譯過程中,記憶體位址是於變數X0當中之儲存資料到記憶體的指令,此位址是自來源記憶體之操作指令轉譯過來,其記憶體指令操作範圍為來源二元碼映像(source binary image)或為二元碼轉譯系統所提供的模擬堆疊(emulated stack),然而對於對暫存器模擬的全域變數其記憶體位址是在二元碼轉譯系統本身,兩者記憶體區塊是不同的,因此可將第二指令消除,即步驟S570中,目標處理器110只執行該第一指令。
%2 = load i64* @X0
store i64 %0, i64* %1
%3 = load i64* @X0
同時參考第2圖及第5圖及以下程式碼。以下程式碼是根據第5圖之步驟之儲存資料到記憶體的指令之實例。記憶體位址是位於變數X0中,在兩個對相同的對暫存器模擬的全域變數的儲存與存取指令中間,對暫存器模擬的全域變數的存取指令(即第二指令)可被消除(步驟S570),亦即直接拿取對暫存器模擬的全域變數的儲存指令的資料使用。
store i64 %2, i64* @X0
store i64 %0, i64* %1
%3 = load i64* @X0
第6圖係依照本揭示文件又一實施例繪示之二元碼在目標裝置中轉譯及執行的方法之流程圖。依照以下步驟,可消除程式碼中對記憶體的冗餘存取。
同時參考第2圖及第6圖。首先,在步驟S610,目標處理器110執行以來源程式碼220轉譯之目標程式碼120。在步驟S630,目標處理器110執行從記憶體150存取變數X0至第一暫存器之第一指令且變數X0關聯於記憶體150之位址。在步驟S650,判斷第一指令之後是否存在從記憶體150存取該變數X0至第二暫存器之第二指令時,且判斷在第一指令及第二指令之間是否存在與變數X0無關之若干指令。若是,則進入步驟S670,目標處理器110只執行該第二指令。若否,則回到步驟S610,繼續執行目標程式碼120。
同時參考第2圖及第6圖及以下程式碼。以下程式碼是根據第6圖之步驟之從記憶體存取資料的指令之實例。記憶體位址是位於在變數X0中,在兩個對相同的對暫存器模擬 的全域變數之儲存指令中間,可將第一儲存指令(即第一指令)消除。即步驟S670,目標處理器110只執行該第二指令。
store i64 %1, i64* @X0
%3 = load i64* %0
store i64 %2, i64* @X0
雖然上文實施方式中揭露了本揭示文件的具體實施例,然其並非用以限定本揭示文件,本揭示文件所屬技術領域中具有通常知識者,在不悖離本揭示文件之原理與精神的情形下,當可對其進行各種更動與修飾,因此本揭示文件之保護範圍當以附隨申請專利範圍所界定者為準。

Claims (10)

  1. 一種二元碼轉譯裝置,包含:一轉譯模組,用以轉譯一第二程式碼至一第一程式碼;一記憶體;及一處理器,用以執行該轉譯模組已轉譯的該第一程式碼;其中該第一程式碼暫存於該記憶體中並具有一程式執行位址,至少一函式庫暫存於該記憶體中,該至少一函式庫包含一第一函式以及一第二函式,且該第一函式與該第二函式分別位於該記憶體的一第一函式位址以及一第二函式位址;其中當該處理器仍在執行該第一程式碼並呼叫該第一函式時,利用該轉譯模組轉譯之該第一程式碼得到接續該第一函式之該第二函式,且該處理器取得該第二函式位於該記憶體中之該第二函式位址;且當該第一程式碼呼叫該第一函式並執行完成時,該處理器不返回該程式執行位址並直接執行位於該第二函式位址上的該第二函式。
  2. 如請求項1所述之裝置,其中該第二程式碼可在一第二處理器上執行,該第二處理器與該處理器為不同類型的處理器。
  3. 如請求項1所述之裝置,其中在該轉譯模組 轉譯該第二程式碼為該第一程式碼完成後,該處理器才執行該第一程式碼。
  4. 如請求項1所述之裝置,其中在該轉譯模組在轉譯該第二程式碼為該第一程式碼尚未完成前,該處理器即執行該第一程式碼。
  5. 一種二元碼轉譯方法,包含:轉譯一第二程式碼至一第一程式碼,其中該第一程式碼暫存於一記憶體中並具有一程式執行位址,至少一函式庫暫存於該記憶體中,該至少一函式庫包含一第一函式以及一第二函式,且該第一函式與該第二函式分別位於該記憶體的一第一函式位址以及一第二函式位址;由一處理器執行已轉譯的該第一程式碼;當該處理器仍在執行該第一程式碼並呼叫該第一函式時,轉譯該第一程式碼得到接續該第一函式之該第二函式,且該處理器取得該第二函式位於該記憶體中之該第二函式位址;且當該第一程式碼呼叫該第一函式並執行完成時,該處理器不返回該程式執行位址並直接執行位於該第二函式位址上的該第二函式。
  6. 如請求項5所述之方法,其中該第二程式碼可在一第二處理器上執行,該第二處理器與該處理器為不同類型的處理器。
  7. 如請求項5所述之方法,其中在轉譯該第二程式碼為該第一程式碼完成後,該處理器才執行該第一程式碼。
  8. 如請求項5所述之方法,其中在轉譯該第二程式碼為該第一程式碼尚未完成前,該處理器即執行該第一程式碼。
  9. 一種二元碼轉譯裝置,包含:一處理器;及一記憶體,其中在該處理器執行將一變數儲存至該記憶體之一第一位址之一第一指令且該變數關聯於該記憶體之一位址時,若該第一指令之後存在將該變數儲存至該記憶體之一第二位址之一第二指令且在該第一指令及該第二指令之間存在與該變數無關之若干指令,則該處理器只執行該第一指令。
  10. 一種二元碼轉譯裝置,包含:一處理器;及一記憶體,其中在該處理器執行從該記憶體存取一變數至一第一暫存器之一第一指令且該變數關聯於該記憶體之一位址時,若該第一指令之後存在從該記憶體存取該變數至一第 二暫存器之一第二指令時且在該第一指令及該第二指令之間存在與該變數無關之若干指令,則該處理器只執行該第二指令。
TW106119320A 2017-06-09 2017-06-09 二元碼轉譯裝置及方法 TWI660307B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW106119320A TWI660307B (zh) 2017-06-09 2017-06-09 二元碼轉譯裝置及方法
US15/712,158 US10203942B2 (en) 2017-06-09 2017-09-22 Binary-code translation device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW106119320A TWI660307B (zh) 2017-06-09 2017-06-09 二元碼轉譯裝置及方法

Publications (2)

Publication Number Publication Date
TW201903606A true TW201903606A (zh) 2019-01-16
TWI660307B TWI660307B (zh) 2019-05-21

Family

ID=64563527

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106119320A TWI660307B (zh) 2017-06-09 2017-06-09 二元碼轉譯裝置及方法

Country Status (2)

Country Link
US (1) US10203942B2 (zh)
TW (1) TWI660307B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018122920A1 (de) * 2018-09-19 2020-03-19 Endress+Hauser Conducta Gmbh+Co. Kg Verfahren zur Installation eines Programms auf einem eingebetteten System, ein eingebettetes System für ein derartiges Verfahren sowie ein Verfahren zur Erstellung einer Zusatzinformation

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7603704B2 (en) 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
GB2425372B (en) * 2005-04-20 2007-06-13 Transitive Ltd Method and apparatus for precise handling of exceptions during program code conversion
CN100359472C (zh) * 2005-07-01 2008-01-02 中国科学院计算技术研究所 一种二进制翻译中库函数调用的处理方法
WO2009004709A1 (ja) 2007-07-02 2009-01-08 Fujitsu Limited 間接分岐処理プログラムおよび間接分岐処理方法
US9766911B2 (en) * 2009-04-24 2017-09-19 Oracle America, Inc. Support for a non-native application
US9128701B2 (en) * 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US8880851B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
GB2508433A (en) * 2012-12-03 2014-06-04 Ibm Migration of processes in heterogeneous computing environments using emulating and compiling source code on target system

Also Published As

Publication number Publication date
US10203942B2 (en) 2019-02-12
US20180357056A1 (en) 2018-12-13
TWI660307B (zh) 2019-05-21

Similar Documents

Publication Publication Date Title
US9910721B2 (en) System and method for execution of application code compiled according to two instruction set architectures
KR101665219B1 (ko) 네스티드 에뮬레이션 및 동적 링킹 환경
KR101296025B1 (ko) 컴퓨터 시스템에서의 네스티드 가상화 성능의 개선
US9858057B2 (en) Methods and apparatus to validate translated guest code in a dynamic binary translator
JP2014174998A5 (zh)
US20150379169A1 (en) Efficient emulation for pseudo-wrapped callback handling in binary translation software
WO2021057807A1 (zh) 深度学习模型生成方法、装置、设备及存储介质
US20140222410A1 (en) Hybrid emulation and kernel function processing systems and methods
US10402510B2 (en) Calculating device, calculation method, and calculation program
TW201903606A (zh) 二元碼轉譯裝置及方法
CN108228239B (zh) 基于快速模拟器qemu的分支指令抓取方法和装置
CN109669722B (zh) 执行内核的指令的方法、调试内核系统的方法和内核系统
US10671780B2 (en) Information processing device that executes simulation and a simulation method
US20110093252A1 (en) Method of accurately simulating a target machine on a simulator
JP5469106B2 (ja) コンピュータシステム、試験装置、試験方法、及び試験プログラム
WO2023185799A1 (zh) 一种指令翻译方法及其相关设备
CN109446452B (zh) 寻路数据处理方法及装置、电子设备、存储介质
US9760421B2 (en) Information processing device, method, and computer readable medium
CN114996176A (zh) 访存方法、计算设备以及存储介质
CN118394675A (zh) 用于系统调用的数据处理方法、装置、设备和存储介质
CN115858432A (zh) 一种访问方法、装置、电子设备及可读存储介质
JP2013218394A (ja) 情報処理装置、時間補正方法