本发明专利技术公开了一种寄存器调用及调用指令编码的方法、装置。其中,寄存器调用指令编码的方法包括以下步骤:判断需要保存的寄存器的数量,并得到需要保存的寄存器的第一数量值;将第一数量值写入到寄存器调用的初始指令中,并编码生成寄存器调用指令。其在寄存器指令编码中以需要保存的寄存器的数量的形式进行编码,而不是以位于寄存器一一对应的方式保存寄存器的标示,从而实现占用寄存器调用指令中较少的位保存较多的寄存器的目的,大大缩短寄存器调用指令的长度,有效减少长指令的使用。提高寄存器调用指令的编码的效率。
【技术实现步骤摘要】
本专利技术涉及计算机
,尤其涉及一种寄存器调用及调用指令编码的方法、装置。
技术介绍
CPU(CentralProcessingUnit,中央处理器)在执行程序时,会调用一个或者多个特殊的寄存器或者寄存器组,这些寄存器组在ARM处理器中一般命名为R0、R1以及R2等。而在X86处理器中,寄存器一般会被称为ax、es以及ds等。这些寄存器是和处理器本省相关的,一般对于一个固定的处理器其可用的寄存器数量是有限的。CPU在执行程序时,有时需要将部分寄存在保存到堆栈中。如CPU在调用一个函数时,需要将若干个寄存器的值进行保存,并在函数返回时再将其释放恢复。在传统技术中,为了保存寄存器,CPU在进行指令编码时,会对每一个寄存器留出一个位。这样在进行指令编码时,寄存器占用的编码空间较多,造成指令编码过长。
技术实现思路
基于此,有必要针对传统技术中指令编码时,寄存器占用的编码空间较多的问题,提供一种利用较短的指令编码实现存储较多数量的寄存器的寄存器调用指令编码的方法、装置以及相配套的寄存器调用的方法及装置。为实现本专利技术目的提供的一种寄存器调用指令编码的方法,所述方法包括以下步骤:判断需要保存的寄存器的数量,并得到需要保存的寄存器的第一数量值;将所述第一数量值写入到寄存器调用的初始指令中,并编码生成寄存器调用指令。在其中一个实施例中,所述寄存器调用指令包括操作码部分和内容部分;所述初始指令中包括与所述操作码部分相对应的部分以及与所述内容部分相对应的部分;所述将所述第一数量值写入到寄存器调用的初始指令中,包括将所述第一数量值写入到所述寄存器调用的初始指令中与所述内容部分相对应的部分中,以使所述第一数量值最终在所述寄存器调用指令的内容部分中。在其中一个实施例中,所述方法还包括获取处理器中可用寄存器的数量的步骤;且所述判断需要保存的寄存器的数量,并得到需要保存的寄存器的第一数量值之后,还包括以下步骤:判断所述第一数量值是否小于或者等于所述可用寄存器的数量;若是,则继续执行所述将所述第一数量值写入到寄存器调用的初始指令中,并编码生成寄存器调用指令的步骤;若否,则将所述可用寄存器的数量写入到所述寄存器调用的初始指令中,并编码生成寄存器调用指令,或者发出内存不足报警。在其中一个实施例中,所述装置包括:保存寄存器数量获取模块,用于判断需要保存的寄存器的数量,并得到需要保存的寄存器的第一数量值;第一编码模块,用于将所述第一数量值写入到寄存器调用的初始指令中,并编码生成寄存器调用指令。在其中一个实施例中,所述装置还包括:可用寄存器的数量获取模块,用于获取处理器中可用寄存器的数量;数量判断模块,用于在所述保存寄存器数量获取模块获取到需要保存的寄存器的第一数量值后,判断所述第一数量值是否小于或者等于所述可用寄存器的数量;若是,则继续执行所述第一编码模块;若否,则执行第二编码模块或者报警模块;所述第二编码模块,用于将所述可用寄存器的数量写入到所述寄存器调用的初始指令中,并编码生成寄存器调用指令;所述报警模块,用于发出内存不足报警。基于同一专利技术构思的一种寄存器调用的方法,所述方法包括以下步骤:接收寄存器调用指令;解析所述寄存器调用指令,并得到所述寄存器调用指令中包含的需要保存的寄存器的第一数量值;根据处理器中预设的寄存器保存的入口点及所述处理器中寄存器的保存顺序,从所述入口点开始按照所述保存顺序依次保存第一数量值个数的寄存器到堆栈中。在其中一个实施例中,所述方法还包括以下步骤:已经保存到堆栈中的寄存器使用完成后,释放所述堆栈中的所述第一数量值个数的寄存器。在其中一个实施例中,当所述处理器中包含一个寄存器组时,所述保存顺序为所述处理器中寄存器标示从小到大的顺序,或者为所述寄存器标示从大到小的顺序,或者为根据所述寄存器标示预先设定的顺序,且所述根据所述寄存器标示预先设定的顺序与所述寄存器标示从大到小的顺序不同,所述根据所述寄存器标示预先设定的顺序与所述寄存器标示从小到大的顺序也不同。在其中一个实施例中,当所述处理器中包含两个以上寄存器组时,将每个寄存器组中的寄存器按照寄存器标示从小到大排列或者从大到小排列,或者根据所述寄存器标示预先设定的顺序进行排列,再根据所述寄存器组的预设顺序按组对所述寄存器进行排列构成所述保护顺序。基于同一专利技术构思的一种寄存器调用的装置,所述装置包括:指令接收模块,用于接收寄存器调用指令;解析模块,用于解析所述寄存器调用指令,并得到所述寄存器调用指令中包含的需要保存的寄存器的第一数量值;保存模块,用于根据处理器中预设的寄存器保存的入口点及所述处理器中寄存器的保存顺序,从所述入口点开始按照所述保存顺序依次保存第一数量值个数的寄存器到堆栈中。在其中一个实施例中,所述装置还包括:寄存器释放模块,用于已经保存到堆栈中的寄存器使用完成后,释放所述堆栈中的所述第一数量值个数的寄存器。本专利技术的有益效果包括:本专利技术提供的一种寄存器调用指令编码的方法,判断CPU执行的当前步骤需要保存的寄存器的数量,并得到需要保存的寄存器的第一数量值,并进一步将所述第一数量值写入到寄存器调用的初始指令中,并编码生成寄存器调用指令。其在寄存器指令编码中以需要保存的寄存器的数量的形式进行编码,而不是以位于寄存器一一对应的方式保存寄存器的标示,从而实现占用寄存器调用指令中较少的位保存较多的寄存器的目的,大大缩短寄存器调用指令的长度,有效减少长指令的使用。提高寄存器调用指令的编码的效率。同时提供的配套使用的寄存器调用的方法使用前述寄存器调用指令编码的方法生成的寄存器调用指令,实现使用较短的寄存器调用指令保存较多的寄存器到堆栈中的功能。附图说明图1为一实施例的寄存器调用指令编码的方法的流程图;图2为另一实施例的寄存器调用指令编码的方法的流程图;图3为再一实施例的寄存器调用指令编码的方法的流程图;图4为一实施例的寄存器调用指令编码的装置的构成示意图;图5为另一实施例的寄存器调用指令编码的装置的构成示意图;图6为再一实施例的寄存器调用指令编码的装置的构成示意图;图7为一实施例的寄存器调用的方法的流程图;图8(a)至图8(c)为一实施例的寄存器调用的方法中寄存器的保存顺序为顺序排列的寄存器保存执行示意图;图9(a)至图9(c)为一实施例的寄存器调用的方法中寄存器的保存顺序为随机排序的寄存器保存执行示意图;图10为另一实施例的寄存器调用的方法的流程图;图11为一实施例的寄存器调用的装置的构成示意图;图12为另一实施例的寄存器调用的装置的构成示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图对本专利技术的寄存器调用指令编码的方法、装置以及寄存器调调用的方法及装置的具体实施方式进行说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。如图1所示,在其中一个实施例的寄存器调用指令编码的方法包括以下步骤:S100,判断需要保存的寄存器的数量,并得到需要保存的寄存器的第一数量值。需要说明的是,本实施例的寄存器调用指令编码的方法适用于X86处理器及ARM等处理器在执行一些功能过程中需要调用寄存器(将寄存器保存到堆栈中)的情况。且本实施例中及本文件中其他实施例中所提及的寄存器均为CPU在执行程序过程中可调用的,即能够保存到堆栈本文档来自技高网...
【技术保护点】
一种寄存器调用指令编码的方法,其特征在于,所述方法包括以下步骤:判断需要保存的寄存器的数量,并得到所述需要保存的寄存器的第一数量值;将所述第一数量值写入到寄存器调用的初始指令中,并编码生成寄存器调用指令。
【技术特征摘要】
1.一种寄存器调用指令编码的方法,其特征在于,所述方法包括以下步骤:判断需要保存的寄存器的数量,并得到所述需要保存的寄存器的第一数量值;将所述第一数量值写入到寄存器调用的初始指令中,并编码生成寄存器调用指令。2.根据权利要求1所述的寄存器调用指令编码的方法,其特征在于,所述寄存器调用指令包括操作码部分和内容部分;所述初始指令中包括与所述操作码部分相对应的部分以及与所述内容部分相对应的部分;所述将所述第一数量值写入到寄存器调用的初始指令中,包括将所述第一数量值写入到所述寄存器调用的初始指令中与所述内容部分相对应的部分中,以使所述第一数量值最终在所述寄存器调用指令的内容部分中。3.根据权利要求1所述的寄存器调用指令编码的方法,其特征在于,所述方法还包括获取处理器中可用寄存器的数量的步骤;且所述判断需要保存的寄存器的数量,并得到需要保存的寄存器的第一数量值之后,还包括以下步骤:判断所述第一数量值是否小于或者等于所述可用寄存器的数量;若是,则继续执行所述将所述第一数量值写入到寄存器调用的初始指令中,并编码生成寄存器调用指令的步骤;若否,则将所述可用寄存器的数量写入到所述寄存器调用的初始指令中,并编码生成寄存器调用指令,或者发出内存不足报警。4.一种寄存器调用指令编码的装置,其特征在于,所述装置包括:保存寄存器数量获取模块,用于判断需要保存的寄存器的数量,并得到需要保存的寄存器的第一数量值;第一编码模块,用于将所述第一数量值写入到寄存器调用的初始指令中,并编码生成寄存器调用指令。5.根据权利要求4所述的寄存器调用指令编码的装置,其特征在于,所述装置还包括:可用寄存器的数量获取模块,用于获取处理器中可用寄存器的数量;数量判断模块,用于在所述保存寄存器数量获取模块获取到需要保存的寄存器的第一数量值后,判断所述第一数量值是否小于或者等于所述可用寄存器的数量;若是,则继续执行所述第一编码模块;若否,则执行第二编码模块或者报警模块;所述第二编码模块,用于将所述可用寄存器的数量写入到所述寄存器调...
【专利技术属性】
技术研发人员:胡向军,
申请(专利权)人:珠海市杰理科技有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。