專利名稱:條件式比較指令的制作方法
技術(shù)領(lǐng)域:
本發(fā)明相關(guān)于數(shù)據(jù)處理領(lǐng)域。更特定而言,本發(fā)明相關(guān)于條件式比較指令。
背景技術(shù):
已知可提供具有用以代表處理裝置的當(dāng)前條件狀態(tài)的各種條件標(biāo)志(flag)的處理裝置。此種數(shù)據(jù)處理裝置的示例為由設(shè)立在英國劍橋的ARM Limited所設(shè)計(jì)的執(zhí)行ARM指令集的處理器。指令可經(jīng)安排以條件式地執(zhí)行,以使條件標(biāo)志的當(dāng)前狀態(tài)在條件式指令執(zhí)行時(shí),控制是否要執(zhí)行條件式運(yùn)算。例如,對于一種條件式指令類型,在執(zhí)行時(shí)測試當(dāng)前條件狀態(tài),并且,如果當(dāng)前條件狀態(tài)通過測試,則根據(jù)對兩操作數(shù)所執(zhí)行的運(yùn)算結(jié)果更新條件標(biāo)志。如果當(dāng)前條件狀態(tài)未通過測試,則指令作為不具功能的NOP指令,因此不改變條件
O此種指令可用以實(shí)施一些測試與對測試結(jié)果的邏輯運(yùn)算的組合。例如,可使用指令序列來估算(evaluate)邏輯表達(dá)式(A = = B&&C = = D) | | E = = F,此邏輯表達(dá)式包括初始測試A== B及隨后更進(jìn)一步的測試鏈,并使用AND(&&)或0R(| I)運(yùn)算將其每一個的結(jié)果與自先前運(yùn)算生成的條件標(biāo)志結(jié)合,指令序列包括無條件式比較指令與一或多個條件式比較指令,每一個條件式比較指令被安排以僅在先前指令的結(jié)果滿足特定條件時(shí)更新條件標(biāo)志。例如,表達(dá)式(A = = B&&C = =D) IlE==F可由以下指令序列估算出CMP A, BCMPEQ C,DCMPNE E, F無條件式比較指令CMP A,B比較A和B的值,并且,根據(jù)比較結(jié)果設(shè)定條件標(biāo)志。如果A和B相等,則條件標(biāo)志被置于EQ狀態(tài),同時(shí)如果A和B不相等,則條件標(biāo)志被置于NE狀態(tài)。在執(zhí)行條件式比較指令CMPEQ C,D時(shí),如果條件標(biāo)志為在EQ狀態(tài)中(亦即,測試A = = B滿足),則執(zhí)行C和D的間的比較,并且,根據(jù)比較結(jié)果更新條件標(biāo)志。另外,在條件標(biāo)志為在NE狀態(tài)中時(shí)(亦即,測試A==B未滿足),則CMPEQ指令作為NOP并且,不改變條件標(biāo)志。此意味著在執(zhí)彳了首兩個指令的后,條件標(biāo)志將僅在A = B和C = D時(shí)指不EQ狀態(tài),并將在其他情況指示NE狀態(tài)。此為使用AND運(yùn)算結(jié)合A==B和C==D測試的正確結(jié)果。接著,執(zhí)行條件式比較指令CMPNE E,F(xiàn),并且,如果條件標(biāo)志為在EQ狀態(tài)中(亦即,測試A== B&&C == D滿足),則CMPNE指令將被當(dāng)作Ν0Ρ,并且,因此條件代碼將保持在EQ狀態(tài)中。另外,如果條件標(biāo)志為在NE狀態(tài)中(亦即,測試A == B&&C == D未滿足),則執(zhí)行E和F的比較,并且,根據(jù)比較結(jié)果更新條件標(biāo)志。因此,如果(A = B AND C = D)或E = F,最終結(jié)果將為EQ,并且,當(dāng)這些測試都未滿足時(shí)最終結(jié)果將為NE。此為使用OR運(yùn)算結(jié)合(A = = B&&C = = D)和E = = F測試的正確結(jié)果。
因此,條件式比較指令CMPEQ和CMPNE可用以估算為(A = = B&&C = = D) | | E ==F的形式的測試鏈。然而,僅可當(dāng)鏈內(nèi)所有的個別測試估算相同種類關(guān)時(shí),或在估算可被轉(zhuǎn)換成相同種類關(guān)的不同種類關(guān)時(shí)使用這些種類的指令。例如,在先前示例中,所有個別測試估算”相等”關(guān)系。或者,條件式指令可用以代表為(A>B&&C<D)的形式的邏輯條件,因?yàn)殛P(guān)系C <D可被轉(zhuǎn)換成D > C,其與A>B為相同種類關(guān)系。然而,不可能測試諸如(例如)(A > B I C== D)&&E < = F或A = = B&&C ! = D的邏輯表達(dá)式,因?yàn)楸粶y試的關(guān)系不同,并且,無法彼此轉(zhuǎn)換。因此,這些條件式指令僅可用于測試特定種類的邏輯表達(dá)式。此意味著使用此等指令所能編譯的原始碼數(shù)量被限制,并且,對編譯程序而言,確定條件式指令是否可用于特定應(yīng)用是復(fù)雜的。
發(fā)明內(nèi)容
本發(fā)明的第一方面提供一種數(shù)據(jù)處理裝置,包括處理電路,其用于處理數(shù)據(jù);指令譯碼器,其響應(yīng)于程序指令以生成用于控制所述處理電路以處理所述數(shù)據(jù)的控制信號;狀態(tài)存儲器,其用于存儲所述處理電路的當(dāng)前條件狀態(tài),所述當(dāng)前條件狀態(tài)在處理所述數(shù)據(jù)期間為可修改的;其中所述等程序指令包括條件式比較指令,并且,所述指令譯碼器響應(yīng)于所述條件式比較指令以生成用于控制所述處理電路以執(zhí)行條件式比較運(yùn)算的控制信號,所述條件式比較運(yùn)算包括(i)如果所述當(dāng)前條件狀態(tài)通過測試條件,則對第一操作數(shù)和第二操作數(shù)執(zhí)行比較運(yùn)算,并設(shè)定所述當(dāng)前條件狀態(tài)為在所述比較運(yùn)算期間生成的結(jié)果條件狀態(tài);以及(ii)如果所述當(dāng)前條件狀態(tài)未通過所述測試條件,則設(shè)定所述當(dāng)前條件狀態(tài)為由所述條件式比較指令指定的未通過條件狀態(tài)。·本技術(shù)提供條件式比較指令,其控制處理電路以確定處理電路的當(dāng)前條件狀態(tài)是否通過測試條件。獨(dú)立于當(dāng)前條件狀態(tài)通過或未通過測試條件,當(dāng)前條件狀態(tài)被更新。新的當(dāng)前條件狀態(tài)值由不同方式確定,取決于當(dāng)前條件狀態(tài)通過或未通過測試條件。如果當(dāng)前條件狀態(tài)通過測試條件,則對第一操作數(shù)和第二操作數(shù)執(zhí)行比較運(yùn)算,并且,當(dāng)前條件狀態(tài)被設(shè)定為在比較運(yùn)算期間生成的結(jié)果條件狀態(tài)。另一方面,如果當(dāng)前條件狀態(tài)未通過測試條件,則當(dāng)前條件狀態(tài)被設(shè)定為由所述條件式比較指令指定的未通過條件狀態(tài)。能夠指定特定未通過條件狀態(tài)值(其在當(dāng)前條件狀態(tài)未通過測試條件時(shí)取代當(dāng)前條件狀態(tài))的能力,使條件式比較指令能夠用以測試不同類型的比較序列鏈。這是因?yàn)?,對于對?yīng)于鏈中的一個比較的條件式比較指令,未通過條件狀態(tài)可用以建立所需測試鏈中的下一個比較的特定條件狀態(tài)。因此可使用條件式比較指令,即使序列鏈中的關(guān)系無法被轉(zhuǎn)換成相同種類關(guān)系。例如,可測試為((S == T&&U >= O) I |A ! = B)&&C > D的形式的序列,即使被測試的個別關(guān)系= =、> =、!=、>不同,并且,無法彼此轉(zhuǎn)換。此意味著可更廣泛的使用條件式比較指令,相較于先前已知的條件式比較指令,并且,因此可更容易的由編譯程序使用。
狀態(tài)存儲器可為任意種類的用于存儲當(dāng)前條件狀態(tài)的存儲位置。在示例性具體實(shí)施例中,狀態(tài)存儲器可包括狀態(tài)寄存器。裝置的當(dāng)前條件狀態(tài)可包括存儲在狀態(tài)存儲器中的至少一個條件代碼標(biāo)志的值。例如,可提供條件代碼標(biāo)志以指示先前比較生成了負(fù)值、零值、進(jìn)位、或是溢位。較后的比較隨后可依據(jù)條件標(biāo)志值被制成為條件式,以使較后比較的結(jié)果亦取決于較早的比較。此使較早的比較和較后的比較能夠被鏈結(jié)在一起以形成結(jié)合的邏輯條件。條件式比較指令可包括用于指定測試條件的字段??捎砂l件式比較指令的程序的程序設(shè)計(jì)師直接指定測試條件,或在條件式比較指令為代表所需邏輯表達(dá)式的程序指令序列的一部分時(shí),可由編譯程序自動地生成測試條件??捎蓷l件比較指令指定未通過條件狀態(tài)為立即值(immediate value)。因此,立即值指示在條件式比較指令執(zhí)行的時(shí)的當(dāng)前條件狀態(tài)未通過測試條件時(shí),當(dāng)前條件狀態(tài)將被設(shè)定至的值。
代表未通過條件狀態(tài)的立即值,可為由包括條件式比較指令的程序的程序設(shè)計(jì)師設(shè)定的可編程值。此使程序設(shè)計(jì)師能夠直接控制未通過條件狀態(tài)。另外,代表未通過條件狀態(tài)的立即值,也可為由包括條件式比較指令的程序的編譯程序設(shè)定的可編程值,編譯程序根據(jù)所需條件選定可編程值,條件式比較指令的未通過條件狀態(tài)隨后必須通過此所需條件。在此情況中,編譯程序可確定所需條件為何,并且,如果測試條件未通過,則將所需條件轉(zhuǎn)換成將寫入當(dāng)前條件狀態(tài)的可編程值。例如,如果所需條件為EQ條件,則編譯程序可選定可編程值,其在發(fā)生測試條件未通過時(shí)被寫入條件標(biāo)志,并導(dǎo)致EQ條件被滿足。在多個可能的可編程值的每一個皆滿足所需條件的情況下,可安排編譯程序來應(yīng)用對于選定要使用哪一個可編程值的選擇準(zhǔn)則,以確保編譯程序每次都以同樣的方式編譯特定原始碼。例如,編譯程序可選定最大或最小的滿足所需條件的可能值,或應(yīng)用任意其他的對于選定用作未通過條件狀態(tài)值的一個值的規(guī)則。未通過條件狀態(tài)值可被指定為N位未通過條件狀態(tài)值,其中N為大于零的任意整數(shù),并且,當(dāng)前條件狀態(tài)可由N位值代表。指令譯碼器可控制處理電路,以在當(dāng)前條件狀態(tài)未通過測試條件時(shí),將N位未通過條件狀態(tài)值寫入狀態(tài)存儲器中??捎上嗤绞骄幋a未通過條件狀態(tài)和當(dāng)前條件狀態(tài),以使未通過條件狀態(tài)值的特定位在當(dāng)前條件狀態(tài)未通過測試條件時(shí),可簡單地被寫入至狀態(tài)存儲器中以更新當(dāng)前條件狀態(tài)。在示例性具體實(shí)施例中,當(dāng)前條件狀態(tài)可能夠被設(shè)定至多個條件狀態(tài)中的任意者,包括預(yù)定條件狀態(tài),并且,如果指定預(yù)定條件狀態(tài)值為未通過條件狀態(tài)的條件式比較指令未通過測試條件,則當(dāng)前條件狀態(tài)僅可被設(shè)定至預(yù)定條件狀態(tài)。在條件式比較指令未通過其測試條件時(shí),當(dāng)前條件狀態(tài)被設(shè)定至在指令中指定的未通過條件狀態(tài)。在條件式比較指令通過其測試條件時(shí),執(zhí)行比較運(yùn)算,并且,根據(jù)比較運(yùn)算結(jié)果更新當(dāng)前條件狀態(tài)。因?yàn)橛杀容^運(yùn)算生成的被更新的條件狀態(tài)可與未通過條件狀態(tài)相同,所以不可能精確地確定測試條件為通過或未通過。 因此,在示例性具體實(shí)施例中,可提供無法出現(xiàn)于正常處理運(yùn)算中的預(yù)定條件狀態(tài)。預(yù)定條件狀態(tài)為條件式比較指令所專有,以使處理電路僅可在指定預(yù)定條件狀態(tài)為其未通過條件狀態(tài)的條件式比較指令未通過其測試條件時(shí),被置于預(yù)定條件狀態(tài)中。因此,有可能根據(jù)測試隨著條件式比較指令的執(zhí)行是否出現(xiàn)了預(yù)定條件狀態(tài),以確定指定預(yù)定條件狀態(tài)為其未通過條件的條件式比較指令是否通過或未通過其測試條件。此可為有幫助的,例如,對于測試特定數(shù)據(jù)值是否在給定數(shù)據(jù)值范圍的中。條件式比較指令可包括用于指定第一操作數(shù)和第二操作數(shù)的第一和第二操作數(shù)字段。第一和第二操作數(shù)字段的至少一個可指定存儲第一操作數(shù)或第二操作數(shù)的存儲位置。根據(jù)指定用于存儲操作數(shù)的存儲位置(例如,寄存器)的數(shù)量,操作數(shù)字段可用以識別在指令編碼中的具有大于可用于操作數(shù)字段的位數(shù)的位數(shù)的操作數(shù)。再者,參照在操作數(shù)字段中的存儲位置,允許在欲指定的相同指令的多次執(zhí)行的間有差異的可變操作數(shù)。指令譯碼器可經(jīng)組態(tài)以響應(yīng)指定位值預(yù)定組合的操作數(shù)字段的一個,來控制處理電路以執(zhí)行條件式比較運(yùn)算,并且,第一和第二操作數(shù)的對應(yīng)的一個具有零值。例如,全I(xiàn)位值(例如,Oblllll)可作為用于指示零操作數(shù)的位值預(yù)定組合。因此,位值預(yù)定組合不被 指令譯碼器解譯(interprete)為存儲位置指定符(specif ier),而是用以識別零值。此為有幫助的,因?yàn)槭褂昧阒档谋容^是常見的,并且,因此能夠直接以指令語法編碼此種比較,意味著通常可避免需要存取存儲位置以獲得零操作數(shù)。第一和第二操作數(shù)字段的一個可指定立即值為第一操作數(shù)或第二操作數(shù)。這種指令形式對于在可變值和固定值的間的比較可為有幫助的。在此情況中,操作數(shù)字段的一個可用以指定存儲可變操作數(shù)的存儲位置,并且,其他操作數(shù)字段可用以指定代表固定值的立即值。如果條件式比較指令的測試條件被滿足,則由處理電路執(zhí)行的比較運(yùn)算可為各種形式。例如,比較運(yùn)算可包括以下步驟的任意一個(a)將所述第一操作數(shù)減去所述第二操作數(shù);(b)將所述第一操作數(shù)加上所述第二操作數(shù);(C)對所述第一操作數(shù)和所述第二操作數(shù)執(zhí)行按位異或運(yùn)算;(d)對所述第一操作數(shù)與所述第二操作數(shù)執(zhí)行按位與運(yùn)算;(e)將所述第一操作數(shù)、所述第二操作數(shù)、與所述狀態(tài)存儲器的進(jìn)位位相加;(f)對所述第一操作數(shù)與所述第二操作數(shù)執(zhí)行按位或運(yùn)算。比較運(yùn)算亦可包括對第一和第二操作數(shù)執(zhí)行的另一算數(shù)或邏輯運(yùn)算。本發(fā)明的另一方面提供一種數(shù)據(jù)處理裝置,包括處理部件,用于處理數(shù)據(jù);指令譯碼器部件,用于響應(yīng)于程序指令以生成控制信號,所述等控制信號用于控制所述處理部件以處理所述數(shù)據(jù);狀態(tài)存儲器部件,用于存儲所述處理部件的當(dāng)前條件狀態(tài),所述當(dāng)前條件狀態(tài)在處理所述數(shù)據(jù)期間為可修改的;其中所述等程序指令包括條件式比較指令,并且,所述指令譯碼器部件響應(yīng)于所述條件式比較指令以生成用于控制所述處理部件以執(zhí)行條件式比較運(yùn)算的控制信號,所述條件式比較運(yùn)算包括(i)如果所述當(dāng)前條件狀態(tài)通過測試條件,則對第一操作數(shù)和第二操作數(shù)執(zhí)行比較運(yùn)算,并設(shè)定所述當(dāng)前條件狀態(tài)為在所述比較運(yùn)算期間生成的結(jié)果條件狀態(tài);以及(ii)如果所述當(dāng)前條件狀態(tài)未通過所述測試條件,則設(shè)定所述當(dāng)前條件狀態(tài)為由所述條件式比較指令指定的未通過條件狀態(tài)。
本發(fā)明的另一方面提供一種數(shù)據(jù)處理方法,包括以下步驟 響應(yīng)于包括條件式比較指令的程序指令,生成用于控制處理電路以處理數(shù)據(jù)的控制信號;存儲所述處理電路的當(dāng)前條件狀態(tài),所述當(dāng)前條件狀態(tài)在處理所述數(shù)據(jù)期間為可修改的;響應(yīng)于所述條件式比較指令,生成用于控制所述處理電路以執(zhí)行條件式比較運(yùn)算的控制信號,所述條件式比較運(yùn)算包括(i)如果所述當(dāng)前條件狀態(tài)通過測試條件,則對第一操作數(shù)和第二操作數(shù)執(zhí)行比較運(yùn)算,并設(shè)定所述當(dāng)前條件狀態(tài)為在所述比較運(yùn)算期間生成的結(jié)果條件狀態(tài);以及 (ii)如果所述當(dāng)前條件狀態(tài)未通過所述測試條件,則設(shè)定所述當(dāng)前條件狀態(tài)為由所述條件式比較指令指定的未通過條件狀態(tài)。本發(fā)明的另一方面提供一種編譯由數(shù)據(jù)處理裝置執(zhí)行的程序指令序列的方法,程序指令序列包括無條件式比較指令和至少一個條件式比較指令,無條件式比較指令用于控制所述數(shù)據(jù)處理裝置以對兩操作數(shù)執(zhí)行無條件式比較運(yùn)算,并設(shè)定所述數(shù)據(jù)處理裝置的當(dāng)前條件狀態(tài)為在所述無條件式比較運(yùn)算期間生成的結(jié)果條件狀態(tài),至少一個條件式比較指令用于控制所述數(shù)據(jù)處理裝置以執(zhí)行條件式比較運(yùn)算,條件式比較運(yùn)算包括以下步驟(i)如果所述數(shù)據(jù)處理裝置的所述當(dāng)前條件狀態(tài)通過測試條件,則對第一操作數(shù)和第二操作數(shù)執(zhí)行比較運(yùn)算,并設(shè)定所述當(dāng)前條件狀態(tài)為在所述比較運(yùn)算期間生成的結(jié)果條件狀態(tài);以及(ii)如果所述當(dāng)前條件狀態(tài)未通過所述測試條件,則設(shè)定所述當(dāng)前條件狀態(tài)為由所述條件式比較指令指定的未通過條件狀態(tài);所述方法包括以下步驟(a)接收定義使用一個或多個與運(yùn)算或或運(yùn)算邏輯結(jié)合(logically combined)的N個比較運(yùn)算的序列鏈的數(shù)據(jù)的輸入,其中N為大于I的整數(shù),所述等N個比較運(yùn)算的每一個測試各自的操作數(shù)是否滿足各自的預(yù)定準(zhǔn)則;(b)生成對應(yīng)所述序列鏈的第一個比較運(yùn)算的所述無條件式比較指令;(c)對于在2和N的間的每個整數(shù)值i,執(zhí)行下列步驟(i)確定所述序列鏈的第i個比較運(yùn)算是否使用AND運(yùn)算或OR運(yùn)算與部分序列鏈的結(jié)果邏輯結(jié)合,所述部分序列鏈包括所述序列鏈的第一個至第i_l個比較運(yùn)算;(ii)如果所述第i個比較運(yùn)算使用與運(yùn)算與所述部分序列鏈的所述結(jié)果邏輯結(jié)合,則生成對應(yīng)所述第i個比較運(yùn)算的條件式比較指令,所述條件式比較指令將在所述第i-Ι個比較運(yùn)算的所述預(yù)定準(zhǔn)則被滿足時(shí)通過的條件指定為所述測試條件,并將對應(yīng)所述第i個比較運(yùn)算的所述預(yù)定準(zhǔn)則未被滿足的條件狀態(tài)指定為所述未通過條件狀態(tài);(iii)如果所述第i個比較運(yùn)算使用OR運(yùn)算與所述部分序列鏈的所述結(jié)果邏輯結(jié)合,則生成對應(yīng)所述第i個比較運(yùn)算的條件式比較指令,所述條件式比較指令將在所述第i_l個比較運(yùn)算的所述預(yù)定準(zhǔn)則未被滿足時(shí)通過的條件指定為所述測試條件,并將對應(yīng)所述第i個比較運(yùn)算的所述預(yù)定準(zhǔn)則被滿足的條件狀態(tài)指定為所述未通過條件狀態(tài);(d)將至少在步驟(b)中生成的所述無條件式比較指令與在步驟(C)中生成的N-I個所述條件式比較指令輸出為所述程序指令序列。本技術(shù)的條件式比較指令可用以代表使用一個或多個與運(yùn)算或或運(yùn)算邏輯結(jié)合的N個比較運(yùn)算的序列鏈。N個比較運(yùn)算的每一個測試各自的操作數(shù)是否滿足預(yù)定準(zhǔn)則。本技術(shù)的條件式比較指令使比較運(yùn)算的每一個能夠測試不同的準(zhǔn)則。例如,比較運(yùn)算的一個可測試一個操作數(shù)是否大于另一個操作數(shù),而下一個比較運(yùn)算可測試一個操作數(shù)是否等于另一個操作數(shù),并且,另一個比較運(yùn)算可測試一個操作數(shù)是否不等于另一個操作數(shù)。注意到術(shù)語“準(zhǔn)則”用于表示由特定比較(例如,A>B或C==D)測試的關(guān)系,盡管名詞“條件”表示控制條件式比較指令的比較運(yùn)算是否被執(zhí)行的測試(例如,用以看看當(dāng)前條件狀態(tài)是否為HI狀態(tài)的測試、用以看看Z標(biāo)志是否被設(shè)定以表示先前結(jié)果為零的測試、或?yàn)橛靡钥纯碞標(biāo)志是否被設(shè)定以表示先前結(jié)果為負(fù)的測試)??捎缮蓪τ诿總€比較運(yùn)算的比較指令,一步步建構(gòu)代表N個比較運(yùn)算的序列鏈的程序指令的序列(N為大于一的整數(shù))。每個比較運(yùn)算指定預(yù)定準(zhǔn)則(例如,A < B),并且,根據(jù)AND或OR運(yùn)算被鏈結(jié)至先前比較運(yùn)算的部分序列鏈的結(jié)果。對于序列鏈中的第一個比較運(yùn)算,生成無條件式比較指令。對于第i個比較運(yùn)算(i為2至N的間的任意整數(shù)),生成條件式比較指令,并且,第i個條件式比較指令的測試條件與未通過條件狀態(tài)取決于第i個比較運(yùn)算是否以AND運(yùn)算或OR運(yùn)算與部分序列鏈的結(jié)果邏輯結(jié)合,部分序列鏈包括第一個至第i_l個比較運(yùn)算。
·
如果第i個比較運(yùn)算由AND運(yùn)算與先前比較運(yùn)算的部分序列鏈的結(jié)果邏輯結(jié)合,則第i個條件式比較指令指定在第i_l個比較的預(yù)定準(zhǔn)則被滿足時(shí)通過的條件為測試條件,并且,指定對應(yīng)至未被滿足的第i個比較運(yùn)算的預(yù)定準(zhǔn)則的條件狀態(tài)為未通過條件狀態(tài)。此確保如果第i-Ι個預(yù)定準(zhǔn)則生成“未通過”結(jié)果,則第i個條件式比較指令將不會通過其測試條件,并且,因此回到其自身的未通過條件狀態(tài),同時(shí)如果第i_l個預(yù)定準(zhǔn)則比較運(yùn)算生成“通過”結(jié)果,則第i個比較運(yùn)算將通過其測試條件,并且,將生成取決于第i個預(yù)定準(zhǔn)則是否被滿足的結(jié)果條件狀態(tài)。因此,第i個與第i_l個比較的結(jié)合僅將在第i_l個與第i個預(yù)定準(zhǔn)則皆被滿足時(shí)生成通過結(jié)果,其為AND運(yùn)算所需的行為。另一方面,如果第i個比較運(yùn)算使用OR運(yùn)算與先前比較運(yùn)算的部分序列鏈的結(jié)果邏輯結(jié)合,則生成對應(yīng)第i個比較運(yùn)算的條件式比較指令,條件式比較指令指定在第i_l個比較運(yùn)算的預(yù)定準(zhǔn)則未被滿足時(shí)通過的條件為測試條件,并且,指定對應(yīng)至第i個比較運(yùn)算的預(yù)定條件被滿足的條件狀態(tài)為未通過條件狀態(tài)。此確保如果第i-Ι個預(yù)定準(zhǔn)則被滿足,則第i個條件式比較指令不通過其測試條件,并且,因此生成對應(yīng)至第i個預(yù)定條件被滿足的“通過”條件狀態(tài)為其未通過條件狀態(tài)。另一方而,如果第i_l個比較未滿足其預(yù)定準(zhǔn)則,則第i個條件式比較指令通過其測試條件,并且,因此將生成取決于第i個預(yù)定準(zhǔn)則是否被滿足的結(jié)果條件狀態(tài)。此意味著總體結(jié)果將為相關(guān)于第i個預(yù)定準(zhǔn)則的“通過”條件,只要第i_l個與第i個預(yù)定準(zhǔn)則的任意者被滿足。此為OR運(yùn)算所需的行為。因此,根據(jù)生成為此形式的條件式比較指令串,可將比較序列鏈轉(zhuǎn)換成程序指令序列。所生成的指令序列隨后被輸出。將理解,,生成無條件式比較指令與條件式比較指令的時(shí)間順序并不重要。例如,可由對應(yīng)至比較運(yùn)算序列鏈的時(shí)間順序生成指令(亦即,使計(jì)數(shù)器i從2遞增至N)?;蛘撸捎尚蛄墟湹姆聪驎r(shí)間順序生成指令(使計(jì)數(shù)器從N遞減至2),或可由任意其他時(shí)間順序。無論由何時(shí)間順序生成指令,所生成的指令的程序順序?yàn)橄嗤?,其中第一個指令為對應(yīng)至鏈中第一個比較運(yùn)算的無條件式比較指令,第二個指令為對應(yīng)至鏈中第二個比較運(yùn)算的條件式比較指令,以此類推。
可提供用于存儲計(jì)算機(jī)程序的計(jì)算機(jī)存儲媒體,計(jì)算機(jī)程序在由計(jì)算機(jī)執(zhí)行時(shí)控制計(jì)算機(jī)以執(zhí)行用于編譯如上所述的程序指令序列的方法。本發(fā)明的另一方面提供存儲計(jì)算機(jī)程序的非瞬態(tài)計(jì)算機(jī)存儲媒體,計(jì)算機(jī)程序包括用于控制處理電路以執(zhí)行條件式比較運(yùn)算的條件式比較指令,條件式比較運(yùn)算包括(i)如果所述處理電路的當(dāng)前條件狀態(tài)通過測試條件,則對第一操作數(shù)和第二操作數(shù)執(zhí)行比較運(yùn)算,并設(shè)定所述當(dāng)前條件狀態(tài)為在所述比較運(yùn)算期間生成的結(jié)果條件狀態(tài);以及(ii)如果所述當(dāng)前條件狀態(tài)未通過所述測試條件,則設(shè)定所述當(dāng)前條件狀態(tài)至由所述條件式比較指令指定的未通過條件狀態(tài)。本發(fā)明的上述和其他的目的、特征和優(yōu)點(diǎn)將顯然于下文的說明性具體實(shí)施例的實(shí)施方式,其需連同附加圖式閱讀。
圖I示意性地示出了數(shù)據(jù)處理裝置;圖2示意性地示出了條件代碼標(biāo)志的示例;圖3A和圖3B分別示出了條件式比較指令的示例語法和示例編碼,條件式比較指令包括用于指定測試條件、兩個寄存器操作數(shù)和立即未通過條件狀態(tài)值的字段;圖4A和圖4B分別示出了條件式比較指令的替代示例語法和示例編碼,其中操作數(shù)中的一個被指定為立即值;圖5示出了用于處理?xiàng)l件式比較指令的方法; 圖6A至圖6F示出了條件式比較指令的不同類型,其每一個對應(yīng)至不同的比較運(yùn)算;圖7A和圖7B示出了用于生成代表比較運(yùn)算序列鏈的程序指令序列的示例方法;圖8示出了各種條件狀態(tài)與代表每個條件狀態(tài)的條件標(biāo)志的組合;圖9示意性地示出了虛擬機(jī)實(shí)施;圖10示出了包括預(yù)定條件狀態(tài)的條件狀態(tài)示例,預(yù)定條件狀態(tài)為條件式比較指令所專用;以及圖11示出了使用指定預(yù)定條件狀態(tài)為其未通過條件狀態(tài)的條件式比較狀態(tài),限制變量X至給定范圍的數(shù)據(jù)值中的示例。
具體實(shí)施例方式圖I示出了數(shù)據(jù)處理裝置2。數(shù)據(jù)處理裝置2包括用于處理數(shù)據(jù)的處理電路4。處理電路可包括各種部件,例如寄存器庫6、加法器8、移位器10和乘法器12。加法器8、移位器10和乘法器12 —同處理存儲在寄存器庫6中的數(shù)據(jù),并且,將處理結(jié)果寫回寄存器庫
6。將理解,處理電路4并不限于此配置,并且,通常將包括許多其他部件,其為了簡明目的不在此示出。數(shù)據(jù)處理裝置2包括譯碼器14,其響應(yīng)于程序指令以生成用于控制處理電路4以處理數(shù)據(jù)的控制信號。數(shù)據(jù)處理裝置2包括用于存儲狀態(tài)數(shù)據(jù)的狀態(tài)存儲器15,狀態(tài)數(shù)據(jù)報(bào)含處理電路4的至少一個當(dāng)前條件狀態(tài)。在圖I的示例中,狀態(tài)存儲器15為狀態(tài)寄存器,但存儲位置亦可包括其他形式的存儲位置。雖然在圖I中示出了狀態(tài)寄存器15為在處理電路4中,在其他具體實(shí)施例中,狀態(tài)寄存器15可被定位于裝置2的另一部分中。在具體實(shí)施例中,由存儲在狀態(tài)寄存器15中的一組條件代碼標(biāo)志表示當(dāng)前條件狀態(tài)。條件代碼標(biāo)志表示由處理電路4生成的先前處理結(jié)果的條件。在圖2示出了的示例具體實(shí)施例中,狀態(tài)寄存器15的條件代碼標(biāo)志包括用于表示先前處理結(jié)果是否為負(fù)數(shù)的負(fù)標(biāo)志N、用于表示先前處理結(jié)果是否為零的零標(biāo)志Z、用于表示在生成先前處理結(jié)果時(shí)是否發(fā)生了進(jìn)位的進(jìn)位標(biāo)志C、以及用于表示在生成先前處理結(jié)果時(shí)是否發(fā)生了溢位的溢位標(biāo)志V。因此,條件代碼標(biāo)志的值提供了關(guān)于先前處理結(jié)果的信息。標(biāo)志可被設(shè)定以表示發(fā)生了負(fù)數(shù)、零值、進(jìn)位或溢位,并且,可被清除以表示相反的狀況,或反的亦然。對于由條件代碼標(biāo)志N、Z、C、V的不同組合所代表的信息的示例,可見于圖8和圖10。圖3A示出了根據(jù)本技術(shù)的條件式比較指令CCMP的示例語法。條件式比較指令具有用于指定測試條件、兩個操作數(shù)、和未通過條件狀態(tài)的字段。指令譯碼器14響應(yīng)條件式 比較指令以控制處理電路4,來確定存儲在狀態(tài)寄存器15中的當(dāng)前條件狀態(tài)是否滿足與條件式比較指令相關(guān)的測試條件(cond)。如果當(dāng)前條件狀態(tài)滿足測試條件,則處理電路4對兩個操作數(shù)執(zhí)行比較運(yùn)算,并且,基于處理結(jié)果更新當(dāng)前條件狀態(tài)(例如,如果比較運(yùn)算生成負(fù)值,則條件標(biāo)志N可被設(shè)定))。如果在條件式比較指令執(zhí)行的時(shí)的當(dāng)前條件狀態(tài)不滿足測試條件,則比較運(yùn)算不被執(zhí)行,并且,由條件式比較指令指定的未通過條件狀態(tài)值被寫入至狀態(tài)寄存器15中以更新當(dāng)前條件狀態(tài)。圖3B示出了圖3A的條件式比較指令的示例編碼。在此示例中,指令包括用于指定測試條件的4位字段、用于指定操作數(shù)寄存器的兩個5位字段、以及用于指定未通過條件狀態(tài)的4位字段。將理解,,可依所需對每個字段使用其他位數(shù)量。在此示例中,4位測試條件識別符#0b0000表示EQ條件。在指令被執(zhí)行時(shí),測試條件代碼以看看是否滿足EQ測試條件。如果滿足EQ測試條件,則比較存儲在操作數(shù)寄存器(在此示例中為寄存器R2和R9)內(nèi)的值,并且,基于比較結(jié)果更新條件代碼。如果未滿足EQ測試條件,則寫入未通過條件狀態(tài)值(在此示例中為#0b0001)至條件代碼NZCV中。在圖3A的語法中,條件式比較指令使用寄存器指定符Rn、Rm指定操作數(shù)兩者。寄存器指定符RruRm識別存儲欲比較的操作數(shù)的寄存器庫6的寄存器。欲比較的操作數(shù)可為整數(shù)或浮點(diǎn)數(shù)。在如圖4A所示的另一示例語法中,可指定操作數(shù)的一個#op為在條件式比較指令中的立即值。在欲比較變量和常數(shù)彼此時(shí),此可為有用的。圖4B示出了具有如圖4A所示的語法的指令的示例編碼。如果滿足測試條件(例如,LT),則比較存儲在操作數(shù)寄存器(例如,R7)中的值和立即值(例如,#19),并且,根據(jù)比較更新條件代碼。如果未滿足測試條件,則寫入未通過條件狀態(tài)代碼#0b0000至條件代碼NZCV中。在使用寄存器指定符指定操作數(shù)時(shí),指令譯碼器14可選擇性地經(jīng)配置以將特定寄存器指定符值解譯為表示零操作數(shù),而非存儲在寄存器內(nèi)的操作數(shù)。例如,在圖3的具體實(shí)施例中,在寄存器指定符Rm指定全I(xiàn)位值Ob 11111時(shí),此可用以表示處理電路4需將存儲在寄存器Rn中的操作數(shù)與零值比較。在圖3和圖4兩者的語法中,指定未通過條件狀態(tài)為立即值,立即值代表如果測試條件未通過則欲寫入狀態(tài)寄存器15的條件代碼標(biāo)志的位值。例如,使用如圖2所示的NZCV條件代碼標(biāo)志,代表ObOlOO的未通過條件狀態(tài)的立即值可表示需寫入O至負(fù)標(biāo)志N、進(jìn)位標(biāo)志C和溢位標(biāo)志V,并且,需寫入I至零標(biāo)志Z。以此方式,如果未通過測試條件,則條件式比較指令直接指定欲采取的條件狀態(tài)。此為有用的,因?yàn)榇耸箺l件式比較指令能夠用以設(shè)定當(dāng)前條件狀態(tài)為準(zhǔn)備由隨后條件式指令使用的適當(dāng)?shù)闹?。圖5示出了一種用于使用本技術(shù)的條件式比較指令的數(shù)據(jù)處理方法。在步驟50,指令譯碼器14譯碼指令序列的下一個指令。在步驟60,譯碼器14確定下一個指令是否為條件式比較指令。如果下一個指令不為條件式比較指令,則在步驟70指令譯碼器14生成對應(yīng)于下一個指令的控制信號,并且,控制處理電路4執(zhí)行對應(yīng)于下一個指令的運(yùn)算。隨后程序進(jìn)行至步驟80,在步驟80處確定是否還有任何指令需處理。如果還有需處理的指令,則方法回到步驟50,并且,譯碼下一個指令。如果沒有欲處理的指令,則方法結(jié)束。另一方面,如果在步驟60下一個指令為條件式比較指令,則指令譯碼器生成用于控制處理電路4的控制信號以執(zhí)行條件式比較運(yùn)算。在步驟90,處理電路4確定由狀態(tài)寄存器15的條件代碼標(biāo)志代表的當(dāng)前條件狀態(tài)是否通過與條件式比較指令相關(guān)的測試條 件。如果當(dāng)前條件狀態(tài)通過了測試條件,則在步驟100處理電路4被控制以對第一和第二操作數(shù)執(zhí)行比較運(yùn)算。隨后在步驟110更新狀態(tài)寄存器15,以設(shè)定當(dāng)前條件狀態(tài)為于在步驟100執(zhí)行比較運(yùn)算的同時(shí)生成的結(jié)果條件狀態(tài)。另一方面,如果在步驟90當(dāng)前條件狀態(tài)未通過測試條件,則在步驟120設(shè)定當(dāng)前條件狀態(tài)為由條件式比較指令指定的未通過條件狀態(tài)。例如,寫入由條件式比較指令指定的立即值狀態(tài)至存儲器15的條件代碼標(biāo)志。無論在步驟90當(dāng)前條件狀態(tài)是否通過了測試條件,方法隨后進(jìn)行至步驟80,并且,確定是否仍有需處理的指令。如果存在需處理的另一指令,則方法回到步驟50。如果無,則方法結(jié)束。圖5示出了無論條件式比較指令的當(dāng)前條件狀態(tài)是否通過測試條件,代表當(dāng)前條件狀態(tài)的條件代碼標(biāo)志被更新(相對于先前條件式指令,如果測試條件未通過則其作為無作業(yè)(no-op)指令)。當(dāng)前條件狀態(tài)的更新值取決于當(dāng)前條件狀態(tài)是否通過測試條件。如果當(dāng)前條件狀態(tài)通過測試條件,則更新的條件狀態(tài)基于比較第一和第二操作數(shù)的結(jié)果來確定,同時(shí)如果當(dāng)前條件狀態(tài)未通過測試條件,則更新值為由條件式比較指令指定的未通過條件狀態(tài)。此種指令是有用的,因?yàn)槿绻?dāng)前條件狀態(tài)未通過測試條件,則指定當(dāng)前條件狀態(tài)需被更新至的未通過條件狀態(tài)的能力,使這些指令能夠用以代表一串測試不同種類的邏輯關(guān)的比較運(yùn)算鏈??商峁└鞣N類型的條件式比較指令,其每一個根據(jù)圖5的步驟90-120來處理,但在步驟100使用不同的比較運(yùn)算。圖6A至圖6F示出了這些條件式比較指令類型的示例。圖6A至圖6F示出了使用寄存器指定符識別第一和第二操作數(shù)的形式的指令,但也可提供這些指令的每一個的替代形式,其中操作數(shù)的一個被指定為立即值。如下文所述,如果為所需,貝1J亦可修改這些指令的語法,以指定未通過條件狀態(tài)為助憶(mnemonic)條件而非為立即值#imm。圖6A示出了條件式比較正指令CCMP。如果由條件式比較正指令指定的測試條件被通過,則處理電路4被控制以從第一操作數(shù)減去第二操作數(shù),并寫入結(jié)果條件狀態(tài)至條件標(biāo)志,同時(shí)如果測試條件未被通過,則寫入在指令中指定的未通過條件狀態(tài)#imm至條件標(biāo)志。此種指令對測試第一操作數(shù)是否大于、或等于第二操作數(shù)可為有用的。圖6B示出了條件式比較負(fù)指令CCMN。如果由指令指定的測試條件由當(dāng)前條件狀態(tài)通過,則第一和第二操作數(shù)被相加并且,結(jié)果條件狀態(tài)被寫入條件標(biāo)志,同時(shí)如果當(dāng)前條件狀態(tài)未通過測試條件,則寫入未通過條件狀態(tài)至條件標(biāo)志。此種指令可幫助測試第一操作數(shù)是否大于由將第二操作數(shù)乘上-I所獲得的值(因?yàn)閷⒌谝缓偷诙僮鲾?shù)相加,等于從第一操作數(shù)減去(-1*第二操作數(shù)))。圖6C示出了條件式相等測試指令CTEQ。在執(zhí)行此種類指令時(shí),如果由指令指定的測試條件被通過,則處理電路4經(jīng)配置以對第一和第二操作數(shù)執(zhí)行EOR運(yùn)算,并且,將結(jié)果條件狀態(tài)寫回條件標(biāo)志,同時(shí)如果測試條件未被通過,則由指令指定的未通過條件狀態(tài)#imm被寫回條件標(biāo)志。此種類指令可用以測試第一操作數(shù)是否相等于第二操作數(shù)。圖6D示出了條件式按位測試指令CTST。在執(zhí)行此類型指令時(shí),如果測試條件被通 過,則處理電路對第一和第二操作數(shù)執(zhí)行按位AND運(yùn)算,并將結(jié)果條件狀態(tài)寫入條件標(biāo)志,同時(shí)如果測試條件未被通過,則將未通過條件狀態(tài)寫入條件標(biāo)志。此類型指令可用以測試對應(yīng)于在第二操作數(shù)中的“I”位的位置的第一操作數(shù)的位是否為全零或非全零。特別有用的情況為,在第二操作數(shù)正好包括一個“ I”位時(shí),以及在指令測試第一操作數(shù)的對應(yīng)位是否為“O”或“I”時(shí)。圖6E示出了具有進(jìn)位的條件式加法指令CADC。在執(zhí)行此指令時(shí),如果測試條件被通過,則控制處理電路4以將第一操作數(shù)、第二操作數(shù)與在狀態(tài)寄存器15中的進(jìn)位標(biāo)志C的當(dāng)前值相加,并將此加法所生成的結(jié)果條件狀態(tài)寫入條件標(biāo)志中。另一方面,如果測試條件未被通過,則寫入未通過測試條件#imm條件標(biāo)志,如對其他類型的條件式比較指令般。進(jìn)位加法運(yùn)算可用以代表多字加法(multi-word addition)的第二、第三或更進(jìn)一步的字,進(jìn)位位表示多字加法的前一字是否生成了進(jìn)位。圖6F示出了條件式按位OR測試指令C0RRT,其在執(zhí)行時(shí)控制處理電路4以對第一和第二操作數(shù)執(zhí)行按位0R,如果測試條件被通過。從按位OR出現(xiàn)的結(jié)果條件狀態(tài)被寫入條件標(biāo)志。另一方面,如果測試條件未被通過,則將未通過條件狀態(tài)#1_寫入條件標(biāo)志。此種指令可用以測試兩個寄存器是否都存儲零值。此對于測試倍寬數(shù)據(jù)值是否等于零特別有用。例如,倍寬128位值RnHi/Lo可使用兩個64位寄存器RnHi和RnLo存儲。按位OR測試指令使倍值的兩半部分能夠被使用單一指令來對零測試,因?yàn)楸秾捴档纳喜糠趾拖虏糠值陌次籓R僅當(dāng)兩部分皆等于零時(shí)才具有零值。相較于個別地將倍寬值的每一部分對零比較,此可為更有效率。因此,(RnHi/Lo! = 0)&&(RmHi/Lo = = O)形式表達(dá)式可更有效率地使用兩個指令來估算ORRT RnHi,RnLo ;// 如果 RnHi/Lo = O 則 Z = 1,并且,如果為其他情況則 Z = O)CORRT NE, RmHi,RmLo,#0"如果(0RRT 設(shè)定 Z 為 OANDRmHi/Lo = O)則 Z = 1,//如果為其他情況則Z = O。將理解,在任意特定具體實(shí)施例中,指令譯碼器可響應(yīng)于任一個或更多的這些指令,以控制處理電路4來執(zhí)行對應(yīng)類型的條件式比較運(yùn)算。例如,在特定具體實(shí)施例中,譯碼器14可經(jīng)配置以響應(yīng)于在圖6A和圖6B中所示的條件式比較指令類型,但不回應(yīng)其他種類的條件式比較指令。
條件式比較指令串可用以代表比較運(yùn)算的序列鏈,其中在序列中的每個比較運(yùn)算,使用AND或OR運(yùn)算與所有先前比較運(yùn)算的結(jié)合結(jié)果結(jié)合(例如,序列(A < B&&C ==D) I I E > = F)。每個比較運(yùn)算測試特定準(zhǔn)則(例如,在上述示例中,第一比較運(yùn)算測試A < B與否的準(zhǔn)則,第二比較運(yùn)算測試C = D與否的準(zhǔn)則,并且,第三比較運(yùn)算測試E彡F與否的準(zhǔn)則)。不像在先前已知的條件式指令,本技術(shù)的條件比較指令可在比較運(yùn)算鏈測試一個以上二的準(zhǔn)則種類時(shí)使用。圖7A和圖7B示出了用以將特定比較運(yùn)算序列鏈轉(zhuǎn)換成比較指令序列的方法的具體實(shí)施例。此種方法可例如由編譯程序執(zhí)行,編譯程序接收定義比較運(yùn)算序列的輸入,并生成對應(yīng)的程序指令序列。
圖7A示出了此種方法的第一具體實(shí)施例。在步驟200,輸入定義N個比較運(yùn)算序列鏈的數(shù)據(jù)(N為大于I的任意整數(shù))。在步驟202,設(shè)定計(jì)數(shù)變量i為等于N。在步驟204,確定結(jié)合序列鏈的第i個比較與序列鏈的第一個至第i_l個比較的結(jié)合結(jié)果的邏輯運(yùn)算是否為AND運(yùn)算或OR運(yùn)算。例如,在序列(A < B&&C = =D)||E>=F中,在i = 3時(shí)序列的第i個比較(E >= F)經(jīng)由OR運(yùn)算I I被鏈結(jié)至第一個至第i-Ι個比較(A < B&&C ==D)的組合,并且,在i = 2時(shí)序列的第i個比較(C==D)經(jīng)由AND運(yùn)算&&被鏈結(jié)至第i_l個比較(A < B)。如果在步驟204確定第i個比較運(yùn)算與第一個至第i-Ι個比較運(yùn)算的部分鏈由與運(yùn)算鏈結(jié),貝1J在步驟206對第i個比較運(yùn)算生成條件式比較指令,其中測試條件cond被設(shè)定為在第i_l個比較滿足其預(yù)定準(zhǔn)則時(shí)通過的條件,并且,未通過條件狀態(tài)被設(shè)定為對應(yīng)于第i個比較的準(zhǔn)則未被滿足的任意值。例如,當(dāng)在上述示例中i = 2時(shí),在第i-Ι個比較(A < B)滿足其預(yù)定準(zhǔn)則時(shí)通過的條件為條件LT (見第8圖-假定有符號比較(signed comparison)),因?yàn)榇藢⒈硎続<B。因此,對于第二個條件式比較指令運(yùn)算的測試條件為LT。同樣的,對于i = 2,在C不相等于D時(shí)第i個比較(C = = D)的準(zhǔn)則未被滿足,即圖8所示的NE狀態(tài),其中Z標(biāo)志未被設(shè)定。因此,第i個條件式比較指令的未通過條件狀態(tài)值可被設(shè)定為將導(dǎo)致Z標(biāo)志被清除(例如,ObOOOO)的任意組合值。另一方面,如果在步驟204結(jié)合第i個比較運(yùn)算與第一個至第i-Ι個比較運(yùn)算的部分鏈的邏輯運(yùn)算為或運(yùn)算,則在步驟208對第i個比較運(yùn)算生成條件式比較指令,其中測試條件被設(shè)定為在第i個比較運(yùn)算未滿足其準(zhǔn)則時(shí)通過的條件,并且,未通過條件狀態(tài)值被設(shè)定為對應(yīng)至第i個比較的準(zhǔn)則被滿足的任意值。例如,對于上述示例序列在i = 3時(shí),在第i-Ι個比較運(yùn)算(C==D)未滿足其準(zhǔn)則時(shí)通過的條件為第8圖的NE狀態(tài),并且,因此對于第三個條件式比較運(yùn)算的測試條件被設(shè)定為NE。同樣的,對于i = 3,在E大于或等于F時(shí)第i個比較(E >= F)的準(zhǔn)則被滿足(例如,在對于有符號比較的GE狀態(tài)中-見第8圖)。因此,未通過條件狀態(tài)值可被設(shè)定為對應(yīng)至GE狀態(tài)的條件標(biāo)志值的任意組合(例如,繼續(xù)參照圖8,位N和V為相同,并且,所有其他位可具有任意值-亦即ObOOOO)。無論邏輯運(yùn)算是否為與運(yùn)算或或運(yùn)算,隨后在步驟210遞減計(jì)數(shù)變量i,并且,在步驟212確定新的計(jì)數(shù)變量i是否大于或等于2。如果新的計(jì)數(shù)變數(shù)i大于或等于2則對新的i值重復(fù)步驟204至212,以對另一比較運(yùn)算生成另一條件式比較指令。以此方式對序列鏈的第二個至第N個比較運(yùn)算生成條件式比較指令。如果在步驟212,i小于2,則方法進(jìn)行至步驟214,在步驟214對序列鏈的第一個比較生成無條件式比較指令。例如,在上述序列中,可生成確定A < B與否并根據(jù)比較結(jié)果更新條件代碼標(biāo)志的無條件式比較指令。在步驟216,所有生成的指令由與生成順序反向的順序輸出,以形成代表比較運(yùn)算的序列鏈的指令序列。圖7B示出了用于生成對應(yīng)于比較運(yùn)算的指令序列的方法的替代性具體實(shí)施例。圖7B的步驟,其與圖7A的對應(yīng)步驟相同,并以與圖7A相同的組件符號標(biāo)示。圖7B與圖7A的不同之處在于指令是以在序列鏈中的對應(yīng)比較運(yùn)算的順序生成的,而非如圖7A中以反向順序生成。序列鏈的第一個比較運(yùn)算的無條件式比較指令在圖7B的步驟214生成。隨后在步驟220計(jì)數(shù)變數(shù)i被初始化至值2。隨后對第i個比較運(yùn)算執(zhí)行步驟204至208,其與圖7A的對應(yīng)步驟相同,并且,在i于步驟222循序遞增的同時(shí)重復(fù),直至在步驟226i大 于N。此意味著對于鏈中的第二個至第N個比較運(yùn)算生成了條件式比較指令。一旦i大于N,則在步驟230所生成的指令由在步驟230生成的順序輸出,以形成程序指令序列。如可見于圖7A至圖7B,對于第一個比較運(yùn)算的無條件式比較指令以及對于第二個至第N個比較運(yùn)算的條件式比較指令生成的順序并不特別重要,只要對第二個至第N個比較運(yùn)算的每一個生成條件式比較指令并對第一個比較運(yùn)算生成無條件式比較指令,并且,所生成的指令被由正確的程序順序輸出。在本發(fā)明領(lǐng)域具有通常知識者將可認(rèn)知,也可以使用除了圖7A和圖7B所示的生成順序以外的順序。在圖7A和圖7B的步驟214生成的無條件式比較指令,可為具有與條件式指令不同的語法的指令。例如,無條件式比較指令可具有指定兩個操作數(shù)的語法,以使指令譯碼器生成用于控制處理電路4的控制信號,以比較操作數(shù)并根據(jù)比較結(jié)果更新條件代碼標(biāo)志NZCV0無條件式比較指令語法可省略圖3、圖4或圖6所示的條件式比較指令語法的測試條件與未通過條件狀態(tài)。在此種具體實(shí)施例中圖8的AL(總是通過)條件狀態(tài)可被省略。或者,無條件式比較指令與條件式比較指令可具有共同的語法,根據(jù)設(shè)定測試條件cond為無論條件標(biāo)志值為何,而總是被滿足的條件狀態(tài),可使用在圖3、圖4和圖6中的任意者所示的條件式比較指令語法形成無條件式比較指令。例如,對于無條件式指令,測試條件cond可被設(shè)定為相等于圖8的“總是”條件狀態(tài)AL,以使指令總是通過其條件代碼(在此情況中,因?yàn)槲赐ㄟ^條件狀態(tài)將不被需要,所以其可被設(shè)定為任意值)。因此,相同種類的指令語法可同時(shí)作為無條件式比較指令與條件式比較指令,取決于對指令指定的測試條件。此可增進(jìn)指令編碼空間的使用效率。圖8示出了圖標(biāo)條件代碼標(biāo)志的不同組合的表,每個組合代表由特定條件后綴(或條件“助憶”)指定的特定條件狀態(tài)。例如,PL狀態(tài)表示先前處理結(jié)果為正或零,并且,由“N”條件標(biāo)志為清除以指定。因此,NZCV的任意組合位值ObOxxx (其中X為O或I的任意者)具有為清除的N位,并且,因此可表示PL狀態(tài)。下文更詳細(xì)解釋圖7A和圖7B的方法。假設(shè)某人現(xiàn)有“如果(if) ”測試,其為單獨(dú)比較的序列鏈,諸如if (((s = = t&&u > = O) I I a ! = b) &&c > d)其中僅為示例的目的,某人假定s、t和U為有符號變數(shù)并且,a、b、c和d為有符號無符號變量(他們同樣可為有符號無符號變量)。用于對此種序列鏈生成碼序列的一組適合的規(guī)則為I.將總是由對于鏈中最終個別比較的適合條件來反映結(jié)果。2.如果序列鏈僅包括單一個別比較,則對其的兩個操作數(shù)使用無條件式比較(CMP)指令(參見圖7A和圖7B的步驟214)。定義無條件式比較指令以根據(jù)比較結(jié)果生成圖8的條件狀態(tài)的一個。3.其他情況下,序列鏈由較短的序列鏈與一個額外的單獨(dú)比較與或或所組成。4.如果序列鏈由較短的序列鏈與一個額外的比較AND所組成,則(參見圖7A和圖7B的步驟206)對此較短的序列鏈生成指令序列,并于其后加上CCMP cond, opl, op2,#imm其中cond為在較短的序列鏈通過時(shí)其生成的條件;·opl和op2為用于額外比較的兩個操作數(shù);以及imm為N、Z、C、V條件標(biāo)志值的任意組,其對應(yīng)于所需的來自額外比較的“未通過”結(jié)果。此確保如果較短的序列鏈生成其“未通過”條件,則額外的比較將生成其自身的“未通過”條件,并且,如果較短的序列鏈生成其“通過”,則額外的比較將生成其自身的“未通過”結(jié)果或其自身的“通過”結(jié)果,取決于個別測試的結(jié)果,其為對于與額外比較AND的正確行為。5.如果序列鏈由較短的序列鏈與一個額外的比較OR所組成(參見圖7A和圖7B的步驟208),則對此較短的序列鏈生成指令序列,并于其后加上CCMP cond, opl, op2,#imm其中cond為在較短的序列鏈未通過時(shí)其生成的條件;opl和op2為用于額外比較的兩個操作數(shù);以及imm為N、Z、C、V條件標(biāo)志值的任意組,其對應(yīng)于所需的來自額外比較的“通過”結(jié)
果O此確保如果較短的序列鏈生成其“通過”條件,則額外的比較將生成其自身的“通過”條件,并且,如果較短的序列鏈生成其“未通過”條件,則額外的比較將生成其自身的“未通過”結(jié)果或其自身的“通過”結(jié)果,取決于個別測試的結(jié)果,其為對于與額外比較OR的正確行為。為了說明上述用以生成碼序列的示例,對于(((s == t&&u >= 0) I |a ! = b)SlSlc> d)序列的最終比較為無正負(fù)號的>,所以遵循規(guī)則1,目標(biāo)為在其通過時(shí)(亦即為TRUE)生成圖8的HI條件,并在其未通過時(shí)(亦即為FALSE)生成圖8的LS條件。因此,目標(biāo)為......為尚未決定的碼序列......//現(xiàn)如果(((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邏輯與而成。遵循上述規(guī)則4 *較短的序列鏈具有!=測試為其最終比較,如果其通過則生成NE條件。*所需的額外比較“未通過”結(jié)果為LS= (C==0)||(Z = 1)。挑選滿足此條件的NZCV標(biāo)志組的任意值,例如NZCV = ObOOOO。并且,碼序列可經(jīng)由第一步驟發(fā)展為......為尚未決定的碼序列......// 現(xiàn)如果((S== t&&u > = O) I I a ! = b)為 TRUE 則為 NE,//其他情況為EQ
CCMP NE, Re, Rd, #0b0000//現(xiàn)如果(((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邏輯或而成。遵循上述規(guī)則5 *較短的序列鏈具有有符號 >=測試為其最終比較,如果其未通過則生成LT條件。*所需的額外比較“通過”結(jié)果為NE = (Z == O)。挑選滿足此條件的NZCV標(biāo)志組的任意值,例如NZCV = ObOOOO。并且,碼序列可經(jīng)由第二步驟發(fā)展為......為尚未決定的碼序列......// 現(xiàn)如果(s == t&&u > = 0)為 TRUE 則為 GE,//其他情況為LTCCMP LT, Ra, Rb, #0b0000//現(xiàn)如果((S== t&&u > = 0) I I a ! = b)為 TRUE 則為 NE,//其他情況為EQCCMP NE, Re, Rd, #0b0000//現(xiàn)如果(((s = = t&&u > = 0) I I a ! = b) &&c > d)為 TRUE//則為HI,其他情況為LS序列鏈(s = = t&&u >= 0)由較短的序列鏈s = = t和額外比較u > = OAND而成。遵循上述規(guī)則4:*較短的序列鏈具有==測試為其最終比較,以如果其通過則生成EQ條件。*所需的額外比較“未通過”結(jié)果為LT = (N ! = V)。挑選滿足此條件的NZCV標(biāo)志組的任意值,例如NZCV = ObOOOl。并且,碼序列可經(jīng)由第三步驟發(fā)展為......為尚未決定的碼序列......Il現(xiàn)如果s == t為TRUE則為EQ,其他情況為NECCMP EQ, Ru, #0, #0h0001// 現(xiàn)如果(s == t&&u > = 0)為 TRUE 則為 GE,//其他情況為LTCCMP LT, Ra, Rb, #0b0000
// 現(xiàn)如果((s== t&&u > = O) I I a ! = b)為 TRUE 則為 NE,//其他情況為EQCCMP NE,Re,Rd,#0b0000//現(xiàn)如果(((s = = t&&u > = O) I I a ! = b) &&c > d)為 TRUE//則為HI,其他情況為LS最后,序列鏈s = = t僅為單一比較,故遵循上述規(guī)則2,如上所述對其使用無條件式比較指令。此生成完整碼序列CMP Rs, Rt //現(xiàn)如果s = = t為TRUE則為EQ,其他情況為NECCMP EQ, Ru, #0, UOhOOOl// 現(xiàn)如果(s == t&&u >= O)為 TRUE 則為 GE,//其他情況為LTCCMP LT, Ra, Rb, #0b0000// 現(xiàn)如果((S== t&&u > = O) I I a ! = b)為 TRUE 則為 NE,//其他情況為EQCCMP NE, Re, Rd, #0b0000//現(xiàn)如果(((s = = t&&u > = O) I I a ! = b) &&c > d)為 TRUE//則為HI,其他情況為LS上述技術(shù)可由編譯程序執(zhí)行,以將所需邏輯表達(dá)式轉(zhuǎn)換成程序指令序列以估算表達(dá)式。指令不須以任意特定的順序確定或生成,只要指令以正確的程序順序被輸出,故可能存在不同的生成方法的具體實(shí)施例(參見圖7A和圖7B)。在上述示例中,由指令語法指定未通過條件狀態(tài)為立即值,立即值指定欲寫入狀態(tài)寄存器15中的條件代碼的字節(jié)合值。然而,語法可替代性地指定未通過條件狀態(tài)為條件助憶(后綴),諸如第圖8所示的HI、LS、PL等等。在此指令形式中,程序設(shè)計(jì)師隨后可指定未通過條件狀態(tài)所需的條件助憶,并且,在組譯指令時(shí)組譯器(assembler)可將條件助憶轉(zhuǎn)換成特定的立即值。因此,從指令譯碼器14的觀點(diǎn)看來,指令看起來與其他具體實(shí)施例相同,但從程序設(shè)計(jì)師的觀點(diǎn)看來指令語法更為直覺,因?yàn)橄噍^于條件代碼值,使用助憶可更清楚了解不同條件狀態(tài)的意義。響應(yīng)于特定條件助憶,組譯器可選定可寫入條件標(biāo)志,以使得由助憶表示的條件狀態(tài)被保持的任意未通過條件狀態(tài)。如果存在對應(yīng)至相同條件的多個可能的立即值,則可提供用于選定對應(yīng)至條件的值的規(guī)則給組譯器。例如,組譯器可選定最大或最小的可用值,以確保每次原始碼皆由相同方式組譯。例如在圖8中,滿足EQ狀態(tài)的最大可能值為OblllK并且,Z位被設(shè)定)。因此,在指定未通過條件狀態(tài)為條件助憶的具體實(shí)施例中,在上述示例中決定的最終指令序列可為CMP Rs, Rt//現(xiàn)如果s = = t為TRUE則為EQ,其他情況為NECCMP EQ, Ru, #0, LT
// 現(xiàn)如果(s = = t&&u > = O)為 TRUE 則為 GE,//其他情況為LTCCMP LT,Ra,Rb,NE// 現(xiàn)如果((S== t&&u > = O) I I a ! = b)為 TRUE 則為 NE,//其他情況為EQCCMP NE,Re,Rd,LS//現(xiàn)如果(((s = = t&&u > = O) I I a ! = b) &&c > d)為 TRUE //則為HI,其他情況為LS 圖9示出了可使用的虛擬機(jī)實(shí)現(xiàn)。雖然上文所述的具體實(shí)施例依據(jù)用于操作支持所關(guān)切技術(shù)的特定處理硬件的裝置和方法來實(shí)施本發(fā)明,也可以提供所謂的硬件裝置的虛擬機(jī)實(shí)現(xiàn)。這些虛擬機(jī)實(shí)現(xiàn)在運(yùn)行支持虛擬機(jī)程序510的宿主操作統(tǒng)520的宿主處理器530上運(yùn)行。通常需要大型強(qiáng)力的處理器來提供以適當(dāng)?shù)乃俣葓?zhí)行的虛擬機(jī)實(shí)施,但在特定環(huán)境下可調(diào)整此種作法,諸如在為了兼容性或再使用的緣由而想要運(yùn)行另一處理器專用的碼時(shí)。虛擬機(jī)程序510提供應(yīng)用程序編程接口給應(yīng)用程序500,其與由虛擬機(jī)程序510模型化的真實(shí)硬件所提供的應(yīng)用程序編程接口相同。因此,程序指令,包括上文所述的對內(nèi)存存取的控制,可使用虛擬機(jī)程序510從應(yīng)用程序500內(nèi)執(zhí)行,以模型化他們與虛擬機(jī)硬件的互動。圖10示出了圖8所示的條件狀態(tài)的可選延伸。在圖10的示例中,處理電路4可被設(shè)定為一些不同條件狀態(tài)的任意者,包括預(yù)定條件狀態(tài)MZ,其專由條件式比較指令使用。處理裝置無法經(jīng)由正常處理運(yùn)算被置于MZ條件狀態(tài)中。MZ條件狀態(tài)僅在指定MZ條件狀態(tài)為其未通過條件狀態(tài)的條件式比較指令未通過其測試條件時(shí)出現(xiàn)。在圖10的示例中,MZ狀態(tài)由N和Z標(biāo)志被設(shè)定來代表,表示“負(fù)零”結(jié)果。正常處理運(yùn)算無法出現(xiàn)“負(fù)零”結(jié)果,因?yàn)檎L幚磉\(yùn)算將生成為零或?yàn)樨?fù)的結(jié)果,但將不同時(shí)為零并且,為負(fù)。圖10也示出了OK狀態(tài),其相反于MZ狀態(tài)。因此,OK狀態(tài)在N或Z標(biāo)志為清除時(shí)被滿足。MZ狀態(tài)是有用的,因?yàn)槠湓试S指令測試在的前的條件式比較指令是否通過或未通過其測試條件??蓤?zhí)行指定MZ狀態(tài)為未通過條件狀態(tài)的條件式比較指令。隨后的條件式指令可隨后測試條件標(biāo)志是在MZ狀態(tài)或在OK狀態(tài)。如果條件標(biāo)志為在MZ狀態(tài),則條件式比較指令未通過其測試條件,同時(shí)如果條件標(biāo)志為在OK狀態(tài),則條件式比較指令通過其測試條件。圖11示出了指定MZ狀態(tài)為未通過條件狀態(tài)的條件式比較指令如何可用以限制變量X為在給定范圍BOT至TOP中的示例。如果X在可允許的范圍BOT至TOP中,則X保持其原始值。如果X大于Τ0Ρ,則X被設(shè)定為相等于Τ0Ρ,同時(shí)如果X小于Β0Τ,則X被設(shè)定為相等于Β0Τ。因此,X被限制以使其最大可能值為TOP并且,其最小可能值為Β0Τ。圖11示出了用于實(shí)施此對X值的限制的指令的示例序列。首先,比較指令CMP X,TOP被執(zhí)行以觸發(fā)對X和TOP值的比較。隨后條件標(biāo)志基于比較結(jié)果被更新。如果Χ<Τ0Ρ,則條件標(biāo)志將被設(shè)定為LT條件狀態(tài),同時(shí)如果X ^ TOP,則條件標(biāo)志將被設(shè)定為GE條件狀態(tài)。接著,條件式比較指令CCMP LT,X,BOT,MZ被執(zhí)行。如果LT測試條件通過,則X和BOT被比較并且,基于比較結(jié)果更新條件標(biāo)志為LT和GE條件狀態(tài)的一個。另一方面,如果LT測試條件未通過,則條件標(biāo)志被置于MZ狀態(tài)。接著,條件式選定指令CSEL,MZ, X,TOP, X被執(zhí)行。如果MZ測試條件通過,則X被選定以具有TOP值,同時(shí)在其他情況下X保持其原始值。最后,條件式選定指令CSEL LT, X,BOT, X被執(zhí)行。如果LT測試條件通過,則X被選定以具有BOT值,同時(shí)在其他情況下X保持其原始值。圖10和圖11示出了示例,其中僅可由未通過其測試條件的條件式比較指令設(shè)定的條件狀態(tài)為MZ “負(fù)零”狀態(tài),并且,N和Z標(biāo)志皆被設(shè)定。然而,在其他具體實(shí)施例中,可使用除了 MZ狀態(tài)以外的任意無法在正常處理期間出現(xiàn)的條件標(biāo)志值的組合。在圖10的示例中,MZ狀態(tài)取代圖8所示的“總是”AL狀態(tài),以提供總共16個可用的條件狀態(tài),其可使用4位識別符來識別。將理解,,在其他示例中可同時(shí)提供AL狀態(tài)和MZ狀態(tài)兩者。雖然在此已參照附加圖式,詳盡描述了本發(fā)明的說明性具體實(shí)施例,將了解到本·發(fā)明并不限于這些精確的具體實(shí)施例,并且,在本發(fā)明領(lǐng)域中具有通常知識者可進(jìn)行各種改變和修改,而不脫離如附加中請專利范圍所定義的本發(fā)明的范圍和精神。
權(quán)利要求
1.一種數(shù)據(jù)處理裝置,包括 處理電路,用于處理數(shù)據(jù); 指令譯碼器,響應(yīng)于程序指令以生成用于控制所述處理電路以處理所述數(shù)據(jù)的控制信號; 狀態(tài)存儲器,用于存儲所述處理電路的當(dāng)前條件狀態(tài),所述當(dāng)前條件狀態(tài)在處理所述數(shù)據(jù)期間為可修改的; 其中所述程序指令包括條件式比較指令,并且,所述指令譯碼器響應(yīng)于所述條件式比較指令以生成用于控制所述處理電路以執(zhí)行條件式比較運(yùn)算的控制信號,所述條件式比較運(yùn)算包括 (i)如果所述當(dāng)前條件狀態(tài)通過測試條件,則對第一操作數(shù)和第二操作數(shù)執(zhí)行比較運(yùn)算,并且,設(shè)定所述當(dāng)前條件狀態(tài)為在所述比較運(yùn)算期間生成的結(jié)果條件狀態(tài);以及 (ii)如果所述當(dāng)前條件狀態(tài)未通過所述測試條件,則設(shè)定所述當(dāng)前條件狀態(tài)為由所述條件式比較指令指定的未通過條件狀態(tài)。
2.如權(quán)利要1所述的數(shù)據(jù)處理裝置,其中所述狀態(tài)存儲器包括狀態(tài)寄存器。
3.如權(quán)利要求1或2所述的數(shù)據(jù)處理裝置,其中所述當(dāng)前條件狀態(tài)包括存儲在所述狀態(tài)存儲器中的至少一個條件代碼標(biāo)志的值。
4.如前述權(quán)利要求中任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所述條件式比較指令包括用于指定所述測試條件的字段。
5.如前述權(quán)利要求中任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所述未通過條件狀態(tài)由所述條件式比較指令指定為立即值。
6.如權(quán)利要求5所述的數(shù)據(jù)處理裝置,其中所述立即值為由包括所述條件式比較指令的程序的程序設(shè)計(jì)師設(shè)定的可編程值。
7.如權(quán)利要求5所述的數(shù)據(jù)處理裝置,其中所述立即值為由包括所述條件式比較指令的程序的編譯程序設(shè)定的可編程值,所述編譯程序根據(jù)所需條件選定所述可編程值,所述條件式比較指令的所述未通過條件狀態(tài)將通過所述所需條件。
8.如前述權(quán)利要求中的任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所述未通過條件狀態(tài)被指定為N位未通過條件狀態(tài)值,其中N為大于零的任意整數(shù),并且,所述當(dāng)前條件狀態(tài)由N位值表示;并且 所述指令譯碼器控制所述處理電路,以在所述當(dāng)前條件狀態(tài)未通過所述測試條件時(shí),將所述N位未通過條件狀態(tài)值寫入所述狀態(tài)存儲器中。
9.如前述權(quán)利要求中的任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所述當(dāng)前條件狀態(tài)能夠被設(shè)定為多個條件狀態(tài)中的任意一個,所述多個條件狀態(tài)包括預(yù)定條件狀態(tài);并且 如果指定所述預(yù)定條件狀態(tài)為所述未通過條件狀態(tài)的條件式比較指令未通過所述測試條件,則所述當(dāng)前條件狀態(tài)僅可被設(shè)定至所述預(yù)定條件狀態(tài)。
10.如前述權(quán)利要求中的任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所述條件式比較指令包括用于指定所述第一操作數(shù)和所述第二操作數(shù)的第一操作數(shù)字段和第二操作數(shù)字段。
11.如權(quán)利要求10所述的數(shù)據(jù)處理裝置,其中所述第一操作數(shù)字段和第二操作數(shù)字段的至少一個指定存儲所述第一操作數(shù)或所述第二操作數(shù)的存儲位置。
12.如權(quán)利要求11所述的數(shù)據(jù)處理裝置,其中所述指令譯碼器響應(yīng)指定位值預(yù)定組合的所述第一操作數(shù)字段和第二操作數(shù)字段的所述至少一個,來控制所述處理電路以執(zhí)行所述條件式比較運(yùn)算,并且,所述第一操作數(shù)和第二操作數(shù)的對應(yīng)的一個具有零值。
13.如權(quán)利要求10至12中的任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所述第一操作數(shù)字段和第二操作數(shù)字段中的一個將立即值指定為所述第一操作數(shù)或所述第二操作數(shù)。
14.如前述權(quán)利要求中的任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所述比較運(yùn)算包括以下步驟的任意一個 (a)將所述第一操作數(shù)減去所述第二操作數(shù); (b)將所述第一操作數(shù)加上所述第二操作數(shù); (C)對所述第一操作數(shù)與所述第二操作數(shù)執(zhí)行按位異或運(yùn)算; (d)對所述第一操作數(shù)和所述第二操作數(shù)執(zhí)行按位與運(yùn)算; (e)將所述第一操作數(shù)、所述第二操作數(shù)、一級所述狀態(tài)存儲器的進(jìn)位位相加;以及 (f)對所述第一操作數(shù)和所述第二操作數(shù)執(zhí)行按位或運(yùn)算。
15.一種數(shù)據(jù)處理裝置,包括 處理部件,用于處理數(shù)據(jù); 指令譯碼器部件,用于響應(yīng)于程序指令以生成控制信號,所述控制信號用于控制所述處理部件以處理所述數(shù)據(jù); 狀態(tài)存儲器部件,用于存儲所述處理部件的當(dāng)前條件狀態(tài),所述當(dāng)前條件狀態(tài)在處理所述數(shù)據(jù)期間為可修改的; 其中所述等程序指令包括條件式比較指令,并且,所述指令譯碼器部件響應(yīng)于所述條件式比較指令以生成用于控制所述處理部件以執(zhí)行條件式比較運(yùn)算的控制信號,所述條件式比較運(yùn)算包括 (i)如果所述當(dāng)前條件狀態(tài)通過測試條件,則對第一操作數(shù)和第二操作數(shù)執(zhí)行比較運(yùn)算,并且,設(shè)定所述當(dāng)前條件狀態(tài)為在所述比較運(yùn)算期間生成的結(jié)果條件狀態(tài);以及 ( )如果所述當(dāng)前條件狀態(tài)未通過所述測試條件,則設(shè)定所述當(dāng)前條件狀態(tài)為由所述條件式比較指令指定的未通過條件狀態(tài)。
16.一種數(shù)據(jù)處理方法,包括以下步驟 響應(yīng)于包括條件式比較指令的程序指令,生成用于控制處理電路以處理數(shù)據(jù)的控制信號; 存儲所述處理電路的當(dāng)前條件狀態(tài),所述當(dāng)前條件狀態(tài)在處理所述數(shù)據(jù)期間為可修改的; 響應(yīng)于所述條件式比較指令,生成用于控制所述處理電路以執(zhí)行條件式比較運(yùn)算的控制信號,所述條件式比較運(yùn)算包括 (i)如果所述當(dāng)前條件狀態(tài)通過測試條件,則對第一操作數(shù)和第二操作數(shù)執(zhí)行比較運(yùn)算,并且,設(shè)定所述當(dāng)前條件狀態(tài)為在所述比較運(yùn)算期間生成的結(jié)果條件狀態(tài);以及 ( )如果所述當(dāng)前條件狀態(tài)未通過所述測試條件,則設(shè)定所述當(dāng)前條件狀態(tài)為由所述條件式比較指令指定的未通過條件狀態(tài)。
17.—種編譯由數(shù)據(jù)處理裝置執(zhí)行的程序指令序列的方法,所述程序指令序列包括無條件式比較指令和至少一個條件式比較指令,所述無條件式比較指令用于控制所述數(shù)據(jù)處理裝置以對兩個操作數(shù)執(zhí)行無條件式比較運(yùn)算,并且,設(shè)定所述數(shù)據(jù)處理裝置的當(dāng)前條件狀態(tài)為在所述無條件式比較運(yùn)算期間生成的一結(jié)果條件狀態(tài),所述至少一個條件式比較指令用于控制所述數(shù)據(jù)處理裝置以執(zhí)行條件式比較運(yùn)算,所述條件式比較運(yùn)算包括(i)如果所述數(shù)據(jù)處理裝置的所述當(dāng)前條件狀態(tài)通過測試條件,則對第一操作數(shù)和第二操作數(shù)執(zhí)行比較運(yùn)算,并且,設(shè)定所述當(dāng)前條件狀態(tài)為在所述比較運(yùn)算期間生成的結(jié)果條件狀態(tài);以及(ii)如果所述當(dāng)前條件狀態(tài)未通過所述測試條件,則設(shè)定所述當(dāng)前條件狀態(tài)為由所述條件式比較指令指定的未通過條件狀態(tài);所述方法包括以下步驟 (a)接收數(shù)據(jù)的輸入,所述數(shù)據(jù)定義使用一個或多個與運(yùn)算或或運(yùn)算邏輯結(jié)合的N個比較運(yùn)算的序列鏈,其中N為大于I的整數(shù),所述N個比較運(yùn)算的每一個測試各自的操作數(shù)是否滿足各自的預(yù)定準(zhǔn)則; (b)生成對應(yīng)于所述序列鏈的第一個比較運(yùn)算的所述無條件式比較指令; (c)對于在2與N之間的每個整數(shù)值i,執(zhí)行下列步驟 (i)確定所述序列鏈的第i個比較運(yùn)算是使用與運(yùn)算或或運(yùn)算來與部分序列鏈的結(jié)果邏輯結(jié)合,所述部分序列鏈包括所述序列鏈的第一個至第i_l個比較運(yùn)算; ( )如果所述第i個比較運(yùn)算使用與運(yùn)算與所述部分序列鏈的所述結(jié)果邏輯結(jié)合,則生成對應(yīng)所述第i個比較運(yùn)算的條件式比較指令,所述條件式比較指令將在所述第i_l個比較運(yùn)算的所述預(yù)定準(zhǔn)則被滿足時(shí)通過的條件指定為所述測試條件,并且,將對應(yīng)所述第i個比較運(yùn)算的所述預(yù)定準(zhǔn)則未被滿足的條件狀態(tài)指定為所述未通過條件狀態(tài); (iii)如果所述第i個比較運(yùn)算使用或運(yùn)算與所述部分序列鏈的所述結(jié)果邏輯結(jié)合,則生成對應(yīng)所述第i個比較運(yùn)算的條件式比較指令,所述條件式比較指令將在所述第i_l個比較運(yùn)算的所述預(yù)定準(zhǔn)則未被滿足時(shí)通過的條件指定為所述測試條件,并且,將對應(yīng)所述第i個比較運(yùn)算的所述預(yù)定準(zhǔn)則被滿足的條件狀態(tài)指定為所述未通過條件狀態(tài); (d)將至少在步驟(b)中生成的所述無條件式比較指令與在步驟(c)中生成的N-I個所述條件式比較指令輸出為所述程序指令序列。
18.—種由在數(shù)據(jù)處理裝置上執(zhí)行的計(jì)算機(jī)程序提供的虛擬機(jī),所述虛擬機(jī)根據(jù)如申權(quán)利要求I至14中的任一項(xiàng)所述的數(shù)據(jù)處理裝置提供指令執(zhí)行環(huán)境。
19.一種存儲計(jì)算機(jī)程序的非瞬態(tài)計(jì)算機(jī)存儲媒體,所述計(jì)算機(jī)程序在由計(jì)算機(jī)執(zhí)行時(shí)控制所述計(jì)算機(jī)以執(zhí)行如權(quán)利要求17所述的方法。
20.一種存儲計(jì)算機(jī)程序的非瞬態(tài)計(jì)算機(jī)存儲媒體,所述計(jì)算機(jī)程序包括用于控制處理電路以執(zhí)行條件式比較運(yùn)算的條件式比較指令,所述條件式比較運(yùn)算包括 (i)如果所述處理電路的當(dāng)前條件狀態(tài)通過測試條件,則對第一操作數(shù)和第二操作數(shù)執(zhí)行比較運(yùn)算,并且,設(shè)定所述當(dāng)前條件狀態(tài)為在所述比較運(yùn)算期間生成的結(jié)果條件狀態(tài);以及 ( )如果所述當(dāng)前條件狀態(tài)未通過所述測試條件,則將所述當(dāng)前條件狀態(tài)設(shè)定為由所述條件式比較指令指定的未通過條件狀態(tài)。
全文摘要
指令譯碼器(14)響應(yīng)于條件式比較指令以生成用以控制處理電路(4)的控制信號以執(zhí)行條件式比較運(yùn)算。條件式比較運(yùn)算包括(i)如果處理電路(4)的當(dāng)前條件狀態(tài)通過測試條件,則對第一操作數(shù)和第二操作數(shù)執(zhí)行比較運(yùn)算,并且,設(shè)定當(dāng)前條件狀態(tài)為在比較運(yùn)算期間生成的結(jié)果條件狀態(tài);以及(ii)如果當(dāng)前條件狀態(tài)未通過測試條件,則設(shè)定當(dāng)前條件狀態(tài)為由條件式比較指令指定的未通過條件狀態(tài)。條件式比較指令可用以表示比較運(yùn)算的序列鏈,其中每個單個比較運(yùn)算可測試一對操作數(shù)之間的不同種類的關(guān)系。
文檔編號G06F9/32GK102893254SQ201180023699
公開日2013年1月23日 申請日期2011年4月12日 優(yōu)先權(quán)日2010年5月11日
發(fā)明者戴維·詹姆斯·西爾, 西蒙·約翰·克拉斯克 申請人:Arm 有限公司