TWI423126B - 用於有效模擬電腦結構狀態碼設定的方法 - Google Patents
用於有效模擬電腦結構狀態碼設定的方法 Download PDFInfo
- Publication number
- TWI423126B TWI423126B TW097102923A TW97102923A TWI423126B TW I423126 B TWI423126 B TW I423126B TW 097102923 A TW097102923 A TW 097102923A TW 97102923 A TW97102923 A TW 97102923A TW I423126 B TWI423126 B TW I423126B
- Authority
- TW
- Taiwan
- Prior art keywords
- instructions
- status
- instruction
- target machine
- result
- Prior art date
Links
Classifications
-
- 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
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Clamps And Clips (AREA)
Description
本發明大體上係關於模擬電腦系統結構,且更特定而言,係關於用於處置在模擬過程中遇到之狀態碼設定的方法及系統。甚至更特定而言,本發明係針對提供指令序列,該等指令序列在不使用自目標結構之分支指令情況下產生有效狀態碼設定。
在實際所有現代資料處理系統中,諸如算術運算、邏輯運算及甚至資料傳送操作之各種操作之執行可導致產生若干資料位元以指示指令執行的結果狀態。此等位元通常被稱為狀態碼。作為一簡單實例,可在一算術加法之後設定特殊狀態碼設定,該算術加法歸因於加數對於可用於結果之位元數目而言過大而導致溢位。狀態碼的使用牽涉到幾乎每一指令的執行。
在執行之後即產生狀態碼改變之指令的經典實例為比較指令,其設定狀態碼為"零"(若運算元相等)、設定為"一"(若第一運算元嚴格小於第二運算元)且設定為"二"(若第一運算元嚴格大於第二運算元)。比較指令表示狀態碼設定之最典型(archetypical)使用。
由於許多原因,可能需要使用可執行指令之不同集合在另一系統上模擬經設計以用於一電腦結構的指令。舉例而言,模擬可使用於系統設計或測試中。其亦可用以擴展一資料處理系統之能力,以便使其可處置針對另一系統編寫
的指令。本發明係關於在指令模擬情形中處置狀態碼設定。雖然本發明之系統及方法可廣泛地適用於存在狀態碼之任何模擬方法,但其尤其適用於z/結構(z/Architecture)的模擬。然而,本文中闡述之原理適用於任何源結構且適用於任何目標結構。
在本描述中考慮之原理模擬環境中,模擬軟體之工作為接受源結構指令串作為輸入,且自源結構指令串產生當在目標結構上執行時產生相同結果的指令串。此等結果包括諸如正負號、進位、溢位及各種其他指示異常及機器狀態之各種狀態碼的設定。請注意,雖然模擬環境較佳導致在目標結構中硬體或狀態碼元素的設定,但本發明亦涵蓋除目標機器中之狀態碼暫存器外之位置中產生並儲存狀態碼的情形。
尤其請注意,本發明故意避免狀態碼產生的習知處置。經由對比較指令之簡短考慮而提供此差異之實例。此指令比較兩個運算元且根據比較之結果而設定兩位元狀態碼。舉例而言,若兩個運算元之比較判定兩個運算元為相同的,則設定狀態碼為零。若判定第一運算元嚴格小於第二運算元,則設定狀態碼為一。最後,若判定第一運算元大於第二運算元,則設定狀態碼為二。在比較指令之模擬之習知方法中,結果為構造包括三個分支指令之指令序列。由於以下緊接著闡述之原因,在目標結構指令流中之分支指令的存在為非吾人所欲的。
由於至少兩個原因而不希望出現分支指令。詳言之,請
注意,多數現代資料處理結構包括已知為分支預測的特徵。在此等結構中,進行關於在遇到分支指令之後指令流將遵循兩個或兩個以上路徑中之哪一者的猜想。若進行正確猜想,則一切良好且機器處理時間藉此被加速。然而,若做出不正確猜想,則機器硬體必須經由所採用之路徑返回,且接著採用另一路徑。此刻,分支指令被視為對整體處理速度的損害。因此,應理解分支指令引入了原本不存在的複雜性。此外,作為避免其之第二原因,請注意分支指令實際上消耗了前述分支預測資源,使得該等資源因此不可用於正由處理器執行的其他指令流。因此,分支指令不僅本身為潛在浪費的,其亦剝奪其他指令流之有限亦有價值的電腦資源。
因此,應理解,模擬系統之設計者面臨需要分支指令以在目標結構中成功模擬狀態碼設定之產生同時因為分支指令的缺點需要避免分支指令之自相矛盾的選擇。當目標結構中之狀態碼產生及功能性十分不同於在源機器之結構中存在的狀態碼產生及功能性時,此問題為尤其嚴重的。
尤其請注意,模擬z/結構之機器狀態之電腦程式處理修改狀態碼的許多z/結構指令。簡言之,z/結構為狀態碼設定通常十分不同於在其他結構(尤其為歷史上自相對簡單之微處理器設計發展成的結構)中存在的狀態碼設定之結構的主要樣本。另外,z/結構中之狀態碼設定之修改為普遍的。最通常地由於執行算術運算、邏輯運算或比較運算而發生狀態碼設定之產生及使用,其後基於結果或其他因素
而改變一或多個狀態碼設定。z/結構中之狀態碼修改指令的普遍性及有時此等指令的隨意的語義對最終在目標結構上執行之指令流引入複雜的控制流。此控制流向經模擬之指令添加相當大的空間及效能額外耗用。本發明係針對更有效地處置此情形。雖然本文中之方法及系統尤其適用於存在於由本發明之受讓人製造且出售之大型資料處理系統中的所謂z/結構,但其決不限於作為源指令之供應基礎的彼結構。
亦請注意,本發明用於兩種情形或模式中。在一模式中源電腦指令被轉換為供隨後執行之目標機器指令。在另一操作模式中,更類似於解譯器之操作,源指令被轉換為供立即執行的目標指令。本發明在其最廣泛範疇上涵蓋此等兩種操作形態。
在用於模擬來自源機器之電腦指令以在目標機器上產生指令序列的方法中,本發明產生一起操作以自進位、正負號及溢位碼直接計算目標機器狀態碼而不使用來自目標機器之分支指令的目標機器指令序列。直接計算避免使用分支指令,以上引證了分支指令的缺點。
本發明提供特定導引技術及自此等技術導出之若干序列以有效設定狀態碼或偵測z/結構之經模擬二進位轉譯環境中的異常狀況。此等技術係具體針對將PowerPC結構及IntelIA32結構用以模擬z/結構的情形。與需要較多流控制之較直接方法對比,本發明之序列為更有效且通常為更小的。
然而,請注意,本發明之原理、技術及方法並不限於任何特定目標機器結構。本文中論述之兩個樣本結構僅為被預計具有最大價值之最普遍者。
經由本發明之技術實現額外特徵及優點。本文中詳細描述本發明之其他實施例及態樣,且其被當作本發明的一部分。
本文中對由本發明之各種實施例滿足之一系列所要目標之敍述並非意在暗示或建議此等目標中之任一者或全部在本發明之最通用實施例或在本發明之任何較特定實施例中個別或共同地作為本質特徵存在。
在說明書之最後部分中特定指出且清楚地主張被認作本發明之標的。然而,關於實踐之組織及方法兩者之本發明連同其另外目標及優點可藉由參看結合隨附圖式進行之以下描述而獲得充分瞭解。
本文中用以導出序列之技術為實施極短之一或兩個指令序列片段,其設定結果或臨時暫存器中之一或多個位元以區分狀態碼設定的每一可能結果。此等小的碼片段通常操控進位、正負號及溢位位元,且藉由在多數電腦結構上可用之標準且通常高效(high-performing)之移位、旋轉及各種算術或布林(Boolean)指令而一起結合於稍微較大的序列中。藉由避免分支指令及在硬體中較不可能最佳化之較複雜指令而導致極有效序列。
在某些狀況下,有可能操控PowerPC狀態碼暫存器自身
以導出z/結構狀態碼設定且為高效的。在此等狀況下,使用PowerPC記錄形式指令,且藉由旋轉及邏輯運算來操控所得PowerPC狀態暫存器以導出相應z/結構狀態碼設定。
以下實例係組譯器偽碼,且適用於可操控進位位元且具有通常移位/旋轉/求反(negate)指令的多數結構。所使用之組譯器偽碼為有目的地冗長的以使得所暗示之語義清楚。在某些狀況下,當實施特定操作之有效方式更可能在不同結構上改變時,使用非標準助憶符(mnemonics)。在下表中更全面解釋此等非標準助憶符。在每一狀況下,rX及rY為經命名之目標機器暫存器,且"b"為即刻值。carry_bit為較高階位元位置的進位輸出。
針對64位元暫存器自1至63對位元進行編號,且針對32位元暫存器自1至31對位元進行編號。0為最高有效位置且31或63為最低有效位置。在以下描述中,使用以下暫存器命名慣例:rA,rB-求值於暫存器中之z/結構指令的分別的第一運算元及第二運算元;rT-計算至暫存器中之z/結構指令之結果值;rX,rY,rZ-用以保存中間結果之臨時暫存器;rC-將在序列之結束處保存狀態碼值的暫存器。
以下列出並論述經由此技術導出之各種序列。如上所指示,比較指令為設定狀態碼之指令的最典型(archetypical)實例。因此,以下提供用於模擬狀態碼設定之序列。所提供之序列對於實踐本發明中採用之方法為典型的。詳言之,對象源指令為被稱為比較邏輯運算之z/結構指令。實例假定,rA及rB在64位元環境中經零擴展(僅當比較指令對32位元運算元進行操作時)。
如上表指示,在執行"sub_set_carry"(指令[1])之後,暫存器rX之狀態為不適用。然而,在目標機器中指令[1]之執行的確將進位位元設定為由隨後指令存取之CPU狀態中。此指示於表中之"進位"欄中,其指代目標機器中之進位位元旗標。重要的是,注意且認識到類似於目標機器中之許多其他旗標位元之此進位位元並不以與在源機器中存在之方式相同的方式或與在源機器中存在之條件相同的條件下在目標機器中加以設定。在此點上,設定暫存器位置rC中之相應值的習知方法將使用如圖1中所示之多分支指令。此
等習知方法以及本過程進行操作以提供對由模擬軟體使用之進位位元的適當指示。
關於指令[1],其執行設定進位位元(亦即,CPU進位位元)為"1"(在rArB狀況下)且設定為"0"(在rA<rB狀況下)。另外,rC含有減法的結果(其顯著地可為"0")。上表中之條目"rC>0"、"rC=0"及"rC<0"意謂提供所得狀態之指示。在執行指令[2](set_bit_on_zero)之後,基於rC之內容(在此狀況下限於零或不限於零)而不改變暫存器rC之狀態,但rX之內容被設定為等於"1"(若兩個運算元rA及rB為相同的)。指令[2]之執行並不影響rC之內容。另外,指令[2]並不影響CPU進位位元。關於指令[3](set_bit_on_not_zero),只要rC不為零(亦即,只要rA不等於rB),rC就被設定為等於"1"。CPU進位位元並不受到指令[3]的影響。因此,在此點上,若rA>rB或rA<rB,則rC=1,但若rA=rB,則rC=0。注意,在此點上,rX經設定以提供區分相等與不等之辨別資訊,且此在rC及CPU進位位元兩者之外(亦即,除rC及CPU進位位元外)發生。
接著以展示為(rC, rC, 0)之引數執行指令[4](add_to_carry_immed),其中"0"為中間運算元。在所示之運算元情況下,其進行運算:rC+"CPU進位位元"+0。雖然其亦同樣設定CPU進位位元,但對於後續處理而言並不需要此結果。在以上表II中可見,若rA>rB,則rC之內容現為"2";若rA=rB,則rC之內容為"1";且若rA<rB,則rC之內容亦為"1"。在此階段,應注意到在rC中提供一指示,對於該指示
而言,區分了狀況rA>rB與其他兩個狀況(rA=rB及rA<rB)。
具有運算元"rC, rC, rX"之指令[5](減法)之執行提供最後步驟,其中將現指示相等之rX之內容自rC減去,作為用於區分rA=rB之狀況與rA<rB之狀況的機制,此係因為相等狀況導致自"1"減去"1"且將結果"0"置放於rC中。因此,在以上闡明之指令序列之結束處,獲得以下結果:rC=2(若rA>rB);rC=1(若rA<rB);及rC=0(若rA=rB)。
以此方式,接著可見,獲得狀態碼設定之所要模擬器結果而不執行任何分支指令。以上呈現之概念同樣適用於產生狀態碼改變之任何源指令的模擬。雖然以上實例係特定針對進位位元之設定,但其同樣適用於諸如正負號位元及溢位位元之其他目標結構狀態碼位元。
作為在模擬環境下提供狀態碼產生之本發明之應用的另一實例,以下考慮加法邏輯(32位元)及加法邏輯(64位元)指令。與以上論述之比較邏輯實例一樣,對於加法邏輯(32位元),假定rA及rB針對64位元目標結構環境而被零擴展。以下為偽組譯碼之序列,其在過程之結束處於位置rC提供適當設定。以下,c為進位位元。
[1]add_set_carry rT, rA, rB
[2]move_from_carry rC
[3]double rC
[4]set_bit_on_not_zero rX, rT
[5]或rC, rC, rX
一般而言,此過程具有以下步驟,步驟中之每一者皆不包括任何分支指令的使用或執行。首先,執行目標機器之結構中之指令(圖2中之步驟100),其以設定一或多個目標CPU旗標位元且將結果置放於模擬器可存取之儲存位置(諸如以上rC之第一位置)中之方式而模仿存在於源指令流中的指令。接著,執行指令(步驟105),其使用彼結果以在另一模擬器控制之儲存位置(諸如以上rX之第二位置)中設定位元以區分一或多個狀況結果。接著,將前述結果用以將自身重設(步驟110)為較短位元組態(在以上實例中為一位元),其亦用以區分一或多個狀況結果。接著,執行指令(步驟115),其使用第一儲存位置以產生區分狀況結果之不同集合的結果。最後,執行目標機器指令(步驟120),其使用第一位置及第二位置中之結果以提供兩個模擬器可存取指令中之一者中的指示(其中區分至少三個狀況)。
甚至更一般化地,本過程係針對模擬方法,該模擬方法並不使用目標機器分支指令而是使用目標機器指令,其執
行導致對目標機器狀態碼之控制,該等目標機器狀態碼以用以區分一或多個結果狀態(使得其在模擬器可使用作為狀態碼模擬位置之位置中可用)之方式用在隨後執行之非分支指令中。
請注意,本文中闡述之處理預料到,其涵蓋待在目標機器上執行之指令之合適序列的產生及彼等指令在目標機器上的實際執行兩者,不管執行是在產生源指令之序列時立即發生(如可能發現於"解釋性"環境中),或是在"類編譯"環境(其中實際執行可能在稍後時間發生,若必要的話)。
無論如何,圖3中展示本發明操作於之環境。本發明在有效地包括展示於圖3中之電腦元件中的一或多者之資料處理環境中操作。詳言之,電腦500包括中央處理單元(CPU)520,其存取儲存於隨機存取記憶體510內之程式及資料。記憶體510通常本質上為揮發性記憶體,且因此此等系統具備通常呈可旋轉磁性記憶體540形式之非揮發性記憶體。雖然記憶體540較佳為非揮發性磁性器件,但可使用其他媒體。CPU 530在諸如終端機550之控制台處經由輸入/輸出單元530與使用者進行通信。終端機550通常為經由一或多個I/O單元530與電腦500進行通信之許多(若非數千)控制台中的一者。詳言之,控制台單元550被展示為其中包括用於讀取諸如圖5中所示的CD-ROM 600的一或多種類型媒體的器件。實例展示於圖4中的媒體600包含任何適當器件,其包括(但不限於)磁性媒體、光學儲存器件及晶片,諸如,快閃記憶體器件或所謂之拇指閃存(thumb drive)。碟片600亦表
示呈用以傳輸資料位元(其表示用於本文中論述之指令的碼)之電信號形式之較通用分配媒體。雖然此等經傳輸信號本質上可為短暫的,但其仍構成載運經編碼指令位元的實體媒體,且意欲用於在信號之目的地處被永久記錄。
使用本發明之典型模擬環境說明於圖5中。諸如320之模擬器除作為輸入指令流305,表示經設計以在源機器300上操作之機器或組譯語言指令。模擬器320使用目標機器310中之記憶體315以產生能夠在目標機器310上執行的指令流。雖然圖5特定展示模擬環境中之操作,但亦注意到,本發明涵蓋模擬器320本質上作為解譯器操作之情形,在情形中,指令不僅被轉譯至新的結構而且其亦實質上被同時執行。
雖然本文中已根據本發明之某些較佳實施例詳細描述本發明,但熟習此項技術者可在其中實現許多修改及改變。因此,隨附申請專利範圍意欲覆蓋在本發明之真實精神及範疇內的所有此等修改及改變。
300‧‧‧源機器
305‧‧‧輸入指令流
310‧‧‧目標機器
315‧‧‧記憶體
320‧‧‧模擬器
500‧‧‧電腦
510‧‧‧隨機存取記憶體
520‧‧‧中央處理單元(CPU)
530‧‧‧輸入/輸出單元
540‧‧‧可旋轉磁性記憶體/記憶體
550‧‧‧終端機/控制台單元
600‧‧‧媒體/碟片
圖1為指示在模擬環境中對狀態碼設定之習知處置使用高達三個分支指令之事實的流程圖;圖2為在模擬電腦指令中避免分支指令之本發明過程的流程圖;圖3為說明使用本發明之環境之實例的方塊圖;圖4為如展示為緊密光碟(CD)之含有實施本發明之方法的程式碼之典型電腦可讀媒體的俯視圖;及
圖5為說明本發明操作且經使用之環境的方塊圖。
(無元件符號說明)
Claims (7)
- 一種用於模擬來自一源機器之電腦指令以在一目標機器上產生指令序列之方法,該方法包含:藉由該目標機器自該源機器獲得一電腦指令,該源機器具有與該目標機器不同之一架構;及產生目標機器指令之一序列,該等目標機器指令一起操作以導出用於該電腦指令之一目標機器狀態碼之一編碼,其中目標機器指令之該序列提供區分資訊以區分該目標機器狀態碼之複數個可能結果,及直接計算目標機器狀態碼而不使用分支指令,該直接計算包含:判定一中間狀態碼值,該中間狀態碼值係該目標機器狀態碼之一暫存值,且依據該區分資訊而改變;及依據該中間狀態碼值及該區分資訊而判定該目標機器狀態碼,其中至少部分的該區分資訊與該中間狀態碼值分開。
- 如請求項1之方法,其中該目標機器狀態碼之該計算包含在該計算中使用進位、正負號及溢位碼中之至少一者。
- 如請求項1之方法,其中該方法進一步包括執行目標機器指令之該所產生序列的步驟。
- 如請求項3之方法,其中該執行在與該產生大體相同的時間發生。
- 如請求項1之方法,其中該複數個可能結果包含一或多個可能結果之一第一集合及一或多個可能結果之一第二集合,一或多個可能結果之該第一集合包含一個狀況結 果,一或多個可能結果之該第二集合包含至少兩個其他狀況結果,其中經判定之該中間狀態碼值區分該一個狀況結果與該至少兩個其他狀況結果,及其中該產生包含以下步驟:以設定一或多個目標CPU旗標位元且將一第一結果儲存於一第一儲存位置中的一方式模仿存在於一源指令流中的一指令;執行一使用經儲存之該第一結果以設定該區分資訊之指令,該區分資訊包含第二儲存位置中之至少一位元;使用經儲存之該第一結果以在該第一儲存位置中提供一第二結果;執行一使用該第二結果之指令以在該第一儲存位置中產生一第三結果,該第三結果係區分該一個狀況結果與該至少兩個其他狀況結果之經判定之該中間狀態碼值;及執行一使用該第一儲存位置中之該第三結果及該第二儲存位置中之該至少一位元之指令以提供一區分該一個狀況結果與該至少兩個其他狀況結果的指示,其中使用該第二儲存位置中之該至少一位元區分該至少兩個其他狀況結果中之可能結果,及其中該一個狀況結果與該至少兩個其他狀況結果表示該源機器的狀態碼。
- 一種包含一機器可讀媒體之電腦程式產品,該電腦可讀媒體包括編碼於其中之指令,該等指令致使一資料處理系統執行請求項1至5之任一者之方法,以用於模擬來自 一源機器之電腦指令以在一目標機器上產生指令序列。
- 一種包括一記憶體之資料處理器系統,該記憶體用於儲存由該系統執行之程式,該記憶體中具有碼,該碼致使該資料處理系統執行請求項1至5之任一者之方法,以用於模擬來自一源機器之電腦指令以在一目標機器上產生指令序列。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/668,623 US8713289B2 (en) | 2007-01-30 | 2007-01-30 | Efficiently emulating computer architecture condition code settings without executing branch instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200844852A TW200844852A (en) | 2008-11-16 |
TWI423126B true TWI423126B (zh) | 2014-01-11 |
Family
ID=39241912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097102923A TWI423126B (zh) | 2007-01-30 | 2008-01-25 | 用於有效模擬電腦結構狀態碼設定的方法 |
Country Status (10)
Country | Link |
---|---|
US (1) | US8713289B2 (zh) |
JP (1) | JP4662087B2 (zh) |
KR (1) | KR101171423B1 (zh) |
CN (1) | CN101601011B (zh) |
BR (1) | BRPI0806390B1 (zh) |
CA (1) | CA2675635C (zh) |
IL (1) | IL198613A0 (zh) |
MX (1) | MX2009007876A (zh) |
TW (1) | TWI423126B (zh) |
WO (1) | WO2008092776A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9274797B2 (en) | 2012-12-19 | 2016-03-01 | International Business Machines Corporation | Computer processor with instruction for execution based on available instruction sets |
WO2017153815A1 (en) | 2016-03-11 | 2017-09-14 | Lzlabs Gmbh | Load module compiler |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5560013A (en) * | 1994-12-06 | 1996-09-24 | International Business Machines Corporation | Method of using a target processor to execute programs of a source architecture that uses multiple address spaces |
US6049864A (en) * | 1996-08-20 | 2000-04-11 | Intel Corporation | Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor |
TW200506720A (en) * | 2003-06-28 | 2005-02-16 | Transitive Ltd | Method and apparatus for the emulation of high precision floating point instructions |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58195963A (ja) | 1982-05-12 | 1983-11-15 | Hitachi Ltd | デ−タ処理装置 |
US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
US5778211A (en) * | 1996-02-15 | 1998-07-07 | Sun Microsystems, Inc. | Emulating a delayed exception on a digital computer having a corresponding precise exception mechanism |
US5903760A (en) | 1996-06-27 | 1999-05-11 | Intel Corporation | Method and apparatus for translating a conditional instruction compatible with a first instruction set architecture (ISA) into a conditional instruction compatible with a second ISA |
US5774694A (en) * | 1996-09-25 | 1998-06-30 | Intel Corporation | Method and apparatus for emulating status flag |
US6463582B1 (en) * | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
US6807625B1 (en) * | 2000-02-18 | 2004-10-19 | Hewlett-Packard Development Company, L.P. | Method and apparatus for efficiently generating, storing, and consuming arithmetic flags between producing and consuming macroinstructions when emulating with microinstructions |
US20030093649A1 (en) * | 2001-11-14 | 2003-05-15 | Ronald Hilton | Flexible caching of translated code under emulation |
US7331040B2 (en) * | 2002-02-06 | 2008-02-12 | Transitive Limted | Condition code flag emulation for program code conversion |
JP2004152201A (ja) | 2002-11-01 | 2004-05-27 | Mitsubishi Electric Corp | プロセッサ装置 |
US7219337B2 (en) | 2003-03-06 | 2007-05-15 | Northrop Grumman Corporation | Direct instructions rendering emulation computer technique |
US7676797B2 (en) * | 2005-01-31 | 2010-03-09 | Computer Associates Think, Inc. | System and method for managing long names in an application programming interface |
-
2007
- 2007-01-24 MX MX2009007876A patent/MX2009007876A/es active IP Right Grant
- 2007-01-30 US US11/668,623 patent/US8713289B2/en active Active
-
2008
- 2008-01-22 CN CN2008800035662A patent/CN101601011B/zh active Active
- 2008-01-22 KR KR1020097013258A patent/KR101171423B1/ko active IP Right Grant
- 2008-01-22 JP JP2009546744A patent/JP4662087B2/ja active Active
- 2008-01-22 WO PCT/EP2008/050725 patent/WO2008092776A1/en active Application Filing
- 2008-01-22 CA CA2675635A patent/CA2675635C/en active Active
- 2008-01-22 BR BRPI0806390-7A patent/BRPI0806390B1/pt active IP Right Grant
- 2008-01-25 TW TW097102923A patent/TWI423126B/zh active
-
2009
- 2009-05-07 IL IL198613A patent/IL198613A0/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5560013A (en) * | 1994-12-06 | 1996-09-24 | International Business Machines Corporation | Method of using a target processor to execute programs of a source architecture that uses multiple address spaces |
US6049864A (en) * | 1996-08-20 | 2000-04-11 | Intel Corporation | Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor |
TW200506720A (en) * | 2003-06-28 | 2005-02-16 | Transitive Ltd | Method and apparatus for the emulation of high precision floating point instructions |
Also Published As
Publication number | Publication date |
---|---|
US20080184014A1 (en) | 2008-07-31 |
IL198613A0 (en) | 2010-02-17 |
US8713289B2 (en) | 2014-04-29 |
CA2675635C (en) | 2016-03-15 |
JP4662087B2 (ja) | 2011-03-30 |
JP2010517154A (ja) | 2010-05-20 |
BRPI0806390A2 (pt) | 2011-09-06 |
CA2675635A1 (en) | 2008-08-07 |
MX2009007876A (es) | 2009-07-31 |
KR20090115119A (ko) | 2009-11-04 |
KR101171423B1 (ko) | 2012-08-06 |
BRPI0806390B1 (pt) | 2019-08-06 |
TW200844852A (en) | 2008-11-16 |
WO2008092776A1 (en) | 2008-08-07 |
CN101601011A (zh) | 2009-12-09 |
CN101601011B (zh) | 2012-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI551986B (zh) | 用於自較低特殊權限狀態控制執行階段檢測設施之操作之電腦程式產品、方法及其系統 | |
US9804851B2 (en) | Operand size control | |
TWI501148B (zh) | 條件式比較指令 | |
US10795675B2 (en) | Determine whether to fuse move prefix instruction and immediately following instruction independently of detecting identical destination registers | |
US9424037B2 (en) | Instructions and functions for evaluating program defined conditions | |
US9262161B2 (en) | Tracking multiple conditions in a general purpose register and instruction therefor | |
TWI533126B (zh) | 執行階段檢測報告 | |
TWI534613B (zh) | 用於執行階段檢測導向取樣的計算機程式產品、方法及系統 | |
US20080189529A1 (en) | Controlling instruction execution in a processing environment | |
KR20130064797A (ko) | 범용 논리 연산 방법 및 장치 | |
TWI423126B (zh) | 用於有效模擬電腦結構狀態碼設定的方法 | |
US20110197049A1 (en) | Two pass test case generation using self-modifying instruction replacement | |
US8090935B2 (en) | Direct register access for host simulation | |
US7882336B2 (en) | Employing a buffer to facilitate instruction execution | |
WO2021119409A1 (en) | Content addressable memory with sub-field minimum and maximum clamping | |
US20080270775A1 (en) | Management of exceptions and hardware interruptions by an exception simulator | |
US9389865B1 (en) | Accelerated execution of target of execute instruction | |
Watanabe et al. | An SPU reference model for simulation, random test generation and verification | |
US20090083513A1 (en) | Simplified Run-Time Program Translation for Emulating Complex Processor Pipelines |