TWI502495B - 以機器指令取代編譯器內建輔助函數之方法、裝置及電腦程式產品 - Google Patents
以機器指令取代編譯器內建輔助函數之方法、裝置及電腦程式產品 Download PDFInfo
- Publication number
- TWI502495B TWI502495B TW102100241A TW102100241A TWI502495B TW I502495 B TWI502495 B TW I502495B TW 102100241 A TW102100241 A TW 102100241A TW 102100241 A TW102100241 A TW 102100241A TW I502495 B TWI502495 B TW I502495B
- Authority
- TW
- Taiwan
- Prior art keywords
- function
- machine instruction
- target
- isa machine
- target isa
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
本發明大致上係關於以機器指令取代編譯器內建輔助函數之方法及裝置。
一些軟體編譯器提出在對應軟體函式庫中的某些內建版之函數。例如,GNU編譯器集合(GCC)提出在高階C軟體程式語言標準函式庫中的內建版之函數,其中名稱「GNU」是「GNU’s Not Unix!」的遞迴縮寫。亦即,函數的實作被寫入已編譯的目標檔、或可執行檔中,且當被執行時,程式呼叫內建版的函數。
編譯器可使用內建版的函式庫以提供包括在高階語言原始碼程式中的功能性,其中程式當沒有CPU所支援之對應機器指令集來編譯程式以供執行時會被編譯。例如,在許多行動裝置上可能不支援浮點數運算和64位元的整數運算。作為特定實例,由ARM股份有限公司開發的ARMv5處理器在其指令集架構(ISA)中不包括硬體浮點數
運算,如此編譯器提供編譯器內建輔助函數來支援浮點數運算。然而,亦由ARM股份有限公司開發的另一CPU(例如ARMv7處理器)在其指令集架構中可包括硬體浮點數運算。
重要考量在於如何遷移編譯以在缺乏實作某些應用之操作所需的機器指令,且依賴編譯器內建輔助函數來對上述功能性提供支援的一個處理器上執行的應用軟體程式,以儘可能有效率地執行包括實作這些操作所需的機器指令之另一不同的處理器。
遷移應用軟體程式的其中一個習知方法是為不同目標ISA再編譯關於應用程式的原始碼以取代或移除編譯器內建輔助函數,但這樣做必定需要存取關於應用程式的原始碼,且每次遷移至不同計算平台時都要再編譯程式。
遷移應用軟體程式的另一個習知方法是使用二進制轉譯。二進制轉譯涉及一個指令集透過轉譯用於應用軟體程式之目標碼來模擬另一個指令集。目標碼一般亦稱為二進制碼、或可執行碼、或以上之組合。在二進制譯碼中,機器語言指令序列從來源指令集轉譯至目標指令集。轉譯會在靜止時間時發生,亦即,在可執行檔中的整串機器語言指令會從來源指令集轉成目標指令集而不必先運行、或執行碼。動態轉譯涉及當在執行時間期間遇到區塊時,將在可執行檔中的機器語言指令之短序列、或區塊從來源指令集轉成目標指令集。
若來源指令集架構(來源ISA)不包括支援應用程式中
提供的特定功能性之機器指令,則當編譯應用程式時那些關於特定功能性的應用程式部分可被轉成適當的編譯器內建輔助函數。若目標指令集架構(目標ISA)不包括支援應用程式中提供的特定功能性之機器指令,則當進行程式從來源ISA至目標ISA的二進制轉譯以基於支援特定功能性之目標ISA來將編譯器內建輔助函數轉成一串一或更多機器指令時是有助益的。
10‧‧‧動態執行時間系統
100‧‧‧軟體應用
105‧‧‧目標指令集架構(ISA)
110‧‧‧目標執行時間庫(LIB)
115‧‧‧程序虛擬機器
120‧‧‧指令集架構(ISA)模擬層
125‧‧‧平台橋接器
130‧‧‧編譯器內建輔助函數加速器
135‧‧‧載入器
200‧‧‧流程圖
300‧‧‧示範實施例
301A‧‧‧應用
301B‧‧‧應用
320‧‧‧指令集架構(ISA)模擬層
335‧‧‧載入器
340‧‧‧映射表
345‧‧‧執行引擎
350‧‧‧步驟
355‧‧‧輔助函數加速器
360‧‧‧步驟
361‧‧‧步驟
375‧‧‧硬體執行單元
將根據下方提供的詳細說明並根據本發明之各種實施例的附圖來更充分地了解本發明之實施例,然而,附圖不應被視為限制本發明為特定實施例,而只是為了解釋和理解之用。
第1圖係本發明之實施例的方塊圖。
第2圖係本發明之實施例的方塊圖。
第3圖係本發明之示範實施例的圖示。
軟體應用的特點是支援它的指令集架構(ISA)、作業系統(OS)服務、及執行時間庫(LIB)。關於第1圖,動態執行時間系統10包括軟體應用100,其根據來源指令集架構(來源ISA)被編譯成一串機器指令且隨著存取來源LIB而被執行。然而,能藉由程序虛擬機器(PVM)115的方式以存取目標LIB 110在不同OS(主機OS)所支援的不
同目標ISA 105上執行或運行此軟體應用。
有時稱為應用虛擬機器的PVM執行作為主機OS內的應用程式並支援單一程序。當開始程序並當完成或離開程序時結束程序時便產生PVM。PVM提供平台獨立編程環境,其抽離基礎硬體和主機OS的細節,並允許程式在任何平台上以相同方式來執行。在一實施例中,PVM係使用解譯器來實作。
PVM 115包含ISA模擬層120和平台橋接器125。ISA模擬層120模擬操作在目標ISA基礎CPU頂端上之來源ISA基礎的中央處理單元(CPU)以執行根據來源ISA來編譯的軟體應用程式。平台橋接器125模擬來源LIB並處理、或說明平台差異性。
根據本發明之實施例,以及更參考第2圖中的流程圖200,當為目標碼形式的應用程式100待在動態執行時間系統10中執行時,在205中載入器135載入應用程式以供執行。作為部分的載入程序,在210中載入器135判斷在應用100或目標LIB 110中的編譯器內建輔助函數(於此亦簡稱為「輔助函數」)是否語義地與在目標ISA 105中的機器指令相同。針對語義地與在目標ISA 105中的機器指令相同或類似之每個編譯器內建輔助函數,載入器接著在215中記錄或產生一項目在動態執行時間系統10可存取之記憶體中儲存的映射表中。在一實施例中,映射表在載入器135中且可被PVM 115和ISA模擬層120存取。映射表映射編譯器內建輔助函數之位址至語義地相同
或類似的目標ISA基礎機器指令之名稱。應注意儘管描繪載入器135與PVM 115(尤其是ISA模擬層120)分開且通訊地與PVM 115(尤其是ISA模擬層120)耦接,但在一實施例中,PVM 115和ISA模擬層120可包括載入器135。
根據本發明之實施例,一旦應用程式被載入且在執行階段時,亦即,應用程式在230中執行時,ISA模擬層120遇到在目標碼中的一或更多函數呼叫。當遇到函數呼叫時,ISA模擬層120使用函數呼叫的位址作為索引以在235中搜尋映射表在載入應用程式期間加到表中的編譯器內建輔助函數。若函數呼叫的位址符合映射表中的編譯器內建輔助函數之位址,則啟動編譯器內建輔助函數加速器(CBA)130。儘管第1圖所示之實施例描繪CBA 130與PVM 115(尤其是ISA模擬層120)連接但與PVM 115(尤其是ISA模擬層120)分開,但在一實施例中,PVM 115和ISA模擬層120可包括CBA 130。
CBA 130一旦被啟動就從具有符合在執行應用期間遇到的函數呼叫之位址的編譯器內建輔助函數之位址的映射表中之項目取得對應目標ISA基礎機器指令的名稱。CBA 130接著在240中以目標ISA基礎機器指令來取代在應用程式中的函數呼叫。儘管以上說明提及單一指令,但根據一實施例,考量到映射表可依據取代輔助函數之功能性的需要來映射編譯器內建輔助函數至複數個目標ISA基礎機器指令。當CBA 130以對應之一或更多目標ISA基礎機器指令取代在應用程式中的函數呼叫時,在245中目標
ISA基礎CPU便直接地執行指令。
第3圖又繪示本發明之示範實施例300。應用載入器335載入應用301A、301B。當應用載入器335在應用中遇到函數時,載入器335便為編譯器內建輔助函數產生項目在映射表340中。映射表中的每個項目包含函數呼叫的位址(例如,在336中的位址0x123456)、以及語義地符合編譯器內建輔助函數的對應目標ISA基礎指令之名稱,例如,在示範實施例的337中之機器指令「mulss」。編譯器內建輔助函數能被靜態連結或被動態連結編譯。根據一實施例,針對靜態連結的輔助函數,透過可執行二進制檔中的符元表,輔助函數位址及函數名稱可記錄在映射表中。針對動態連結的輔助函數,透過程序連結表,程序連結位址及函數名稱可記錄在映射表中。
根據本發明之實施例,使用可執行目標碼檔來為軟體應用程式及任何動態連結的函式庫產生映射表340。映射表對每個編譯器內建輔助函數提供項目,指明可執行檔中的函數呼叫之位址至輔助函數或具有輔助函數之符元名稱或索引的相關程序連結位址。用於產生映射表的虛擬碼如下:針對主可執行檔和動態連結的函式庫,針對每個輔助函數的符元名稱{針對靜態連結的符元表:}若在可執行符元表中能發現輔助函數項目,
則將(函數項目位址、函數名稱/索引)對記錄在映射表中{針對動態連結的符元表:}若進來輔助函數,發現其程序連結位址則將(程序連結位址、函數名稱/索引)對記錄在映射表中
當載入應用且產生映射表時,在230中執行應用,且當在可執行檔中遇到函數呼叫時,在ISA模擬層320中的執行引擎345在350中執行查找映射表。若查找操作回傳有效的輔助函數名稱或索引,則觸發輔助函數加速器355。輔助函數加速器355一旦被觸發就呼叫內建產生函數以將輔助函數轉譯成目標ISA基礎機器指令。如同本文所使用之詞的轉譯是指映射至映射表中之至少一目標ISA基礎指令的輔助函數。轉譯亦可涉及為映射之目標ISA基礎指令依序將一或更多額外的目標ISA基礎指令插入可執行檔中以正確地執行。例如,在執行映射之目標ISA基礎指令之前或之後可能必須從一或更多暫存器或記憶體位置讀取資料或將資料寫入,且當取代函數呼叫時亦將完成這些步驟所須的指令插入可執行檔中。
如第3圖所示,在350中,在映射表340中定位執行引擎所遇到之函數呼叫的位址,且轉譯並取代函數呼叫(如在第3圖之352中劃掉的函數呼叫所指、以及如360和361所指之插入可執行檔中的對應指令「mulss」)。其
他指令,如381中的「movd xmm0,r0」指令、382中「movd xmm1,r1」的、及383中的「movd r0,xmm0」亦依需要在361中被加速器355插入以提供目標ISA基礎機器指令(在此例中為「mulss xmm0,xmm1」)可依據來操作的適當參數或變數。最後,在370中,目標ISA基礎CPU或硬體執行單元375執行已轉譯的目標ISA機器指令(在此例中為「mulss xmm0,xmm1」)以及執行引擎320插入的任何額外目標ISA指令,如上所述。
在此說明中,已提出各種細節以提供本發明之實施例的更徹底說明。然而,本領域之熟知技藝者應了解本發明之實施例無需這些特定細節便可實作。在其他範例中,已採用方塊圖形式而非詳細地來顯示熟知結構和裝置,以免混淆本發明之實施例。
就對在電腦記憶體內的資料操作之演算法和符元表現而言來呈現此詳細說明的一些部分。這些演算法描述和表現是在資料處理領域之熟知技藝者所使用的工具以最有效率地運送其工作的物質給本領域之熟知技藝者。這裡的演算法一般被構想成導致想要結果之自我一致連續的步驟。步驟是需要物理量之物理操作的步驟。通常,雖然並非必要地,但這些量採用能夠被儲存、傳送、合併、比較、及以其他方式操作的電或磁性信號的形式。已證明偶爾主要為了共同利用之原因的方便性而提及這些信號作為位元、值、元件、符元、字元、項目、數字或之類。
然而,應在心中設想所有這些及類似項目是關連於適
當物理量且只是應用於這些量的方便標號。除非以其他方式具體指明,如從此討論中顯而易見,知道在整個說明中,利用如「載入」或「啟動」或「觸發」或「判斷」或之類之詞的討論是指電腦系統或類似電子計算裝置的動作和處理,其將在電腦系統之暫存器和記憶體內表現為物理(電子)量的資料操作並轉換成在電腦系統記憶體或暫存器或其他這類資訊儲存器或傳送裝置內同樣表現為物理量的其他資料。
本發明之實施例亦關於用來進行本文之操作的設備。有些設備可特別為了需要目的來建構,或可包含被儲存在電腦中的電腦程式選擇性地啟動或重新組態之通用電腦。這樣的電腦程式可儲存在電腦可讀儲存媒體中,例如但不限於包括軟碟、光碟、CD-ROM、DVD-ROM、及磁光碟的任何磁碟類型、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、EPROM、EEPROM、NVRAM、磁性或光學卡、或適用於儲存電子指令的任何媒體類型,且每個耦接於電腦系統匯流排。
本文所示的演算法和顯示並非原本關於任何特定電腦或其他設備。各種通用系統可與依照本文教示的程式一起使用,或可證明便於建構更專用設備以進行所需的方法步驟。用於各種這些系統的結構從本文敘述中顯而易見。此外,本發明之實施例不關於任何特定程式語言來說明。將知道可使用各種程式語言來實作如本文所述之發明的教示。
機器可讀媒體包括用於儲存為機器(例如電腦)可讀形式之資訊的任何機制。例如,機器可讀媒體包括唯讀記憶體(「ROM」)、隨機存取記憶體(「RAM」)、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置等。
鑒於在讀了上述說明之後,本發明之實施例的許多變化和修改無疑地將對本領域之通常技藝者是顯而易見的,了解藉由圖解方式顯示和說明的特定實施例決不想成限制的。因此,關於各種實施例的細節不用來限制只陳述視為本發明必要之那些特徵的申請專利範圍之範圍。
10‧‧‧動態執行時間系統
100‧‧‧軟體應用
105‧‧‧目標ISA
110‧‧‧目標LIB
115‧‧‧程序虛擬機器
120‧‧‧ISA模擬層
125‧‧‧平台橋接器
130‧‧‧編譯器內建輔助函數加速器
135‧‧‧載入器
Claims (25)
- 一種以機器指令取代編譯器內建輔助函數之方法,包含:載入包含根據一來源指令集架構(來源ISA)編譯的一串機器指令之一可執行程式來被一目標指令集架構(目標ISA)基礎的硬體執行單元執行,該載入包括映射在該可執行程式中的一編譯器內建輔助函數(輔助函數)至一目標ISA機器指令;及執行所載入的該程式,該執行包含以該輔助函數所映射到的該目標ISA機器指令來取代該輔助函數,並執行該目標ISA機器指令。
- 如申請專利範圍第1項所述之方法,其中該來源ISA與用於該目標ISA基礎的硬體執行單元執行的一目標ISA不同。
- 如申請專利範圍第1項所述之方法,其中映射該輔助函數包含判斷該輔助函數是否語義地與一目標ISA機器指令類似。
- 如申請專利範圍第3項所述之方法,其中以該輔助函數所映射到的該目標ISA機器指令來取代該輔助函數包含以與該輔助函數語義地類似的該目標ISA機器指令來取代該輔助函數。
- 如申請專利範圍第4項所述之方法,其中判斷該輔助函數是否語義地與一目標ISA機器指令類似包含判斷該輔助函數是否語義地與一目標ISA機器指令相同。
- 如申請專利範圍第3項所述之方法,其中映射該輔助函數至該目標ISA機器指令包含產生一項目在進行該載入之一程式載入器可存取之一記憶體中的一映射表中,該項目映射該輔助函數之位址至語義地類似的該目標ISA機器指令之名稱。
- 如申請專利範圍第1項所述之方法,其中以該輔助函數所映射到的該目標ISA機器指令來取代該輔助函數包含判斷在該執行程式中遇到的一函數呼叫是否是映射至在該映射表中之一目標ISA機器指令的一輔助函數。
- 如申請專利範圍第7項所述之方法,其中判斷在該執行程式中遇到的一函數呼叫是否是映射至在該映射表中之一目標ISA機器指令的一輔助函數包含在該映射表中搜尋包括符合該函數呼叫之位址的一輔助函數之位址的一項目。
- 如申請專利範圍第8項所述之方法,其中以該目標ISA機器指令來取代該輔助函數包含從包括符合在該執行程式中遇到的該函數呼叫之位址的一輔助函數之位址的該映射表項目取得該目標ISA機器指令,並以取得的該目標ISA機器指令來取代在該執行程式中的該函數呼叫。
- 如申請專利範圍第9項所述之方法,更包含可能依據取得的該目標ISA機器指令執行的需要來結合取得的該目標ISA機器指令地在該執行程式中插入額外的目標ISA機器指令。
- 如申請專利範圍第1項所述之方法,其中執行該 目標ISA機器指令包含藉由該目標ISA基礎的硬體執行單元來執行該目標ISA機器指令。
- 一種以機器指令取代編譯器內建輔助函數之裝置,包含:一目標碼載入器,用以載入根據一來源指令集架構(來源ISA)編譯的目標碼來在一目標指令集架構(目標ISA)基礎平台上執行,包括該載入器映射在該目標碼中的一編譯器內建輔助函數(輔助函數)至一目標ISA機器指令;一輔助函數取代模組,以該輔助函數所映射到的該目標ISA機器指令來取代該輔助函數;及一執行引擎,執行所載入的該目標碼,包括取代該輔助函數的該目標ISA機器指令。
- 如申請專利範圍第12項所述之裝置,其中該載入器映射該輔助函數包含該載入器判斷該輔助函數是否語義地與一目標ISA機器指令類似。
- 如申請專利範圍第13項所述之裝置,其中該輔助函數取代模組以該輔助函數所映射到的該目標ISA機器指令來取代該輔助函數包含該模組以與該輔助函數語義地類似的該目標ISA機器指令來取代該輔助函數。
- 如申請專利範圍第13項所述之裝置,其中該載入器映射該目標碼中的該輔助函數至一目標ISA機器指令包含該載入器產生一項目在一映射表中,該項目映射該輔助函數之位址至語義地類似的該目標ISA機器指令。
- 如申請專利範圍第12項所述之裝置,其中該輔助 函數取代模組以該輔助函數所映射到的該目標ISA機器指令來取代該輔助函數包含該模組判斷在該執行程式中遇到的一函數呼叫是否是映射至在該映射表中之一目標ISA機器指令的一輔助函數。
- 如申請專利範圍第15項所述之裝置,其中該載入器產生一項目在一映射表中,該項目映射該輔助函數之位址至語義地類似的該目標ISA機器指令包含該載入器在一映射表中產生映射一靜態連結輔助函數之一位址至語義地類似的該目標ISA機器指令之一項目,該位址從該目標碼中的一符元表得到。
- 如申請專利範圍第15項所述之裝置,其中該載入器產生一項目在一映射表中,該項目映射該輔助函數之位址至語義地類似的該目標ISA機器指令包含該載入器在一映射表中產生映射一動態連結輔助函數之一程序連結位址至語義地類似的該目標ISA機器指令之一項目,該程序連結位址從該目標碼中的一程序連結表得到。
- 一種電腦程式產品,包含:一電腦可讀媒體;及在該電腦可讀媒體中的指令,其中該指令當在一動態執行時間系統中執行時使該系統進行操作,包含:載入包含根據一來源指令集架構(來源ISA)編譯的一串機器指令之一可執行程式來被一目標指令集架構(目標ISA)基礎的硬體執行單元執行,該載入包括映射在該可執行程式中的一編譯器內建輔助函數(輔助函數)至一目標 ISA機器指令;及執行所載入的該程式,該執行包含以該輔助函數所映射到的該目標ISA機器指令來取代該輔助函數,並執行該目標ISA機器指令。
- 如申請專利範圍第19項所述之電腦程式產品,其中映射該輔助函數包含判斷該輔助函數是否語義地與一目標ISA機器指令類似。
- 如申請專利範圍第20項所述之電腦程式產品,其中以該輔助函數所映射到的該目標ISA機器指令來取代該輔助函數包含以與該輔助函數語義地類似的該目標ISA機器指令來取代該輔助函數。
- 如申請專利範圍第20項所述之電腦程式產品,其中映射該輔助函數至該目標ISA機器指令包含產生一項目在進行該載入之一程式載入器可存取之一記憶體中的一映射表中,該項目映射該輔助函數之位址至語義地類似的該目標ISA機器指令之名稱。
- 如申請專利範圍第19項所述之電腦程式產品,其中以該輔助函數所映射到的該目標ISA機器指令來取代該輔助函數包含判斷在該執行程式中遇到的一函數呼叫是否是映射至在該映射表中之一目標ISA機器指令的一輔助函數。
- 如申請專利範圍第23項所述之電腦程式產品,其中判斷在該執行程式中遇到的一函數呼叫是否是映射至在該映射表中之一目標ISA機器指令的一輔助函數包含在該 映射表中搜尋包括符合該函數呼叫之位址的一輔助函數之位址的一項目。
- 如申請專利範圍第24項所述之電腦程式產品,其中以該目標ISA機器指令來取代該輔助函數包含從包括符合在該執行程式中遇到的該函數呼叫之位址的一輔助函數之位址的該映射表項目取得該目標ISA機器指令,並以取得的該目標ISA機器指令來取代在該執行程式中的該函數呼叫。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2012/000015 WO2013102280A1 (en) | 2012-01-06 | 2012-01-06 | Method and apparatus for substituting compiler built-in helper functions with machine instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201351274A TW201351274A (zh) | 2013-12-16 |
TWI502495B true TWI502495B (zh) | 2015-10-01 |
Family
ID=48744956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102100241A TWI502495B (zh) | 2012-01-06 | 2013-01-04 | 以機器指令取代編譯器內建輔助函數之方法、裝置及電腦程式產品 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9098355B2 (zh) |
EP (1) | EP2801028A4 (zh) |
TW (1) | TWI502495B (zh) |
WO (1) | WO2013102280A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015020655A1 (en) * | 2013-08-08 | 2015-02-12 | Empire Technology Development Llc | Migration of executing processes |
US9479475B1 (en) * | 2014-03-17 | 2016-10-25 | Michael E. Mazarick | System and method for IPv4 to IPv6 transition rather than an outage |
US10713213B2 (en) * | 2016-12-21 | 2020-07-14 | Intel Corporation | Systems and methods for multi-architecture computing |
US10684984B2 (en) | 2016-12-21 | 2020-06-16 | Intel Corporation | Computing devices and server systems with processing cores having different instruction set architectures |
US10552207B2 (en) | 2016-12-21 | 2020-02-04 | Intel Corporation | Systems and methods for multi-architecture computing including program stack translation |
US11275709B2 (en) | 2017-05-02 | 2022-03-15 | Intel Corporation | Systems and methods for multi-architecture computing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030126587A1 (en) * | 2002-01-02 | 2003-07-03 | Roni Rosner | Controlling compatibility levels of binary translations between instruction set architectures |
US6976249B1 (en) * | 2001-11-12 | 2005-12-13 | Apple Computer, Inc. | Method for embedding object codes in source codes |
TW200710731A (en) * | 2005-04-20 | 2007-03-16 | Transitive Ltd | Method and apparatus for precise handling of exceptions during program code conversion |
TW200903328A (en) * | 2007-03-30 | 2009-01-16 | Transitive Ltd | Improvements in and relating to floating point operations |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4763242A (en) | 1985-10-23 | 1988-08-09 | Hewlett-Packard Company | Computer providing flexible processor extension, flexible instruction set extension, and implicit emulation for upward software compatibility |
US5903772A (en) * | 1993-10-29 | 1999-05-11 | Advanced Micro Devices, Inc. | Plural operand buses of intermediate widths coupling to narrower width integer and wider width floating point superscalar processing core |
US7516453B1 (en) * | 1998-10-26 | 2009-04-07 | Vmware, Inc. | Binary translator with precise exception synchronization mechanism |
US7076769B2 (en) * | 2003-03-28 | 2006-07-11 | Intel Corporation | Apparatus and method for reproduction of a source ISA application state corresponding to a target ISA application state at an execution stop point |
GB2411990B (en) * | 2003-05-02 | 2005-11-09 | Transitive Ltd | Improved architecture for generating intermediate representations for program code conversion |
US7299170B2 (en) * | 2003-06-28 | 2007-11-20 | Transitive Limited | Method and apparatus for the emulation of high precision floating point instructions |
US20050071823A1 (en) * | 2003-09-29 | 2005-03-31 | Xiaodong Lin | Apparatus and method for simulating segmented addressing on a flat memory model architecture |
US7386842B2 (en) * | 2004-06-07 | 2008-06-10 | International Business Machines Corporation | Efficient data reorganization to satisfy data alignment constraints |
US7395531B2 (en) * | 2004-06-07 | 2008-07-01 | International Business Machines Corporation | Framework for efficient code generation using loop peeling for SIMD loop code with multiple misaligned statements |
US8255882B2 (en) * | 2004-12-30 | 2012-08-28 | Intel Corporation | Selecting formats for multi-format instructions in binary translation of code from a hybrid source instruction set architecture to a unitary target instruction set architecture |
US7757221B2 (en) * | 2005-09-30 | 2010-07-13 | Intel Corporation | Apparatus and method for dynamic binary translator to support precise exceptions with minimal optimization constraints |
US7712092B2 (en) * | 2007-10-01 | 2010-05-04 | The Board Of Trustees Of The Leland Stanford Junior University | Binary translation using peephole translation rules |
JP5976917B2 (ja) * | 2012-03-22 | 2016-08-24 | インテル コーポレイション | ネスト構造化されたエミュレーションおよび動的リンキング環境 |
-
2012
- 2012-01-06 WO PCT/CN2012/000015 patent/WO2013102280A1/en active Application Filing
- 2012-01-06 US US13/976,515 patent/US9098355B2/en not_active Expired - Fee Related
- 2012-01-06 EP EP12864381.4A patent/EP2801028A4/en not_active Withdrawn
-
2013
- 2013-01-04 TW TW102100241A patent/TWI502495B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6976249B1 (en) * | 2001-11-12 | 2005-12-13 | Apple Computer, Inc. | Method for embedding object codes in source codes |
US20030126587A1 (en) * | 2002-01-02 | 2003-07-03 | Roni Rosner | Controlling compatibility levels of binary translations between instruction set architectures |
TW200710731A (en) * | 2005-04-20 | 2007-03-16 | Transitive Ltd | Method and apparatus for precise handling of exceptions during program code conversion |
TW200903328A (en) * | 2007-03-30 | 2009-01-16 | Transitive Ltd | Improvements in and relating to floating point operations |
Also Published As
Publication number | Publication date |
---|---|
EP2801028A1 (en) | 2014-11-12 |
TW201351274A (zh) | 2013-12-16 |
EP2801028A4 (en) | 2015-08-12 |
WO2013102280A1 (en) | 2013-07-11 |
US9098355B2 (en) | 2015-08-04 |
US20140196019A1 (en) | 2014-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI502495B (zh) | 以機器指令取代編譯器內建輔助函數之方法、裝置及電腦程式產品 | |
US8364461B2 (en) | Reusing invalidated traces in a system emulator | |
US8321850B2 (en) | Sharing and persisting code caches | |
US5999732A (en) | Techniques for reducing the cost of dynamic class initialization checks in compiled code | |
US9201635B2 (en) | Just-in-time dynamic translation for translation, compilation, and execution of non-native instructions | |
EP3427148B1 (en) | Load module compiler | |
KR101665219B1 (ko) | 네스티드 에뮬레이션 및 동적 링킹 환경 | |
US9563446B2 (en) | Binary file generation | |
US20150186170A1 (en) | Implementing a jump instruction in a dynamic translator that uses instruction code translation and just-in-time compilation | |
Stüttgen et al. | Robust Linux memory acquisition with minimal target impact | |
Cook et al. | Model checking boot code from AWS data centers | |
CN107273311B (zh) | 计算设备、用于计算的方法和用于计算的装置 | |
US9524178B2 (en) | Defining an instruction path to be compiled by a just-in-time (JIT) compiler | |
US9529610B2 (en) | Updating compiled native instruction paths | |
BR112019011434A2 (pt) | autodepuração | |
WO2019118691A1 (en) | Method and system for identifying functional attributes that change the intended operation of a compiled binary extracted from a target system | |
US9183018B2 (en) | Dynamic on/off just-in-time compilation in a dynamic translator using instruction code translation | |
Shen et al. | An LLVM-based hybrid binary translation system | |
JP5401561B2 (ja) | クラスファイル内にネイティブコードを埋め込むことによる仮想メカニズム内でのプラットフォーム依存ルーチンの適用 | |
US20240134666A1 (en) | Hybrid just in time load module compiler with performance optimizations | |
US8276132B1 (en) | System and method for representing and managing a multi-architecture co-processor application program | |
JP2020523693A (ja) | Jitコンパイラを使用しかつ選択されたターゲットコードブロックの変換をバイパスするターゲットシステムのエミュレーション | |
US8171232B2 (en) | Stored value accessors in shared memory regions | |
US8347310B1 (en) | System and method for representing and managing a multi-architecure co-processor application program | |
US8281294B1 (en) | System and method for representing and managing a multi-architecture co-processor application program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |