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