国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      解碼被一個或多個其它指令修改的指令的制作方法

      文檔序號:9432253閱讀:235來源:國知局
      解碼被一個或多個其它指令修改的指令的制作方法
      【專利說明】解碼被一個或多個其它指令修改的指令
      [0001]背景
      [0002]計算機(jī)指令集用于將中央處理單元(CPU)執(zhí)行的一組操作編碼在程序內(nèi)。最小化用于存儲這些指令的存儲器量是合乎需要的。例如,一個指令集可使用32比特來對指令編碼。32比特的使用提供對富指令集的編碼,但不允許更常見的操作使用更少的比特來被編碼。另一指令集可使用16比特來對指令編碼。16比特的使用提供高代碼密度,但限制可被編碼的指令的數(shù)量。
      [0003]可使用較短的指令(例如16比特)來編碼的有限數(shù)量的指令的一個解決方案是允許前面的指令修改當(dāng)前指令的含義。前面的修改指令被稱為前綴指令。以這種方式,常見的操作使用單個指令(例如16比特),而較不常見的指令使用兩個指令(例如具有總共32比特的一個前綴指令和一個基本指令)。這提供在代碼密度和指令的豐富性之間的良好折衷。
      [0004]下面描述的實(shí)施方式僅作為例子被提供且不是解決已知計算機(jī)的任何或所有缺點(diǎn)的實(shí)現(xiàn)的限制。

      【發(fā)明內(nèi)容】

      [0005]本
      【發(fā)明內(nèi)容】
      被提供以介紹下面在【具體實(shí)施方式】中進(jìn)一步描述的簡化形式的一系列概念。該
      【發(fā)明內(nèi)容】
      并不打算表明所主張的主題的關(guān)鍵特征或本質(zhì)特征,其也不打算用作在確定所主張的主題的范圍時的幫助。
      [0006]方法和裝置用于對計算機(jī)程序中的指令解碼,其中所述指令包括由一個或多個其它指令進(jìn)行修改的一個或多個基本指令。在例子中,在解碼器處接收第一指令。解碼器確定第一指令是否通過程序計數(shù)器的非遞增變化(即程序中的跳轉(zhuǎn))而得到。如果第一指令通過程序計數(shù)器的非遞增變化而得到,則解碼器對緊靠的前面的指令解碼以確定原始指令是否是基本指令(即由一個或多個其它指令進(jìn)行修改的指令)。如果前面的指令指示原始指令是基本指令,則錯誤出現(xiàn)且異常處理代碼被調(diào)用。
      [0007]第一方面提供了在解碼單元處對計算機(jī)程序的指令解碼的方法,該方法包括:在解碼單元處接收第一指令;在解碼單元處確定第一指令是否通過程序計數(shù)器的非遞增變化來調(diào)用;響應(yīng)于確定第一指令通過程序計數(shù)器的非遞增變化來調(diào)用,從取指單元請求第二指令,第二指令是緊靠程序中的第一指令的前面的指令;在解碼單元處從取指單元接收第二指令;在解碼單元處分析第二指令以確定第一指令是否是基本指令;以及響應(yīng)于確定第一指令是基本指令,調(diào)用異常處理代碼。
      [0008]第二方面提供了在解碼單元處對計算機(jī)程序的指令解碼的方法,該方法包括:在解碼單元處接收指令,指令包括至少一個修改符比特,修改符比特指示指令是否是基本指令,基本指令是由一個或多個其它指令進(jìn)行修改的指令;在解碼單元處分析至少一個修改符比特以確定所接收的指令是否是基本指令;響應(yīng)于確定所接收的指令是基本指令,在解碼單元處確定是否存在基本指令的預(yù)定數(shù)量的存儲的前綴指令;以及響應(yīng)于確定不存在基本指令的預(yù)定數(shù)量的存儲的前綴指令,調(diào)用異常處理器代碼。
      [0009]第三方面提供了在解碼單元處對計算機(jī)程序中的指令解碼的方法,該方法包括:在解碼單元處接收第一指令;從取指單元請求至少一個附加指令,所述至少一個附加指令中的每個指令跟隨程序中的第一指令;在解碼單元處接收所述至少一個附加指令,所述至少一個附加指令包括第一附加指令;確定第一附加指令是否是后綴指令,后綴指令是修改前面的指令的指令;響應(yīng)于確定第一附加指令是后綴指令,在解碼單元處使用第一附加指令來修改第一指令;以及響應(yīng)于確定第一附加指令不是后綴指令,向執(zhí)行單元提供第一指令和所述至少一個附加指令用于執(zhí)行。
      [0010]第四方面提供布置成執(zhí)行計算機(jī)程序的數(shù)據(jù)處理裝置,數(shù)據(jù)處理裝置包括:程序存儲器,其配置成存儲計算機(jī)程序,計算機(jī)程序包括多個指令;程序計數(shù)器,其配置成識別程序存儲器中的第一指令;取指單元,其配置成取回在程序存儲器中的由程序計數(shù)器識別的第一指令;以及解碼單元,其配置成:從取指單元接收第一指令;確定第一指令是否通過程序計數(shù)器的非遞增變化來調(diào)用;響應(yīng)于確定第一指令通過程序計數(shù)器的非遞增變化來調(diào)用,從取指單元請求第二指令,第二指令是緊靠程序存儲器中的第一指令的前面的指令;從取指單元接收第二指令;分析第二指令以確定第一指令是否是基本指令,基本指令是由至少一個其它指令進(jìn)行修改的指令;以及響應(yīng)于確定第一指令是基本指令,調(diào)用異常處理代碼。
      [0011]第五方面提供布置成執(zhí)行計算機(jī)程序的數(shù)據(jù)處理裝置,數(shù)據(jù)處理裝置包括:程序存儲器,其配置成存儲計算機(jī)程序,計算機(jī)程序包括多個指令;程序計數(shù)器,其配置成識別程序存儲器中的指令;取指單元,其配置成從程序存儲器取回由程序計數(shù)器識別的指令;以及解碼單元,其配置成:從取指單元接收指令,指令包括至少一個修改符比特,修改符比特指示指令是否是基本指令,基本指令是由至少一個其它指令進(jìn)行修改的指令;以及在解碼單元處分析至少一個修改符比特以確定所接收的指令是否是基本指令;響應(yīng)于確定所接收的指令是基本指令,確定是否存在基本指令的預(yù)定數(shù)量的存儲的前綴指令;以及響應(yīng)于確定不存在基本指令的預(yù)定數(shù)量的存儲的前綴指令,調(diào)用異常處理器代碼。
      [0012]第六方面提供布置成執(zhí)行計算機(jī)程序的數(shù)據(jù)處理裝置,數(shù)據(jù)處理裝置包括:程序存儲器,其配置成存儲計算機(jī)程序,計算機(jī)程序包括多個指令;程序計數(shù)器,其配置成指示程序存儲器中的第一指令;取指單元,其配置成從程序存儲器取回如由程序計數(shù)器指示的第一指令;以及解碼單元,其配置成:從取指單元接收第一指令;從取指單元請求至少一個附加指令,所述至少一個附加指令中的每個指令跟隨程序存儲器中的第一指令;接收所述至少一個附加指令,所述至少一個附加指令包括第一附加指令;確定第一附加指令是否是后綴指令,后綴指令是修改前面的指令的指令;響應(yīng)于確定第一附加指令是后綴指令,使用第一后綴指令來修改第一指令;以及響應(yīng)于確定第一附加指令不是后綴指令,向執(zhí)行單元提供第一指令和所述至少一個附加指令用于執(zhí)行。
      [0013]第七方面提供編譯器以將多個指令存儲在程序存儲器中,編譯器包括處理器,其配置成:接收多個指令,多個指令包括一個或多個基本指令和每個基本指令的至少一個相應(yīng)的修改指令;分析多個指令以識別每個基本指令及其至少一個相應(yīng)的修改指令;以及在程序存儲器中存儲每個基本指令及其相應(yīng)的至少一個修改指令,使得每個基本指令及其相應(yīng)的修改指令在程序存儲器內(nèi)的邊界的同一側(cè)上。
      [0014]第八方面提供計算機(jī)可讀存儲介質(zhì),其具有在其上編碼的用于產(chǎn)生第四方面的數(shù)據(jù)處理裝置的計算機(jī)可讀程序代碼。
      [0015]第九方面提供計算機(jī)可讀存儲介質(zhì),其具有在其上編碼的用于產(chǎn)生配置成執(zhí)行第一方面的方法的數(shù)據(jù)處理裝置的計算機(jī)可讀程序代碼。
      [0016]第十方面提供計算機(jī)可讀存儲介質(zhì),其具有在其上編碼的用于產(chǎn)生第五方面的數(shù)據(jù)處理裝置的計算機(jī)可讀程序代碼。
      [0017]第十一方面提供計算機(jī)可讀存儲介質(zhì),其具有在其上編碼的用于產(chǎn)生配置成執(zhí)行第二方面的方法的數(shù)據(jù)處理裝置的計算機(jī)可讀程序代碼。
      [0018]第十二方面提供計算機(jī)可讀存儲介質(zhì),其具有在其上編碼的用于產(chǎn)生第六方面的數(shù)據(jù)處理裝置的計算機(jī)可讀程序代碼。
      [0019]第十三方面提供計算機(jī)可讀存儲介質(zhì),其具有在其上編碼的用于產(chǎn)生配置成執(zhí)行第三方面的方法的數(shù)據(jù)處理裝置的計算機(jī)可讀程序代碼。
      [0020]第十四方面提供實(shí)質(zhì)上如同參考圖3描述的解碼指令的方法。
      [0021]第十五方面提供實(shí)質(zhì)上如同參考圖5描述的解碼指令的方法。
      [0022]第十六方面提供實(shí)質(zhì)上如同參考圖8描述的解碼指令的方法。
      [0023]第十七方面提供實(shí)質(zhì)上如同參考圖10描述的解碼指令的方法。
      [0024]如將對技術(shù)人員明顯的是,優(yōu)選的特征可在適當(dāng)時被組合,并可與本發(fā)明的任何方面組合。
      【附圖說明】
      [0025]將參考下面的附圖以例子的方式描述本發(fā)明的實(shí)施方式,其中:
      [0026]圖1是示例數(shù)據(jù)處理裝置的示意圖;
      [0027]圖2示出根據(jù)第一實(shí)施方式對指令解碼的方法的例子;
      [0028]圖3是圖2的方法的流程圖;
      [0029]圖4示出根據(jù)第二實(shí)施方式對指令解碼的方法的例子;
      [0030]圖5是圖4的方法的流程圖;
      [0031]圖6示出根據(jù)第三實(shí)施方式對指令解碼的方法的例子;
      [0032]圖7示出圖6的方法的第二個例子;
      [0033]圖8是圖6和7的方法的流程圖;
      [0034]圖9示出根據(jù)第四實(shí)施方式對指令解碼的方法的例子;
      [0035]圖10是圖9的方法的流程圖;以及
      [0036]圖11示出在程序存儲器中布置指令的方法的例子。
      [0037]在全部附圖中使用共同的參考數(shù)字來指示類似的特征。
      【具體實(shí)施方式】
      [0038]下面僅以例子的方式描述本發(fā)明的實(shí)施方式。這些例子代表申請人當(dāng)前已知的實(shí)施本發(fā)明的最佳方式,但是其不是可實(shí)現(xiàn)本發(fā)明的唯一方式。該描述闡述例子的功能和用于構(gòu)造和操作例子的步驟的順序。然而,可通過不同的例子來實(shí)現(xiàn)相同或等效的功能和順序。
      [0039]上面描述的前綴指令方法的一個問題是在程序代碼中存在不定性的可能性。如果機(jī)器(或觀察者)從任意點(diǎn)開始讀取,則在該點(diǎn)處的指令是否應(yīng)受到來自前面的前綴指令的修改是不明確的。在程序代碼中的計算的分支的普遍使用提供了代碼執(zhí)行可在代碼內(nèi)的任何偏移處開始的可能性。這種不定性因此意味著程序代碼的作用變得非常難以預(yù)測。這可導(dǎo)致攻擊安全應(yīng)用中使用的代碼的意外的錯誤或可能的方法。
      [0040]例如,如果分支錯誤地跳轉(zhuǎn)到應(yīng)由前綴修改的指令,則程序?qū)⒃谥噶钗葱薷牡那闆r下從這個點(diǎn)繼續(xù)。這種不可預(yù)測的性質(zhì)可能對程序操作是災(zāi)難性的。程序可繼續(xù)運(yùn)行一段時間,讀取另外的指令和產(chǎn)生輸出,直到引起程序中的錯誤或停止的某事發(fā)生。這使調(diào)試這種類型的錯誤變得很難,因?yàn)殄e誤源是可能在一段時間之前出現(xiàn)的加上前綴的指令的分支。
      [0041]在安全應(yīng)用或安全性非常重要的應(yīng)用的情況下,快速知道程序中某些部分已出錯則很重要,使得錯誤可被控制。在后綴指令的分支的情況下,錯誤可能花費(fèi)一些時間來顯露自身,導(dǎo)致不確定的時期,其中程序操作是不可預(yù)測的。例如,這在程序控制核電站或銀行業(yè)務(wù)系統(tǒng)的情況下將可能是非常有害的。
      [0042]這種類型的錯誤也可出現(xiàn)在除了非法分支以外的情況中。例如,在太空應(yīng)用(例如衛(wèi)星)的情況下,在CPU內(nèi)的一個或多個比特可被穿過宇宙飛船的高能粒子(即來自宇宙射線)反轉(zhuǎn)。如果指令地址受到這樣的比特反轉(zhuǎn),則所取出的指令不是所預(yù)期的指令。
      [0043]除了遞增到下一指令以外的程序計數(shù)器的任何變化在本文都將被稱為程序中的“跳轉(zhuǎn)”。如在上面描述的,例如,跳轉(zhuǎn)可由程序中的分支或外部因素(例如穿過計算機(jī)的高能粒子)引起?!胺欠ㄌD(zhuǎn)”是使程序前往不能被合法執(zhí)行的指令的跳轉(zhuǎn)。例如,直接使程序前往加上前綴的基本指令的分支指令引起非法跳轉(zhuǎn),因?yàn)榛局噶畈荒茉跊]有其前綴的情況下被合法地執(zhí)行?!胺欠ǚ种А笔且鸱欠ㄌD(zhuǎn)的分支指令。
      [0044]本文描述的實(shí)施方式涉及用于對指令解碼的方法和數(shù)據(jù)處理裝置,指令包括允許使到基本指令的非法跳轉(zhuǎn)容易被識別出的基本指令。在第一實(shí)施方式中,指令的一個或多個比特用于指示當(dāng)前指令是否由另一指令進(jìn)行修改。在第二實(shí)施方式中,當(dāng)前指令和前面的指令都被取出并被解碼以確定當(dāng)前指令是否由前面的指令進(jìn)行修改。在第三實(shí)施方式中,指令由后綴指令(即在當(dāng)前指令后面的指令)而不是由前綴指令(即在當(dāng)前指令前面的指令)修改,且當(dāng)前指令和后面的指令都被取出并被解碼以確定當(dāng)前指令是否由后面的指令進(jìn)行修改。在第四實(shí)施方式中,指令由后綴指令
      當(dāng)前第1頁1 2 3 4 5 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1