新四季網

條件式比較指令的製作方法

2023-11-07 20:27:47

專利名稱:條件式比較指令的製作方法
技術領域:
本發明相關於數據處理領域。更特定而言,本發明相關於條件式比較指令。
背景技術:
已知可提供具有用以代表處理裝置的當前條件狀態的各種條件標誌(flag)的處理裝置。此種數據處理裝置的示例為由設立在英國劍橋的ARM Limited所設計的執行ARM指令集的處理器。指令可經安排以條件式地執行,以使條件標誌的當前狀態在條件式指令執行時,控制是否要執行條件式運算。例如,對於一種條件式指令類型,在執行時測試當前條件狀態,並且,如果當前條件狀態通過測試,則根據對兩操作數所執行的運算結果更新條件標誌。如果當前條件狀態未通過測試,則指令作為不具功能的NOP指令,因此不改變條件
O此種指令可用以實施一些測試與對測試結果的邏輯運算的組合。例如,可使用指令序列來估算(evaluate)邏輯表達式(A = = B&&C = = D) | | E = = F,此邏輯表達式包括初始測試A== B及隨後更進一步的測試鏈,並使用AND(&&)或0R(| I)運算將其每一個的結果與自先前運算生成的條件標誌結合,指令序列包括無條件式比較指令與一或多個條件式比較指令,每一個條件式比較指令被安排以僅在先前指令的結果滿足特定條件時更新條件標誌。例如,表達式(A = = B&&C = =D) IlE==F可由以下指令序列估算出CMP A, BCMPEQ C,DCMPNE E, F無條件式比較指令CMP A,B比較A和B的值,並且,根據比較結果設定條件標誌。如果A和B相等,則條件標誌被置於EQ狀態,同時如果A和B不相等,則條件標誌被置於NE狀態。在執行條件式比較指令CMPEQ C,D時,如果條件標誌為在EQ狀態中(亦即,測試A = = B滿足),則執行C和D的間的比較,並且,根據比較結果更新條件標誌。另外,在條件標誌為在NE狀態中時(亦即,測試A==B未滿足),則CMPEQ指令作為NOP並且,不改變條件標誌。此意味著在執彳了首兩個指令的後,條件標誌將僅在A = B和C = D時指不EQ狀態,並將在其他情況指示NE狀態。此為使用AND運算結合A==B和C==D測試的正確結果。接著,執行條件式比較指令CMPNE E,F,並且,如果條件標誌為在EQ狀態中(亦即,測試A== B&&C == D滿足),則CMPNE指令將被當作Ν0Ρ,並且,因此條件代碼將保持在EQ狀態中。另外,如果條件標誌為在NE狀態中(亦即,測試A == B&&C == D未滿足),則執行E和F的比較,並且,根據比較結果更新條件標誌。因此,如果(A = B AND C = D)或E = F,最終結果將為EQ,並且,當這些測試都未滿足時最終結果將為NE。此為使用OR運算結合(A = = B&&C = = D)和E = = F測試的正確結果。
因此,條件式比較指令CMPEQ和CMPNE可用以估算為(A = = B&&C = = D) | | E ==F的形式的測試鏈。然而,僅可當鏈內所有的個別測試估算相同種類關時,或在估算可被轉換成相同種類關的不同種類關時使用這些種類的指令。例如,在先前示例中,所有個別測試估算」相等」關係。或者,條件式指令可用以代表為(A>B&&C<D)的形式的邏輯條件,因為關係C C,其與A>B為相同種類關係。然而,不可能測試諸如(例如)(A > B I C== D)&&E < = F或A = = B&&C ! = D的邏輯表達式,因為被測試的關係不同,並且,無法彼此轉換。因此,這些條件式指令僅可用於測試特定種類的邏輯表達式。此意味著使用此等指令所能編譯的原始碼數量被限制,並且,對編譯程序而言,確定條件式指令是否可用於特定應用是複雜的。

發明內容
本發明的第一方面提供一種數據處理裝置,包括處理電路,其用於處理數據;指令解碼器,其響應於程序指令以生成用於控制所述處理電路以處理所述數據的控制信號;狀態存儲器,其用於存儲所述處理電路的當前條件狀態,所述當前條件狀態在處理所述數據期間為可修改的;其中所述等程序指令包括條件式比較指令,並且,所述指令解碼器響應於所述條件式比較指令以生成用於控制所述處理電路以執行條件式比較運算的控制信號,所述條件式比較運算包括(i)如果所述當前條件狀態通過測試條件,則對第一操作數和第二操作數執行比較運算,並設定所述當前條件狀態為在所述比較運算期間生成的結果條件狀態;以及(ii)如果所述當前條件狀態未通過所述測試條件,則設定所述當前條件狀態為由所述條件式比較指令指定的未通過條件狀態。·本技術提供條件式比較指令,其控制處理電路以確定處理電路的當前條件狀態是否通過測試條件。獨立於當前條件狀態通過或未通過測試條件,當前條件狀態被更新。新的當前條件狀態值由不同方式確定,取決於當前條件狀態通過或未通過測試條件。如果當前條件狀態通過測試條件,則對第一操作數和第二操作數執行比較運算,並且,當前條件狀態被設定為在比較運算期間生成的結果條件狀態。另一方面,如果當前條件狀態未通過測試條件,則當前條件狀態被設定為由所述條件式比較指令指定的未通過條件狀態。能夠指定特定未通過條件狀態值(其在當前條件狀態未通過測試條件時取代當前條件狀態)的能力,使條件式比較指令能夠用以測試不同類型的比較序列鏈。這是因為,對於對應於鏈中的一個比較的條件式比較指令,未通過條件狀態可用以建立所需測試鏈中的下一個比較的特定條件狀態。因此可使用條件式比較指令,即使序列鏈中的關係無法被轉換成相同種類關係。例如,可測試為((S == T&&U >= O) I |A ! = B)&&C > D的形式的序列,即使被測試的個別關係= =、> =、!=、>不同,並且,無法彼此轉換。此意味著可更廣泛的使用條件式比較指令,相較於先前已知的條件式比較指令,並且,因此可更容易的由編譯程序使用。
狀態存儲器可為任意種類的用於存儲當前條件狀態的存儲位置。在示例性具體實施例中,狀態存儲器可包括狀態寄存器。裝置的當前條件狀態可包括存儲在狀態存儲器中的至少一個條件代碼標誌的值。例如,可提供條件代碼標誌以指示先前比較生成了負值、零值、進位、或是溢位。較後的比較隨後可依據條件標誌值被製成為條件式,以使較後比較的結果亦取決於較早的比較。此使較早的比較和較後的比較能夠被鏈結在一起以形成結合的邏輯條件。條件式比較指令可包括用於指定測試條件的欄位。可由包括條件式比較指令的程序的程序設計師直接指定測試條件,或在條件式比較指令為代表所需邏輯表達式的程序指令序列的一部分時,可由編譯程序自動地生成測試條件。可由條件比較指令指定未通過條件狀態為立即值(immediate value)。因此,立即值指示在條件式比較指令執行的時的當前條件狀態未通過測試條件時,當前條件狀態將被設定至的值。
代表未通過條件狀態的立即值,可為由包括條件式比較指令的程序的程序設計師設定的可編程值。此使程序設計師能夠直接控制未通過條件狀態。另外,代表未通過條件狀態的立即值,也可為由包括條件式比較指令的程序的編譯程序設定的可編程值,編譯程序根據所需條件選定可編程值,條件式比較指令的未通過條件狀態隨後必須通過此所需條件。在此情況中,編譯程序可確定所需條件為何,並且,如果測試條件未通過,則將所需條件轉換成將寫入當前條件狀態的可編程值。例如,如果所需條件為EQ條件,則編譯程序可選定可編程值,其在發生測試條件未通過時被寫入條件標誌,並導致EQ條件被滿足。在多個可能的可編程值的每一個皆滿足所需條件的情況下,可安排編譯程序來應用對於選定要使用哪一個可編程值的選擇準則,以確保編譯程序每次都以同樣的方式編譯特定原始碼。例如,編譯程序可選定最大或最小的滿足所需條件的可能值,或應用任意其他的對於選定用作未通過條件狀態值的一個值的規則。未通過條件狀態值可被指定為N位未通過條件狀態值,其中N為大於零的任意整數,並且,當前條件狀態可由N位值代表。指令解碼器可控制處理電路,以在當前條件狀態未通過測試條件時,將N位未通過條件狀態值寫入狀態存儲器中。可由相同方式編碼未通過條件狀態和當前條件狀態,以使未通過條件狀態值的特定位在當前條件狀態未通過測試條件時,可簡單地被寫入至狀態存儲器中以更新當前條件狀態。在示例性具體實施例中,當前條件狀態可能夠被設定至多個條件狀態中的任意者,包括預定條件狀態,並且,如果指定預定條件狀態值為未通過條件狀態的條件式比較指令未通過測試條件,則當前條件狀態僅可被設定至預定條件狀態。在條件式比較指令未通過其測試條件時,當前條件狀態被設定至在指令中指定的未通過條件狀態。在條件式比較指令通過其測試條件時,執行比較運算,並且,根據比較運算結果更新當前條件狀態。因為由比較運算生成的被更新的條件狀態可與未通過條件狀態相同,所以不可能精確地確定測試條件為通過或未通過。 因此,在示例性具體實施例中,可提供無法出現於正常處理運算中的預定條件狀態。預定條件狀態為條件式比較指令所專有,以使處理電路僅可在指定預定條件狀態為其未通過條件狀態的條件式比較指令未通過其測試條件時,被置於預定條件狀態中。因此,有可能根據測試隨著條件式比較指令的執行是否出現了預定條件狀態,以確定指定預定條件狀態為其未通過條件的條件式比較指令是否通過或未通過其測試條件。此可為有幫助的,例如,對於測試特定數據值是否在給定數據值範圍的中。條件式比較指令可包括用於指定第一操作數和第二操作數的第一和第二操作數欄位。第一和第二操作數欄位的至少一個可指定存儲第一操作數或第二操作數的存儲位置。根據指定用於存儲操作數的存儲位置(例如,寄存器)的數量,操作數欄位可用以識別在指令編碼中的具有大於可用於操作數欄位的位數的位數的操作數。再者,參照在操作數欄位中的存儲位置,允許在欲指定的相同指令的多次執行的間有差異的可變操作數。指令解碼器可經組態以響應指定位值預定組合的操作數欄位的一個,來控制處理電路以執行條件式比較運算,並且,第一和第二操作數的對應的一個具有零值。例如,全I位值(例如,Oblllll)可作為用於指示零操作數的位值預定組合。因此,位值預定組合不被 指令解碼器解譯(interprete)為存儲位置指定符(specif ier),而是用以識別零值。此為有幫助的,因為使用零值的比較是常見的,並且,因此能夠直接以指令語法編碼此種比較,意味著通常可避免需要存取存儲位置以獲得零操作數。第一和第二操作數欄位的一個可指定立即值為第一操作數或第二操作數。這種指令形式對於在可變值和固定值的間的比較可為有幫助的。在此情況中,操作數欄位的一個可用以指定存儲可變操作數的存儲位置,並且,其他操作數欄位可用以指定代表固定值的立即值。如果條件式比較指令的測試條件被滿足,則由處理電路執行的比較運算可為各種形式。例如,比較運算可包括以下步驟的任意一個(a)將所述第一操作數減去所述第二操作數;(b)將所述第一操作數加上所述第二操作數;(C)對所述第一操作數和所述第二操作數執行按位異或運算;(d)對所述第一操作數與所述第二操作數執行按位與運算;(e)將所述第一操作數、所述第二操作數、與所述狀態存儲器的進位位相加;(f)對所述第一操作數與所述第二操作數執行按位或運算。比較運算亦可包括對第一和第二操作數執行的另一算數或邏輯運算。本發明的另一方面提供一種數據處理裝置,包括處理部件,用於處理數據;指令解碼器部件,用於響應於程序指令以生成控制信號,所述等控制信號用於控制所述處理部件以處理所述數據;狀態存儲器部件,用於存儲所述處理部件的當前條件狀態,所述當前條件狀態在處理所述數據期間為可修改的;其中所述等程序指令包括條件式比較指令,並且,所述指令解碼器部件響應於所述條件式比較指令以生成用於控制所述處理部件以執行條件式比較運算的控制信號,所述條件式比較運算包括(i)如果所述當前條件狀態通過測試條件,則對第一操作數和第二操作數執行比較運算,並設定所述當前條件狀態為在所述比較運算期間生成的結果條件狀態;以及(ii)如果所述當前條件狀態未通過所述測試條件,則設定所述當前條件狀態為由所述條件式比較指令指定的未通過條件狀態。
本發明的另一方面提供一種數據處理方法,包括以下步驟 響應於包括條件式比較指令的程序指令,生成用於控制處理電路以處理數據的控制信號;存儲所述處理電路的當前條件狀態,所述當前條件狀態在處理所述數據期間為可修改的;響應於所述條件式比較指令,生成用於控制所述處理電路以執行條件式比較運算的控制信號,所述條件式比較運算包括(i)如果所述當前條件狀態通過測試條件,則對第一操作數和第二操作數執行比較運算,並設定所述當前條件狀態為在所述比較運算期間生成的結果條件狀態;以及 (ii)如果所述當前條件狀態未通過所述測試條件,則設定所述當前條件狀態為由所述條件式比較指令指定的未通過條件狀態。本發明的另一方面提供一種編譯由數據處理裝置執行的程序指令序列的方法,程序指令序列包括無條件式比較指令和至少一個條件式比較指令,無條件式比較指令用於控制所述數據處理裝置以對兩操作數執行無條件式比較運算,並設定所述數據處理裝置的當前條件狀態為在所述無條件式比較運算期間生成的結果條件狀態,至少一個條件式比較指令用於控制所述數據處理裝置以執行條件式比較運算,條件式比較運算包括以下步驟(i)如果所述數據處理裝置的所述當前條件狀態通過測試條件,則對第一操作數和第二操作數執行比較運算,並設定所述當前條件狀態為在所述比較運算期間生成的結果條件狀態;以及(ii)如果所述當前條件狀態未通過所述測試條件,則設定所述當前條件狀態為由所述條件式比較指令指定的未通過條件狀態;所述方法包括以下步驟(a)接收定義使用一個或多個與運算或或運算邏輯結合(logically combined)的N個比較運算的序列鏈的數據的輸入,其中N為大於I的整數,所述等N個比較運算的每一個測試各自的操作數是否滿足各自的預定準則;(b)生成對應所述序列鏈的第一個比較運算的所述無條件式比較指令;(c)對於在2和N的間的每個整數值i,執行下列步驟(i)確定所述序列鏈的第i個比較運算是否使用AND運算或OR運算與部分序列鏈的結果邏輯結合,所述部分序列鏈包括所述序列鏈的第一個至第i_l個比較運算;(ii)如果所述第i個比較運算使用與運算與所述部分序列鏈的所述結果邏輯結合,則生成對應所述第i個比較運算的條件式比較指令,所述條件式比較指令將在所述第i-Ι個比較運算的所述預定準則被滿足時通過的條件指定為所述測試條件,並將對應所述第i個比較運算的所述預定準則未被滿足的條件狀態指定為所述未通過條件狀態;(iii)如果所述第i個比較運算使用OR運算與所述部分序列鏈的所述結果邏輯結合,則生成對應所述第i個比較運算的條件式比較指令,所述條件式比較指令將在所述第i_l個比較運算的所述預定準則未被滿足時通過的條件指定為所述測試條件,並將對應所述第i個比較運算的所述預定準則被滿足的條件狀態指定為所述未通過條件狀態;(d)將至少在步驟(b)中生成的所述無條件式比較指令與在步驟(C)中生成的N-I個所述條件式比較指令輸出為所述程序指令序列。本技術的條件式比較指令可用以代表使用一個或多個與運算或或運算邏輯結合的N個比較運算的序列鏈。N個比較運算的每一個測試各自的操作數是否滿足預定準則。本技術的條件式比較指令使比較運算的每一個能夠測試不同的準則。例如,比較運算的一個可測試一個操作數是否大於另一個操作數,而下一個比較運算可測試一個操作數是否等於另一個操作數,並且,另一個比較運算可測試一個操作數是否不等於另一個操作數。注意到術語「準則」用於表示由特定比較(例如,A>B或C==D)測試的關係,儘管名詞「條件」表示控制條件式比較指令的比較運算是否被執行的測試(例如,用以看看當前條件狀態是否為HI狀態的測試、用以看看Z標誌是否被設定以表示先前結果為零的測試、或為用以看看N標誌是否被設定以表示先前結果為負的測試)。可由生成對於每個比較運算的比較指令,一步步建構代表N個比較運算的序列鏈的程序指令的序列(N為大於一的整數)。每個比較運算指定預定準則(例如,A < B),並且,根據AND或OR運算被鏈結至先前比較運算的部分序列鏈的結果。對於序列鏈中的第一個比較運算,生成無條件式比較指令。對於第i個比較運算(i為2至N的間的任意整數),生成條件式比較指令,並且,第i個條件式比較指令的測試條件與未通過條件狀態取決於第i個比較運算是否以AND運算或OR運算與部分序列鏈的結果邏輯結合,部分序列鏈包括第一個至第i_l個比較運算。
·
如果第i個比較運算由AND運算與先前比較運算的部分序列鏈的結果邏輯結合,則第i個條件式比較指令指定在第i_l個比較的預定準則被滿足時通過的條件為測試條件,並且,指定對應至未被滿足的第i個比較運算的預定準則的條件狀態為未通過條件狀態。此確保如果第i-Ι個預定準則生成「未通過」結果,則第i個條件式比較指令將不會通過其測試條件,並且,因此回到其自身的未通過條件狀態,同時如果第i_l個預定準則比較運算生成「通過」結果,則第i個比較運算將通過其測試條件,並且,將生成取決於第i個預定準則是否被滿足的結果條件狀態。因此,第i個與第i_l個比較的結合僅將在第i_l個與第i個預定準則皆被滿足時生成通過結果,其為AND運算所需的行為。另一方面,如果第i個比較運算使用OR運算與先前比較運算的部分序列鏈的結果邏輯結合,則生成對應第i個比較運算的條件式比較指令,條件式比較指令指定在第i_l個比較運算的預定準則未被滿足時通過的條件為測試條件,並且,指定對應至第i個比較運算的預定條件被滿足的條件狀態為未通過條件狀態。此確保如果第i-Ι個預定準則被滿足,則第i個條件式比較指令不通過其測試條件,並且,因此生成對應至第i個預定條件被滿足的「通過」條件狀態為其未通過條件狀態。另一方而,如果第i_l個比較未滿足其預定準則,則第i個條件式比較指令通過其測試條件,並且,因此將生成取決於第i個預定準則是否被滿足的結果條件狀態。此意味著總體結果將為相關於第i個預定準則的「通過」條件,只要第i_l個與第i個預定準則的任意者被滿足。此為OR運算所需的行為。因此,根據生成為此形式的條件式比較指令串,可將比較序列鏈轉換成程序指令序列。所生成的指令序列隨後被輸出。將理解,,生成無條件式比較指令與條件式比較指令的時間順序並不重要。例如,可由對應至比較運算序列鏈的時間順序生成指令(亦即,使計數器i從2遞增至N)。或者,可由序列鏈的反向時間順序生成指令(使計數器從N遞減至2),或可由任意其他時間順序。無論由何時間順序生成指令,所生成的指令的程序順序為相同,其中第一個指令為對應至鏈中第一個比較運算的無條件式比較指令,第二個指令為對應至鏈中第二個比較運算的條件式比較指令,以此類推。
可提供用於存儲電腦程式的計算機存儲媒體,電腦程式在由計算機執行時控制計算機以執行用於編譯如上所述的程序指令序列的方法。本發明的另一方面提供存儲電腦程式的非瞬態計算機存儲媒體,電腦程式包括用於控制處理電路以執行條件式比較運算的條件式比較指令,條件式比較運算包括(i)如果所述處理電路的當前條件狀態通過測試條件,則對第一操作數和第二操作數執行比較運算,並設定所述當前條件狀態為在所述比較運算期間生成的結果條件狀態;以及(ii)如果所述當前條件狀態未通過所述測試條件,則設定所述當前條件狀態至由所述條件式比較指令指定的未通過條件狀態。本發明的上述和其他的目的、特徵和優點將顯然於下文的說明性具體實施例的實施方式,其需連同附加圖式閱讀。


圖I示意性地示出了數據處理裝置;圖2示意性地示出了條件代碼標誌的示例;圖3A和圖3B分別示出了條件式比較指令的示例語法和示例編碼,條件式比較指令包括用於指定測試條件、兩個寄存器操作數和立即未通過條件狀態值的欄位;圖4A和圖4B分別示出了條件式比較指令的替代示例語法和示例編碼,其中操作數中的一個被指定為立即值;圖5示出了用於處理條件式比較指令的方法; 圖6A至圖6F示出了條件式比較指令的不同類型,其每一個對應至不同的比較運算;圖7A和圖7B示出了用於生成代表比較運算序列鏈的程序指令序列的示例方法;圖8示出了各種條件狀態與代表每個條件狀態的條件標誌的組合;圖9示意性地示出了虛擬機實施;圖10示出了包括預定條件狀態的條件狀態示例,預定條件狀態為條件式比較指令所專用;以及圖11示出了使用指定預定條件狀態為其未通過條件狀態的條件式比較狀態,限制變量X至給定範圍的數據值中的示例。
具體實施例方式圖I示出了數據處理裝置2。數據處理裝置2包括用於處理數據的處理電路4。處理電路可包括各種部件,例如寄存器庫6、加法器8、移位器10和乘法器12。加法器8、移位器10和乘法器12 —同處理存儲在寄存器庫6中的數據,並且,將處理結果寫回寄存器庫
6。將理解,處理電路4並不限於此配置,並且,通常將包括許多其他部件,其為了簡明目的不在此示出。數據處理裝置2包括解碼器14,其響應於程序指令以生成用於控制處理電路4以處理數據的控制信號。數據處理裝置2包括用於存儲狀態數據的狀態存儲器15,狀態數據報含處理電路4的至少一個當前條件狀態。在圖I的示例中,狀態存儲器15為狀態寄存器,但存儲位置亦可包括其他形式的存儲位置。雖然在圖I中示出了狀態寄存器15為在處理電路4中,在其他具體實施例中,狀態寄存器15可被定位於裝置2的另一部分中。在具體實施例中,由存儲在狀態寄存器15中的一組條件代碼標誌表示當前條件狀態。條件代碼標誌表示由處理電路4生成的先前處理結果的條件。在圖2示出了的示例具體實施例中,狀態寄存器15的條件代碼標誌包括用於表示先前處理結果是否為負數的負標誌N、用於表示先前處理結果是否為零的零標誌Z、用於表示在生成先前處理結果時是否發生了進位的進位標誌C、以及用於表示在生成先前處理結果時是否發生了溢位的溢位標誌V。因此,條件代碼標誌的值提供了關於先前處理結果的信息。標誌可被設定以表示發生了負數、零值、進位或溢位,並且,可被清除以表示相反的狀況,或反的亦然。對於由條件代碼標誌N、Z、C、V的不同組合所代表的信息的示例,可見於圖8和圖10。圖3A示出了根據本技術的條件式比較指令CCMP的示例語法。條件式比較指令具有用於指定測試條件、兩個操作數、和未通過條件狀態的欄位。指令解碼器14響應條件式 比較指令以控制處理電路4,來確定存儲在狀態寄存器15中的當前條件狀態是否滿足與條件式比較指令相關的測試條件(cond)。如果當前條件狀態滿足測試條件,則處理電路4對兩個操作數執行比較運算,並且,基於處理結果更新當前條件狀態(例如,如果比較運算生成負值,則條件標誌N可被設定))。如果在條件式比較指令執行的時的當前條件狀態不滿足測試條件,則比較運算不被執行,並且,由條件式比較指令指定的未通過條件狀態值被寫入至狀態寄存器15中以更新當前條件狀態。圖3B示出了圖3A的條件式比較指令的示例編碼。在此示例中,指令包括用於指定測試條件的4位欄位、用於指定操作數寄存器的兩個5位欄位、以及用於指定未通過條件狀態的4位欄位。將理解,,可依所需對每個欄位使用其他位數量。在此示例中,4位測試條件識別符#0b0000表示EQ條件。在指令被執行時,測試條件代碼以看看是否滿足EQ測試條件。如果滿足EQ測試條件,則比較存儲在操作數寄存器(在此示例中為寄存器R2和R9)內的值,並且,基於比較結果更新條件代碼。如果未滿足EQ測試條件,則寫入未通過條件狀態值(在此示例中為#0b0001)至條件代碼NZCV中。在圖3A的語法中,條件式比較指令使用寄存器指定符Rn、Rm指定操作數兩者。寄存器指定符RruRm識別存儲欲比較的操作數的寄存器庫6的寄存器。欲比較的操作數可為整數或浮點數。在如圖4A所示的另一示例語法中,可指定操作數的一個#op為在條件式比較指令中的立即值。在欲比較變量和常數彼此時,此可為有用的。圖4B示出了具有如圖4A所示的語法的指令的示例編碼。如果滿足測試條件(例如,LT),則比較存儲在操作數寄存器(例如,R7)中的值和立即值(例如,#19),並且,根據比較更新條件代碼。如果未滿足測試條件,則寫入未通過條件狀態代碼#0b0000至條件代碼NZCV中。在使用寄存器指定符指定操作數時,指令解碼器14可選擇性地經配置以將特定寄存器指定符值解譯為表示零操作數,而非存儲在寄存器內的操作數。例如,在圖3的具體實施例中,在寄存器指定符Rm指定全I位值Ob 11111時,此可用以表示處理電路4需將存儲在寄存器Rn中的操作數與零值比較。在圖3和圖4兩者的語法中,指定未通過條件狀態為立即值,立即值代表如果測試條件未通過則欲寫入狀態寄存器15的條件代碼標誌的位值。例如,使用如圖2所示的NZCV條件代碼標誌,代表ObOlOO的未通過條件狀態的立即值可表示需寫入O至負標誌N、進位標誌C和溢位標誌V,並且,需寫入I至零標誌Z。以此方式,如果未通過測試條件,則條件式比較指令直接指定欲採取的條件狀態。此為有用的,因為此使條件式比較指令能夠用以設定當前條件狀態為準備由隨後條件式指令使用的適當的值。圖5示出了一種用於使用本技術的條件式比較指令的數據處理方法。在步驟50,指令解碼器14解碼指令序列的下一個指令。在步驟60,解碼器14確定下一個指令是否為條件式比較指令。如果下一個指令不為條件式比較指令,則在步驟70指令解碼器14生成對應於下一個指令的控制信號,並且,控制處理電路4執行對應於下一個指令的運算。隨後程序進行至步驟80,在步驟80處確定是否還有任何指令需處理。如果還有需處理的指令,則方法回到步驟50,並且,解碼下一個指令。如果沒有欲處理的指令,則方法結束。另一方面,如果在步驟60下一個指令為條件式比較指令,則指令解碼器生成用於控制處理電路4的控制信號以執行條件式比較運算。在步驟90,處理電路4確定由狀態寄存器15的條件代碼標誌代表的當前條件狀態是否通過與條件式比較指令相關的測試條 件。如果當前條件狀態通過了測試條件,則在步驟100處理電路4被控制以對第一和第二操作數執行比較運算。隨後在步驟110更新狀態寄存器15,以設定當前條件狀態為於在步驟100執行比較運算的同時生成的結果條件狀態。另一方面,如果在步驟90當前條件狀態未通過測試條件,則在步驟120設定當前條件狀態為由條件式比較指令指定的未通過條件狀態。例如,寫入由條件式比較指令指定的立即值狀態至存儲器15的條件代碼標誌。無論在步驟90當前條件狀態是否通過了測試條件,方法隨後進行至步驟80,並且,確定是否仍有需處理的指令。如果存在需處理的另一指令,則方法回到步驟50。如果無,則方法結束。圖5示出了無論條件式比較指令的當前條件狀態是否通過測試條件,代表當前條件狀態的條件代碼標誌被更新(相對於先前條件式指令,如果測試條件未通過則其作為無作業(no-op)指令)。當前條件狀態的更新值取決於當前條件狀態是否通過測試條件。如果當前條件狀態通過測試條件,則更新的條件狀態基於比較第一和第二操作數的結果來確定,同時如果當前條件狀態未通過測試條件,則更新值為由條件式比較指令指定的未通過條件狀態。此種指令是有用的,因為如果當前條件狀態未通過測試條件,則指定當前條件狀態需被更新至的未通過條件狀態的能力,使這些指令能夠用以代表一串測試不同種類的邏輯關的比較運算鏈。可提供各種類型的條件式比較指令,其每一個根據圖5的步驟90-120來處理,但在步驟100使用不同的比較運算。圖6A至圖6F示出了這些條件式比較指令類型的示例。圖6A至圖6F示出了使用寄存器指定符識別第一和第二操作數的形式的指令,但也可提供這些指令的每一個的替代形式,其中操作數的一個被指定為立即值。如下文所述,如果為所需,貝1J亦可修改這些指令的語法,以指定未通過條件狀態為助憶(mnemonic)條件而非為立即值#imm。圖6A示出了條件式比較正指令CCMP。如果由條件式比較正指令指定的測試條件被通過,則處理電路4被控制以從第一操作數減去第二操作數,並寫入結果條件狀態至條件標誌,同時如果測試條件未被通過,則寫入在指令中指定的未通過條件狀態#imm至條件標誌。此種指令對測試第一操作數是否大於、或等於第二操作數可為有用的。圖6B示出了條件式比較負指令CCMN。如果由指令指定的測試條件由當前條件狀態通過,則第一和第二操作數被相加並且,結果條件狀態被寫入條件標誌,同時如果當前條件狀態未通過測試條件,則寫入未通過條件狀態至條件標誌。此種指令可幫助測試第一操作數是否大於由將第二操作數乘上-I所獲得的值(因為將第一和第二操作數相加,等於從第一操作數減去(-1*第二操作數))。圖6C示出了條件式相等測試指令CTEQ。在執行此種類指令時,如果由指令指定的測試條件被通過,則處理電路4經配置以對第一和第二操作數執行EOR運算,並且,將結果條件狀態寫回條件標誌,同時如果測試條件未被通過,則由指令指定的未通過條件狀態#imm被寫回條件標誌。此種類指令可用以測試第一操作數是否相等於第二操作數。圖6D示出了條件式按位測試指令CTST。在執行此類型指令時,如果測試條件被通 過,則處理電路對第一和第二操作數執行按位AND運算,並將結果條件狀態寫入條件標誌,同時如果測試條件未被通過,則將未通過條件狀態寫入條件標誌。此類型指令可用以測試對應於在第二操作數中的「I」位的位置的第一操作數的位是否為全零或非全零。特別有用的情況為,在第二操作數正好包括一個「 I」位時,以及在指令測試第一操作數的對應位是否為「O」或「I」時。圖6E示出了具有進位的條件式加法指令CADC。在執行此指令時,如果測試條件被通過,則控制處理電路4以將第一操作數、第二操作數與在狀態寄存器15中的進位標誌C的當前值相加,並將此加法所生成的結果條件狀態寫入條件標誌中。另一方面,如果測試條件未被通過,則寫入未通過測試條件#imm條件標誌,如對其他類型的條件式比較指令般。進位加法運算可用以代表多字加法(multi-word addition)的第二、第三或更進一步的字,進位位表示多字加法的前一字是否生成了進位。圖6F示出了條件式按位OR測試指令C0RRT,其在執行時控制處理電路4以對第一和第二操作數執行按位0R,如果測試條件被通過。從按位OR出現的結果條件狀態被寫入條件標誌。另一方面,如果測試條件未被通過,則將未通過條件狀態#1_寫入條件標誌。此種指令可用以測試兩個寄存器是否都存儲零值。此對於測試倍寬數據值是否等於零特別有用。例如,倍寬128位值RnHi/Lo可使用兩個64位寄存器RnHi和RnLo存儲。按位OR測試指令使倍值的兩半部分能夠被使用單一指令來對零測試,因為倍寬值的上部分和下部分的按位OR僅當兩部分皆等於零時才具有零值。相較於個別地將倍寬值的每一部分對零比較,此可為更有效率。因此,(RnHi/Lo! = 0)&&(RmHi/Lo = = O)形式表達式可更有效率地使用兩個指令來估算ORRT RnHi,RnLo ;// 如果 RnHi/Lo = O 則 Z = 1,並且,如果為其他情況則 Z = O)CORRT NE, RmHi,RmLo,#0"如果(0RRT 設定 Z 為 OANDRmHi/Lo = O)則 Z = 1,//如果為其他情況則Z = O。將理解,在任意特定具體實施例中,指令解碼器可響應於任一個或更多的這些指令,以控制處理電路4來執行對應類型的條件式比較運算。例如,在特定具體實施例中,解碼器14可經配置以響應於在圖6A和圖6B中所示的條件式比較指令類型,但不回應其他種類的條件式比較指令。
條件式比較指令串可用以代表比較運算的序列鏈,其中在序列中的每個比較運算,使用AND或OR運算與所有先前比較運算的結合結果結合(例如,序列(A < B&&C ==D) I I E > = F)。每個比較運算測試特定準則(例如,在上述示例中,第一比較運算測試A < B與否的準則,第二比較運算測試C = D與否的準則,並且,第三比較運算測試E彡F與否的準則)。不像在先前已知的條件式指令,本技術的條件比較指令可在比較運算鏈測試一個以上二的準則種類時使用。圖7A和圖7B示出了用以將特定比較運算序列鏈轉換成比較指令序列的方法的具體實施例。此種方法可例如由編譯程序執行,編譯程序接收定義比較運算序列的輸入,並生成對應的程序指令序列。
圖7A示出了此種方法的第一具體實施例。在步驟200,輸入定義N個比較運算序列鏈的數據(N為大於I的任意整數)。在步驟202,設定計數變量i為等於N。在步驟204,確定結合序列鏈的第i個比較與序列鏈的第一個至第i_l個比較的結合結果的邏輯運算是否為AND運算或OR運算。例如,在序列(A < B&&C = =D)||E>=F中,在i = 3時序列的第i個比較(E >= F)經由OR運算I I被鏈結至第一個至第i-Ι個比較(A < B&&C ==D)的組合,並且,在i = 2時序列的第i個比較(C==D)經由AND運算&&被鏈結至第i_l個比較(A < B)。如果在步驟204確定第i個比較運算與第一個至第i-Ι個比較運算的部分鏈由與運算鏈結,貝1J在步驟206對第i個比較運算生成條件式比較指令,其中測試條件cond被設定為在第i_l個比較滿足其預定準則時通過的條件,並且,未通過條件狀態被設定為對應於第i個比較的準則未被滿足的任意值。例如,當在上述示例中i = 2時,在第i-Ι個比較(A < B)滿足其預定準則時通過的條件為條件LT (見第8圖-假定有符號比較(signed comparison)),因為此將表示A= F)的準則被滿足(例如,在對於有符號比較的GE狀態中-見第8圖)。因此,未通過條件狀態值可被設定為對應至GE狀態的條件標誌值的任意組合(例如,繼續參照圖8,位N和V為相同,並且,所有其他位可具有任意值-亦即ObOOOO)。無論邏輯運算是否為與運算或或運算,隨後在步驟210遞減計數變量i,並且,在步驟212確定新的計數變量i是否大於或等於2。如果新的計數變數i大於或等於2則對新的i值重複步驟204至212,以對另一比較運算生成另一條件式比較指令。以此方式對序列鏈的第二個至第N個比較運算生成條件式比較指令。如果在步驟212,i小於2,則方法進行至步驟214,在步驟214對序列鏈的第一個比較生成無條件式比較指令。例如,在上述序列中,可生成確定A < B與否並根據比較結果更新條件代碼標誌的無條件式比較指令。在步驟216,所有生成的指令由與生成順序反向的順序輸出,以形成代表比較運算的序列鏈的指令序列。圖7B示出了用於生成對應於比較運算的指令序列的方法的替代性具體實施例。圖7B的步驟,其與圖7A的對應步驟相同,並以與圖7A相同的組件符號標示。圖7B與圖7A的不同之處在於指令是以在序列鏈中的對應比較運算的順序生成的,而非如圖7A中以反向順序生成。序列鏈的第一個比較運算的無條件式比較指令在圖7B的步驟214生成。隨後在步驟220計數變數i被初始化至值2。隨後對第i個比較運算執行步驟204至208,其與圖7A的對應步驟相同,並且,在i於步驟222循序遞增的同時重複,直至在步驟226i大 於N。此意味著對於鏈中的第二個至第N個比較運算生成了條件式比較指令。一旦i大於N,則在步驟230所生成的指令由在步驟230生成的順序輸出,以形成程序指令序列。如可見於圖7A至圖7B,對於第一個比較運算的無條件式比較指令以及對於第二個至第N個比較運算的條件式比較指令生成的順序並不特別重要,只要對第二個至第N個比較運算的每一個生成條件式比較指令並對第一個比較運算生成無條件式比較指令,並且,所生成的指令被由正確的程序順序輸出。在本發明領域具有通常知識者將可認知,也可以使用除了圖7A和圖7B所示的生成順序以外的順序。在圖7A和圖7B的步驟214生成的無條件式比較指令,可為具有與條件式指令不同的語法的指令。例如,無條件式比較指令可具有指定兩個操作數的語法,以使指令解碼器生成用於控制處理電路4的控制信號,以比較操作數並根據比較結果更新條件代碼標誌NZCV0無條件式比較指令語法可省略圖3、圖4或圖6所示的條件式比較指令語法的測試條件與未通過條件狀態。在此種具體實施例中圖8的AL(總是通過)條件狀態可被省略。或者,無條件式比較指令與條件式比較指令可具有共同的語法,根據設定測試條件cond為無論條件標誌值為何,而總是被滿足的條件狀態,可使用在圖3、圖4和圖6中的任意者所示的條件式比較指令語法形成無條件式比較指令。例如,對於無條件式指令,測試條件cond可被設定為相等於圖8的「總是」條件狀態AL,以使指令總是通過其條件代碼(在此情況中,因為未通過條件狀態將不被需要,所以其可被設定為任意值)。因此,相同種類的指令語法可同時作為無條件式比較指令與條件式比較指令,取決於對指令指定的測試條件。此可增進指令編碼空間的使用效率。圖8示出了圖標條件代碼標誌的不同組合的表,每個組合代表由特定條件後綴(或條件「助憶」)指定的特定條件狀態。例如,PL狀態表示先前處理結果為正或零,並且,由「N」條件標誌為清除以指定。因此,NZCV的任意組合位值ObOxxx (其中X為O或I的任意者)具有為清除的N位,並且,因此可表示PL狀態。下文更詳細解釋圖7A和圖7B的方法。假設某人現有「如果(if) 」測試,其為單獨比較的序列鏈,諸如if (((s = = t&&u > = O) I I a ! = b) &&c > d)其中僅為示例的目的,某人假定s、t和U為有符號變數並且,a、b、c和d為有符號無符號變量(他們同樣可為有符號無符號變量)。用於對此種序列鏈生成碼序列的一組適合的規則為I.將總是由對於鏈中最終個別比較的適合條件來反映結果。2.如果序列鏈僅包括單一個別比較,則對其的兩個操作數使用無條件式比較(CMP)指令(參見圖7A和圖7B的步驟214)。定義無條件式比較指令以根據比較結果生成圖8的條件狀態的一個。3.其他情況下,序列鏈由較短的序列鏈與一個額外的單獨比較與或或所組成。4.如果序列鏈由較短的序列鏈與一個額外的比較AND所組成,則(參見圖7A和圖7B的步驟206)對此較短的序列鏈生成指令序列,並於其後加上CCMP cond, opl, op2,#imm其中cond為在較短的序列鏈通過時其生成的條件;·opl和op2為用於額外比較的兩個操作數;以及imm為N、Z、C、V條件標誌值的任意組,其對應於所需的來自額外比較的「未通過」結果。此確保如果較短的序列鏈生成其「未通過」條件,則額外的比較將生成其自身的「未通過」條件,並且,如果較短的序列鏈生成其「通過」,則額外的比較將生成其自身的「未通過」結果或其自身的「通過」結果,取決於個別測試的結果,其為對於與額外比較AND的正確行為。5.如果序列鏈由較短的序列鏈與一個額外的比較OR所組成(參見圖7A和圖7B的步驟208),則對此較短的序列鏈生成指令序列,並於其後加上CCMP cond, opl, op2,#imm其中cond為在較短的序列鏈未通過時其生成的條件;opl和op2為用於額外比較的兩個操作數;以及imm為N、Z、C、V條件標誌值的任意組,其對應於所需的來自額外比較的「通過」結
果O此確保如果較短的序列鏈生成其「通過」條件,則額外的比較將生成其自身的「通過」條件,並且,如果較短的序列鏈生成其「未通過」條件,則額外的比較將生成其自身的「未通過」結果或其自身的「通過」結果,取決於個別測試的結果,其為對於與額外比較OR的正確行為。為了說明上述用以生成碼序列的示例,對於(((s == t&&u >= 0) I |a ! = b)SlSlc> d)序列的最終比較為無正負號的>,所以遵循規則1,目標為在其通過時(亦即為TRUE)生成圖8的HI條件,並在其未通過時(亦即為FALSE)生成圖8的LS條件。因此,目標為......為尚未決定的碼序列......//現如果(((s = = t&&u > = 0) I I a ! = b) &&c > d)為 TRUE//則為HI,其他情況為LS序列鏈(((S==t&&u > = 0) I I a ! = b) SlSlc > d)由較短的序列鏈((s== t&&u>=O) I |a ! = b)與額外比較c > d邏輯與而成。遵循上述規則4 *較短的序列鏈具有!=測試為其最終比較,如果其通過則生成NE條件。*所需的額外比較「未通過」結果為LS= (C==0)||(Z = 1)。挑選滿足此條件的NZCV標誌組的任意值,例如NZCV = ObOOOO。並且,碼序列可經由第一步驟發展為......為尚未決定的碼序列......// 現如果((S== t&&u > = O) I I a ! = b)為 TRUE 則為 NE,//其他情況為EQ
CCMP NE, Re, Rd, #0b0000//現如果(((s = = t&&u > = O) I I a ! = b) &&c > d)為 TRUE//則為HI,其他情況為LS序列鏈((S==t&&u > = O) I I a ! = b)由較短的序列鏈(s = = t&&u > = O)與額外比較a ! = b邏輯或而成。遵循上述規則5 *較短的序列鏈具有有符號 >=測試為其最終比較,如果其未通過則生成LT條件。*所需的額外比較「通過」結果為NE = (Z == O)。挑選滿足此條件的NZCV標誌組的任意值,例如NZCV = ObOOOO。並且,碼序列可經由第二步驟發展為......為尚未決定的碼序列......// 現如果(s == t&&u > = 0)為 TRUE 則為 GE,//其他情況為LTCCMP LT, Ra, Rb, #0b0000//現如果((S== t&&u > = 0) I I a ! = b)為 TRUE 則為 NE,//其他情況為EQCCMP NE, Re, Rd, #0b0000//現如果(((s = = t&&u > = 0) I I a ! = b) &&c > d)為 TRUE//則為HI,其他情況為LS序列鏈(s = = t&&u >= 0)由較短的序列鏈s = = t和額外比較u > = OAND而成。遵循上述規則4:*較短的序列鏈具有==測試為其最終比較,以如果其通過則生成EQ條件。*所需的額外比較「未通過」結果為LT = (N ! = V)。挑選滿足此條件的NZCV標誌組的任意值,例如NZCV = ObOOOl。並且,碼序列可經由第三步驟發展為......為尚未決定的碼序列......Il現如果s == t為TRUE則為EQ,其他情況為NECCMP EQ, Ru, #0, #0h0001// 現如果(s == t&&u > = 0)為 TRUE 則為 GE,//其他情況為LTCCMP LT, Ra, Rb, #0b0000
// 現如果((s== t&&u > = O) I I a ! = b)為 TRUE 則為 NE,//其他情況為EQCCMP NE,Re,Rd,#0b0000//現如果(((s = = t&&u > = O) I I a ! = b) &&c > d)為 TRUE//則為HI,其他情況為LS最後,序列鏈s = = t僅為單一比較,故遵循上述規則2,如上所述對其使用無條件式比較指令。此生成完整碼序列CMP Rs, Rt //現如果s = = t為TRUE則為EQ,其他情況為NECCMP EQ, Ru, #0, UOhOOOl// 現如果(s == t&&u >= O)為 TRUE 則為 GE,//其他情況為LTCCMP LT, Ra, Rb, #0b0000// 現如果((S== t&&u > = O) I I a ! = b)為 TRUE 則為 NE,//其他情況為EQCCMP NE, Re, Rd, #0b0000//現如果(((s = = t&&u > = O) I I a ! = b) &&c > d)為 TRUE//則為HI,其他情況為LS上述技術可由編譯程序執行,以將所需邏輯表達式轉換成程序指令序列以估算表達式。指令不須以任意特定的順序確定或生成,只要指令以正確的程序順序被輸出,故可能存在不同的生成方法的具體實施例(參見圖7A和圖7B)。在上述示例中,由指令語法指定未通過條件狀態為立即值,立即值指定欲寫入狀態寄存器15中的條件代碼的字節合值。然而,語法可替代性地指定未通過條件狀態為條件助憶(後綴),諸如第圖8所示的HI、LS、PL等等。在此指令形式中,程序設計師隨後可指定未通過條件狀態所需的條件助憶,並且,在組譯指令時組譯器(assembler)可將條件助憶轉換成特定的立即值。因此,從指令解碼器14的觀點看來,指令看起來與其他具體實施例相同,但從程序設計師的觀點看來指令語法更為直覺,因為相較於條件代碼值,使用助憶可更清楚了解不同條件狀態的意義。響應於特定條件助憶,組譯器可選定可寫入條件標誌,以使得由助憶表示的條件狀態被保持的任意未通過條件狀態。如果存在對應至相同條件的多個可能的立即值,則可提供用於選定對應至條件的值的規則給組譯器。例如,組譯器可選定最大或最小的可用值,以確保每次原始碼皆由相同方式組譯。例如在圖8中,滿足EQ狀態的最大可能值為OblllK並且,Z位被設定)。因此,在指定未通過條件狀態為條件助憶的具體實施例中,在上述示例中決定的最終指令序列可為CMP Rs, Rt//現如果s = = t為TRUE則為EQ,其他情況為NECCMP EQ, Ru, #0, LT
// 現如果(s = = t&&u > = O)為 TRUE 則為 GE,//其他情況為LTCCMP LT,Ra,Rb,NE// 現如果((S== t&&u > = O) I I a ! = b)為 TRUE 則為 NE,//其他情況為EQCCMP NE,Re,Rd,LS//現如果(((s = = t&&u > = O) I I a ! = b) &&c > d)為 TRUE //則為HI,其他情況為LS 圖9示出了可使用的虛擬機實現。雖然上文所述的具體實施例依據用於操作支持所關切技術的特定處理硬體的裝置和方法來實施本發明,也可以提供所謂的硬體裝置的虛擬機實現。這些虛擬機實現在運行支持虛擬機程序510的宿主操作統520的宿主處理器530上運行。通常需要大型強力的處理器來提供以適當的速度執行的虛擬機實施,但在特定環境下可調整此種作法,諸如在為了兼容性或再使用的緣由而想要運行另一處理器專用的碼時。虛擬機程序510提供應用程式編程接口給應用程式500,其與由虛擬機程序510模型化的真實硬體所提供的應用程式編程接口相同。因此,程序指令,包括上文所述的對內存存取的控制,可使用虛擬機程序510從應用程式500內執行,以模型化他們與虛擬機硬體的互動。圖10示出了圖8所示的條件狀態的可選延伸。在圖10的示例中,處理電路4可被設定為一些不同條件狀態的任意者,包括預定條件狀態MZ,其專由條件式比較指令使用。處理裝置無法經由正常處理運算被置於MZ條件狀態中。MZ條件狀態僅在指定MZ條件狀態為其未通過條件狀態的條件式比較指令未通過其測試條件時出現。在圖10的示例中,MZ狀態由N和Z標誌被設定來代表,表示「負零」結果。正常處理運算無法出現「負零」結果,因為正常處理運算將生成為零或為負的結果,但將不同時為零並且,為負。圖10也示出了OK狀態,其相反於MZ狀態。因此,OK狀態在N或Z標誌為清除時被滿足。MZ狀態是有用的,因為其允許指令測試在的前的條件式比較指令是否通過或未通過其測試條件。可執行指定MZ狀態為未通過條件狀態的條件式比較指令。隨後的條件式指令可隨後測試條件標誌是在MZ狀態或在OK狀態。如果條件標誌為在MZ狀態,則條件式比較指令未通過其測試條件,同時如果條件標誌為在OK狀態,則條件式比較指令通過其測試條件。圖11示出了指定MZ狀態為未通過條件狀態的條件式比較指令如何可用以限制變量X為在給定範圍BOT至TOP中的示例。如果X在可允許的範圍BOT至TOP中,則X保持其原始值。如果X大於Τ0Ρ,則X被設定為相等於Τ0Ρ,同時如果X小於Β0Τ,則X被設定為相等於Β0Τ。因此,X被限制以使其最大可能值為TOP並且,其最小可能值為Β0Τ。圖11示出了用於實施此對X值的限制的指令的示例序列。首先,比較指令CMP X,TOP被執行以觸發對X和TOP值的比較。隨後條件標誌基於比較結果被更新。如果Χ<Τ0Ρ,則條件標誌將被設定為LT條件狀態,同時如果X ^ TOP,則條件標誌將被設定為GE條件狀態。接著,條件式比較指令CCMP LT,X,BOT,MZ被執行。如果LT測試條件通過,則X和BOT被比較並且,基於比較結果更新條件標誌為LT和GE條件狀態的一個。另一方面,如果LT測試條件未通過,則條件標誌被置於MZ狀態。接著,條件式選定指令CSEL,MZ, X,TOP, X被執行。如果MZ測試條件通過,則X被選定以具有TOP值,同時在其他情況下X保持其原始值。最後,條件式選定指令CSEL LT, X,BOT, X被執行。如果LT測試條件通過,則X被選定以具有BOT值,同時在其他情況下X保持其原始值。圖10和圖11示出了示例,其中僅可由未通過其測試條件的條件式比較指令設定的條件狀態為MZ 「負零」狀態,並且,N和Z標誌皆被設定。然而,在其他具體實施例中,可使用除了 MZ狀態以外的任意無法在正常處理期間出現的條件標誌值的組合。在圖10的示例中,MZ狀態取代圖8所示的「總是」AL狀態,以提供總共16個可用的條件狀態,其可使用4位識別符來識別。將理解,,在其他示例中可同時提供AL狀態和MZ狀態兩者。雖然在此已參照附加圖式,詳盡描述了本發明的說明性具體實施例,將了解到本·發明並不限於這些精確的具體實施例,並且,在本發明領域中具有通常知識者可進行各種改變和修改,而不脫離如附加中請專利範圍所定義的本發明的範圍和精神。
權利要求
1.一種數據處理裝置,包括 處理電路,用於處理數據; 指令解碼器,響應於程序指令以生成用於控制所述處理電路以處理所述數據的控制信號; 狀態存儲器,用於存儲所述處理電路的當前條件狀態,所述當前條件狀態在處理所述數據期間為可修改的; 其中所述程序指令包括條件式比較指令,並且,所述指令解碼器響應於所述條件式比較指令以生成用於控制所述處理電路以執行條件式比較運算的控制信號,所述條件式比較運算包括 (i)如果所述當前條件狀態通過測試條件,則對第一操作數和第二操作數執行比較運算,並且,設定所述當前條件狀態為在所述比較運算期間生成的結果條件狀態;以及 (ii)如果所述當前條件狀態未通過所述測試條件,則設定所述當前條件狀態為由所述條件式比較指令指定的未通過條件狀態。
2.如權利要1所述的數據處理裝置,其中所述狀態存儲器包括狀態寄存器。
3.如權利要求1或2所述的數據處理裝置,其中所述當前條件狀態包括存儲在所述狀態存儲器中的至少一個條件代碼標誌的值。
4.如前述權利要求中任一項所述的數據處理裝置,其中所述條件式比較指令包括用於指定所述測試條件的欄位。
5.如前述權利要求中任一項所述的數據處理裝置,其中所述未通過條件狀態由所述條件式比較指令指定為立即值。
6.如權利要求5所述的數據處理裝置,其中所述立即值為由包括所述條件式比較指令的程序的程序設計師設定的可編程值。
7.如權利要求5所述的數據處理裝置,其中所述立即值為由包括所述條件式比較指令的程序的編譯程序設定的可編程值,所述編譯程序根據所需條件選定所述可編程值,所述條件式比較指令的所述未通過條件狀態將通過所述所需條件。
8.如前述權利要求中的任一項所述的數據處理裝置,其中所述未通過條件狀態被指定為N位未通過條件狀態值,其中N為大於零的任意整數,並且,所述當前條件狀態由N位值表示;並且 所述指令解碼器控制所述處理電路,以在所述當前條件狀態未通過所述測試條件時,將所述N位未通過條件狀態值寫入所述狀態存儲器中。
9.如前述權利要求中的任一項所述的數據處理裝置,其中所述當前條件狀態能夠被設定為多個條件狀態中的任意一個,所述多個條件狀態包括預定條件狀態;並且 如果指定所述預定條件狀態為所述未通過條件狀態的條件式比較指令未通過所述測試條件,則所述當前條件狀態僅可被設定至所述預定條件狀態。
10.如前述權利要求中的任一項所述的數據處理裝置,其中所述條件式比較指令包括用於指定所述第一操作數和所述第二操作數的第一操作數欄位和第二操作數欄位。
11.如權利要求10所述的數據處理裝置,其中所述第一操作數欄位和第二操作數欄位的至少一個指定存儲所述第一操作數或所述第二操作數的存儲位置。
12.如權利要求11所述的數據處理裝置,其中所述指令解碼器響應指定位值預定組合的所述第一操作數欄位和第二操作數欄位的所述至少一個,來控制所述處理電路以執行所述條件式比較運算,並且,所述第一操作數和第二操作數的對應的一個具有零值。
13.如權利要求10至12中的任一項所述的數據處理裝置,其中所述第一操作數欄位和第二操作數欄位中的一個將立即值指定為所述第一操作數或所述第二操作數。
14.如前述權利要求中的任一項所述的數據處理裝置,其中所述比較運算包括以下步驟的任意一個 (a)將所述第一操作數減去所述第二操作數; (b)將所述第一操作數加上所述第二操作數; (C)對所述第一操作數與所述第二操作數執行按位異或運算; (d)對所述第一操作數和所述第二操作數執行按位與運算; (e)將所述第一操作數、所述第二操作數、一級所述狀態存儲器的進位位相加;以及 (f)對所述第一操作數和所述第二操作數執行按位或運算。
15.一種數據處理裝置,包括 處理部件,用於處理數據; 指令解碼器部件,用於響應於程序指令以生成控制信號,所述控制信號用於控制所述處理部件以處理所述數據; 狀態存儲器部件,用於存儲所述處理部件的當前條件狀態,所述當前條件狀態在處理所述數據期間為可修改的; 其中所述等程序指令包括條件式比較指令,並且,所述指令解碼器部件響應於所述條件式比較指令以生成用於控制所述處理部件以執行條件式比較運算的控制信號,所述條件式比較運算包括 (i)如果所述當前條件狀態通過測試條件,則對第一操作數和第二操作數執行比較運算,並且,設定所述當前條件狀態為在所述比較運算期間生成的結果條件狀態;以及 ( )如果所述當前條件狀態未通過所述測試條件,則設定所述當前條件狀態為由所述條件式比較指令指定的未通過條件狀態。
16.一種數據處理方法,包括以下步驟 響應於包括條件式比較指令的程序指令,生成用於控制處理電路以處理數據的控制信號; 存儲所述處理電路的當前條件狀態,所述當前條件狀態在處理所述數據期間為可修改的; 響應於所述條件式比較指令,生成用於控制所述處理電路以執行條件式比較運算的控制信號,所述條件式比較運算包括 (i)如果所述當前條件狀態通過測試條件,則對第一操作數和第二操作數執行比較運算,並且,設定所述當前條件狀態為在所述比較運算期間生成的結果條件狀態;以及 ( )如果所述當前條件狀態未通過所述測試條件,則設定所述當前條件狀態為由所述條件式比較指令指定的未通過條件狀態。
17.—種編譯由數據處理裝置執行的程序指令序列的方法,所述程序指令序列包括無條件式比較指令和至少一個條件式比較指令,所述無條件式比較指令用於控制所述數據處理裝置以對兩個操作數執行無條件式比較運算,並且,設定所述數據處理裝置的當前條件狀態為在所述無條件式比較運算期間生成的一結果條件狀態,所述至少一個條件式比較指令用於控制所述數據處理裝置以執行條件式比較運算,所述條件式比較運算包括(i)如果所述數據處理裝置的所述當前條件狀態通過測試條件,則對第一操作數和第二操作數執行比較運算,並且,設定所述當前條件狀態為在所述比較運算期間生成的結果條件狀態;以及(ii)如果所述當前條件狀態未通過所述測試條件,則設定所述當前條件狀態為由所述條件式比較指令指定的未通過條件狀態;所述方法包括以下步驟 (a)接收數據的輸入,所述數據定義使用一個或多個與運算或或運算邏輯結合的N個比較運算的序列鏈,其中N為大於I的整數,所述N個比較運算的每一個測試各自的操作數是否滿足各自的預定準則; (b)生成對應於所述序列鏈的第一個比較運算的所述無條件式比較指令; (c)對於在2與N之間的每個整數值i,執行下列步驟 (i)確定所述序列鏈的第i個比較運算是使用與運算或或運算來與部分序列鏈的結果邏輯結合,所述部分序列鏈包括所述序列鏈的第一個至第i_l個比較運算; ( )如果所述第i個比較運算使用與運算與所述部分序列鏈的所述結果邏輯結合,則生成對應所述第i個比較運算的條件式比較指令,所述條件式比較指令將在所述第i_l個比較運算的所述預定準則被滿足時通過的條件指定為所述測試條件,並且,將對應所述第i個比較運算的所述預定準則未被滿足的條件狀態指定為所述未通過條件狀態; (iii)如果所述第i個比較運算使用或運算與所述部分序列鏈的所述結果邏輯結合,則生成對應所述第i個比較運算的條件式比較指令,所述條件式比較指令將在所述第i_l個比較運算的所述預定準則未被滿足時通過的條件指定為所述測試條件,並且,將對應所述第i個比較運算的所述預定準則被滿足的條件狀態指定為所述未通過條件狀態; (d)將至少在步驟(b)中生成的所述無條件式比較指令與在步驟(c)中生成的N-I個所述條件式比較指令輸出為所述程序指令序列。
18.—種由在數據處理裝置上執行的電腦程式提供的虛擬機,所述虛擬機根據如申權利要求I至14中的任一項所述的數據處理裝置提供指令執行環境。
19.一種存儲電腦程式的非瞬態計算機存儲媒體,所述電腦程式在由計算機執行時控制所述計算機以執行如權利要求17所述的方法。
20.一種存儲電腦程式的非瞬態計算機存儲媒體,所述電腦程式包括用於控制處理電路以執行條件式比較運算的條件式比較指令,所述條件式比較運算包括 (i)如果所述處理電路的當前條件狀態通過測試條件,則對第一操作數和第二操作數執行比較運算,並且,設定所述當前條件狀態為在所述比較運算期間生成的結果條件狀態;以及 ( )如果所述當前條件狀態未通過所述測試條件,則將所述當前條件狀態設定為由所述條件式比較指令指定的未通過條件狀態。
全文摘要
指令解碼器(14)響應於條件式比較指令以生成用以控制處理電路(4)的控制信號以執行條件式比較運算。條件式比較運算包括(i)如果處理電路(4)的當前條件狀態通過測試條件,則對第一操作數和第二操作數執行比較運算,並且,設定當前條件狀態為在比較運算期間生成的結果條件狀態;以及(ii)如果當前條件狀態未通過測試條件,則設定當前條件狀態為由條件式比較指令指定的未通過條件狀態。條件式比較指令可用以表示比較運算的序列鏈,其中每個單個比較運算可測試一對操作數之間的不同種類的關係。
文檔編號G06F9/32GK102893254SQ201180023699
公開日2013年1月23日 申請日期2011年4月12日 優先權日2010年5月11日
發明者戴維·詹姆斯·西爾, 西蒙·約翰·克拉斯克 申請人:Arm 有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀