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

文档序号:9432253阅读:210来源:国知局
解码被一个或多个其它指令修改的指令的制作方法
【专利说明】解码被一个或多个其它指令修改的指令
[0001]背景
[0002]计算机指令集用于将中央处理单元(CPU)执行的一组操作编码在程序内。最小化用于存储这些指令的存储器量是合乎需要的。例如,一个指令集可使用32比特来对指令编码。32比特的使用提供对富指令集的编码,但不允许更常见的操作使用更少的比特来被编码。另一指令集可使用16比特来对指令编码。16比特的使用提供高代码密度,但限制可被编码的指令的数量。
[0003]可使用较短的指令(例如16比特)来编码的有限数量的指令的一个解决方案是允许前面的指令修改当前指令的含义。前面的修改指令被称为前缀指令。以这种方式,常见的操作使用单个指令(例如16比特),而较不常见的指令使用两个指令(例如具有总共32比特的一个前缀指令和一个基本指令)。这提供在代码密度和指令的丰富性之间的良好折衷。
[0004]下面描述的实施方式仅作为例子被提供且不是解决已知计算机的任何或所有缺点的实现的限制。

【发明内容】

[0005]本
【发明内容】
被提供以介绍下面在【具体实施方式】中进一步描述的简化形式的一系列概念。该
【发明内容】
并不打算表明所主张的主题的关键特征或本质特征,其也不打算用作在确定所主张的主题的范围时的帮助。
[0006]方法和装置用于对计算机程序中的指令解码,其中所述指令包括由一个或多个其它指令进行修改的一个或多个基本指令。在例子中,在解码器处接收第一指令。解码器确定第一指令是否通过程序计数器的非递增变化(即程序中的跳转)而得到。如果第一指令通过程序计数器的非递增变化而得到,则解码器对紧靠的前面的指令解码以确定原始指令是否是基本指令(即由一个或多个其它指令进行修改的指令)。如果前面的指令指示原始指令是基本指令,则错误出现且异常处理代码被调用。
[0007]第一方面提供了在解码单元处对计算机程序的指令解码的方法,该方法包括:在解码单元处接收第一指令;在解码单元处确定第一指令是否通过程序计数器的非递增变化来调用;响应于确定第一指令通过程序计数器的非递增变化来调用,从取指单元请求第二指令,第二指令是紧靠程序中的第一指令的前面的指令;在解码单元处从取指单元接收第二指令;在解码单元处分析第二指令以确定第一指令是否是基本指令;以及响应于确定第一指令是基本指令,调用异常处理代码。
[0008]第二方面提供了在解码单元处对计算机程序的指令解码的方法,该方法包括:在解码单元处接收指令,指令包括至少一个修改符比特,修改符比特指示指令是否是基本指令,基本指令是由一个或多个其它指令进行修改的指令;在解码单元处分析至少一个修改符比特以确定所接收的指令是否是基本指令;响应于确定所接收的指令是基本指令,在解码单元处确定是否存在基本指令的预定数量的存储的前缀指令;以及响应于确定不存在基本指令的预定数量的存储的前缀指令,调用异常处理器代码。
[0009]第三方面提供了在解码单元处对计算机程序中的指令解码的方法,该方法包括:在解码单元处接收第一指令;从取指单元请求至少一个附加指令,所述至少一个附加指令中的每个指令跟随程序中的第一指令;在解码单元处接收所述至少一个附加指令,所述至少一个附加指令包括第一附加指令;确定第一附加指令是否是后缀指令,后缀指令是修改前面的指令的指令;响应于确定第一附加指令是后缀指令,在解码单元处使用第一附加指令来修改第一指令;以及响应于确定第一附加指令不是后缀指令,向执行单元提供第一指令和所述至少一个附加指令用于执行。
[0010]第四方面提供布置成执行计算机程序的数据处理装置,数据处理装置包括:程序存储器,其配置成存储计算机程序,计算机程序包括多个指令;程序计数器,其配置成识别程序存储器中的第一指令;取指单元,其配置成取回在程序存储器中的由程序计数器识别的第一指令;以及解码单元,其配置成:从取指单元接收第一指令;确定第一指令是否通过程序计数器的非递增变化来调用;响应于确定第一指令通过程序计数器的非递增变化来调用,从取指单元请求第二指令,第二指令是紧靠程序存储器中的第一指令的前面的指令;从取指单元接收第二指令;分析第二指令以确定第一指令是否是基本指令,基本指令是由至少一个其它指令进行修改的指令;以及响应于确定第一指令是基本指令,调用异常处理代码。
[0011]第五方面提供布置成执行计算机程序的数据处理装置,数据处理装置包括:程序存储器,其配置成存储计算机程序,计算机程序包括多个指令;程序计数器,其配置成识别程序存储器中的指令;取指单元,其配置成从程序存储器取回由程序计数器识别的指令;以及解码单元,其配置成:从取指单元接收指令,指令包括至少一个修改符比特,修改符比特指示指令是否是基本指令,基本指令是由至少一个其它指令进行修改的指令;以及在解码单元处分析至少一个修改符比特以确定所接收的指令是否是基本指令;响应于确定所接收的指令是基本指令,确定是否存在基本指令的预定数量的存储的前缀指令;以及响应于确定不存在基本指令的预定数量的存储的前缀指令,调用异常处理器代码。
[0012]第六方面提供布置成执行计算机程序的数据处理装置,数据处理装置包括:程序存储器,其配置成存储计算机程序,计算机程序包括多个指令;程序计数器,其配置成指示程序存储器中的第一指令;取指单元,其配置成从程序存储器取回如由程序计数器指示的第一指令;以及解码单元,其配置成:从取指单元接收第一指令;从取指单元请求至少一个附加指令,所述至少一个附加指令中的每个指令跟随程序存储器中的第一指令;接收所述至少一个附加指令,所述至少一个附加指令包括第一附加指令;确定第一附加指令是否是后缀指令,后缀指令是修改前面的指令的指令;响应于确定第一附加指令是后缀指令,使用第一后缀指令来修改第一指令;以及响应于确定第一附加指令不是后缀指令,向执行单元提供第一指令和所述至少一个附加指令用于执行。
[0013]第七方面提供编译器以将多个指令存储在程序存储器中,编译器包括处理器,其配置成:接收多个指令,多个指令包括一个或多个基本指令和每个基本指令的至少一个相应的修改指令;分析多个指令以识别每个基本指令及其至少一个相应的修改指令;以及在程序存储器中存储每个基本指令及其相应的至少一个修改指令,使得每个基本指令及其相应的修改指令在程序存储器内的边界的同一侧上。
[0014]第八方面提供计算机可读存储介质,其具有在其上编码的用于产生第四方面的数据处理装置的计算机可读程序代码。
[0015]第九方面提供计算机可读存储介质,其具有在其上编码的用于产生配置成执行第一方面的方法的数据处理装置的计算机可读程序代码。
[0016]第十方面提供计算机可读存储介质,其具有在其上编码的用于产生第五方面的数据处理装置的计算机可读程序代码。
[0017]第十一方面提供计算机可读存储介质,其具有在其上编码的用于产生配置成执行第二方面的方法的数据处理装置的计算机可读程序代码。
[0018]第十二方面提供计算机可读存储介质,其具有在其上编码的用于产生第六方面的数据处理装置的计算机可读程序代码。
[0019]第十三方面提供计算机可读存储介质,其具有在其上编码的用于产生配置成执行第三方面的方法的数据处理装置的计算机可读程序代码。
[0020]第十四方面提供实质上如同参考图3描述的解码指令的方法。
[0021]第十五方面提供实质上如同参考图5描述的解码指令的方法。
[0022]第十六方面提供实质上如同参考图8描述的解码指令的方法。
[0023]第十七方面提供实质上如同参考图10描述的解码指令的方法。
[0024]如将对技术人员明显的是,优选的特征可在适当时被组合,并可与本发明的任何方面组合。
【附图说明】
[0025]将参考下面的附图以例子的方式描述本发明的实施方式,其中:
[0026]图1是示例数据处理装置的示意图;
[0027]图2示出根据第一实施方式对指令解码的方法的例子;
[0028]图3是图2的方法的流程图;
[0029]图4示出根据第二实施方式对指令解码的方法的例子;
[0030]图5是图4的方法的流程图;
[0031]图6示出根据第三实施方式对指令解码的方法的例子;
[0032]图7示出图6的方法的第二个例子;
[0033]图8是图6和7的方法的流程图;
[0034]图9示出根据第四实施方式对指令解码的方法的例子;
[0035]图10是图9的方法的流程图;以及
[0036]图11示出在程序存储器中布置指令的方法的例子。
[0037]在全部附图中使用共同的参考数字来指示类似的特征。
【具体实施方式】
[0038]下面仅以例子的方式描述本发明的实施方式。这些例子代表申请人当前已知的实施本发明的最佳方式,但是其不是可实现本发明的唯一方式。该描述阐述例子的功能和用于构造和操作例子的步骤的顺序。然而,可通过不同的例子来实现相同或等效的功能和顺序。
[0039]上面描述的前缀指令方法的一个问题是在程序代码中存在不定性的可能性。如果机器(或观察者)从任意点开始读取,则在该点处的指令是否应受到来自前面的前缀指令的修改是不明确的。在程序代码中的计算的分支的普遍使用提供了代码执行可在代码内的任何偏移处开始的可能性。这种不定性因此意味着程序代码的作用变得非常难以预测。这可导致攻击安全应用中使用的代码的意外的错误或可能的方法。
[0040]例如,如果分支错误地跳转到应由前缀修改的指令,则程序将在指令未修改的情况下从这个点继续。这种不可预测的性质可能对程序操作是灾难性的。程序可继续运行一段时间,读取另外的指令和产生输出,直到引起程序中的错误或停止的某事发生。这使调试这种类型的错误变得很难,因为错误源是可能在一段时间之前出现的加上前缀的指令的分支。
[0041]在安全应用或安全性非常重要的应用的情况下,快速知道程序中某些部分已出错则很重要,使得错误可被控制。在后缀指令的分支的情况下,错误可能花费一些时间来显露自身,导致不确定的时期,其中程序操作是不可预测的。例如,这在程序控制核电站或银行业务系统的情况下将可能是非常有害的。
[0042]这种类型的错误也可出现在除了非法分支以外的情况中。例如,在太空应用(例如卫星)的情况下,在CPU内的一个或多个比特可被穿过宇宙飞船的高能粒子(即来自宇宙射线)反转。如果指令地址受到这样的比特反转,则所取出的指令不是所预期的指令。
[0043]除了递增到下一指令以外的程序计数器的任何变化在本文都将被称为程序中的“跳转”。如在上面描述的,例如,跳转可由程序中的分支或外部因素(例如穿过计算机的高能粒子)引起。“非法跳转”是使程序前往不能被合法执行的指令的跳转。例如,直接使程序前往加上前缀的基本指令的分支指令引起非法跳转,因为基本指令不能在没有其前缀的情况下被合法地执行。“非法分支”是引起非法跳转的分支指令。
[0044]本文描述的实施方式涉及用于对指令解码的方法和数据处理装置,指令包括允许使到基本指令的非法跳转容易被识别出的基本指令。在第一实施方式中,指令的一个或多个比特用于指示当前指令是否由另一指令进行修改。在第二实施方式中,当前指令和前面的指令都被取出并被解码以确定当前指令是否由前面的指令进行修改。在第三实施方式中,指令由后缀指令(即在当前指令后面的指令)而不是由前缀指令(即在当前指令前面的指令)修改,且当前指令和后面的指令都被取出并被解码以确定当前指令是否由后面的指令进行修改。在第四实施方式中,指令由后缀指令
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1