一种指令控制方法、装置及电子设备与流程

文档序号:33541156发布日期:2023-03-22 09:13阅读:35来源:国知局
一种指令控制方法、装置及电子设备与流程

1.本发明涉及计算机技术领域,尤其涉及一种指令控制方法、装置及电子设备。


背景技术:

2.现有技术中,当软件程序中的指令编写完成之后,处理器会按照既定程序依次执行各条指令。当其中某一条或者某几条指令不再需要执行时,一般是在该某一条或者某几条指令前面增加跳转指令,通过跳转动作避开该某一条或者某几条指令。
3.然而,在实际操作中,跳转动作会导致处理器内部的性能开销比较大,降低软件程序的运行效率。


技术实现要素:

4.本发明实施例提供一种指令控制方法、装置及电子设备,可以解决现有技术中无法高效将某些指令进行无效化处理的问题。
5.为了解决上述问题,本发明实施例公开了一种指令控制方法,所述方法包括:
6.识别目标程序中的待控制指令,并将所述待控制指令修改为目标指令;
7.获取控制状态寄存器的使能状态信息;
8.根据所述使能状态信息确定是否对所述目标指令对应的使能控制位进行标记;
9.若所述目标指令对应的使能控制位被标记,则确定所述目标指令为无效指令,并顺序执行下一条指令;
10.其中,所述目标指令满足以下至少一项:
11.所述目标指令的操作码为目标操作码,所述目标操作码用于指示所述目标指令被所述控制状态寄存器控制;
12.所述目标指令之前插入有至少一条前缀控制指令,所述前缀控制指令用于指示所述目标指令被控制状态寄存器控制。
13.另一方面,本发明实施例公开了一种指令控制装置,所述装置包括:
14.指令处理模块,用于识别目标程序中的待控制指令,并将所述待控制指令修改为目标指令;
15.信息获取模块,用于获取控制状态寄存器的使能状态信息;
16.控制位标记模块,用于根据所述使能状态信息确定是否对所述目标指令对应的使能控制位进行标记;
17.第一执行模块,用于若所述目标指令对应的使能控制位被标记,则确定所述目标指令为无效指令,并顺序执行下一条指令;
18.其中,所述目标指令满足以下至少一项:
19.所述目标指令的操作码为目标操作码,所述目标操作码用于指示所述目标指令被所述控制状态寄存器控制;
20.所述目标指令之前插入有至少一条前缀控制指令,所述前缀控制指令用于指示所
述目标指令被控制状态寄存器控制。
21.再一方面,本发明实施例还公开了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行前述的指令控制方法。
22.本发明实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的指令控制方法。
23.本发明实施例包括以下优点:
24.本发明实施例提供的指令控制方法,将需要进行无效化处理的待控制指令修改为目标指令,通过控制状态寄存器对目标指令进行控制,从而在每次执行目标指令之前,根据控制状态寄存器的使能状态信息判断是否对目标指令对应的使能控制位进行标记,并在目标指令对应的使能控制位被标记的情况下,处理器将目标指令确定为无效指令,忽略该目标指令并顺序执行下一条指令。相比于现有技术中通过增加跳转指令使得程序不执行某些指令,本发明实施例可以减少跳转指令的生成或内存数加载指令的生成,降低处理器内部的性能开销,提高软件程序的运行效率。
附图说明
25.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
26.图1是本发明的一种指令控制方法实施例的步骤流程图;
27.图2是本发明的一种目标指令的指令格式示意图;
28.图3是本发明的一种二进制翻译的基本块链接示意图;
29.图4是本发明的一种前缀控制指令的指令格式示意图;
30.图5是本发明的一种控制状态寄存器的使能控制位列表的示意图;
31.图6是本发明的另一种目标指令的指令格式示意图;
32.图7是本发明的又一种目标指令的指令格式示意图;
33.图8是本发明的一种指令控制装置实施例的结构框图;
34.图9是本发明实施例提供的一种用于指令控制的电子设备的结构示意图。
具体实施方式
35.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
36.方法实施例
37.参照图1,示出了本发明的一种指令控制方法实施例的步骤流程图,所述实施例的方法具体可以包括如下步骤:
38.步骤101、识别目标程序中的待控制指令,并将所述待控制指令修改为目标指令。
39.步骤102、获取控制状态寄存器的使能状态信息。
40.步骤103、根据所述使能状态信息确定是否对所述目标指令对应的使能控制位进行标记。
41.步骤104、若所述目标指令对应的使能控制位被标记,则确定所述目标指令为无效指令,并顺序执行下一条指令。
42.步骤105、若所述目标指令对应的使能控制位未被标记,则确定所述目标指令为有效指令,并执行所述目标指令。
43.本发明实施例提供的指令控制方法,可以将待控制指令修改为目标指令,利用控制状态寄存器对目标指令的执行或者不执行进行控制,以实现无效某一条或者某几条指令的目的,无需跳转操作,降低处理器的性能开销。
44.其中,目标程序可以为二进制翻译系统对源程序进行二进制翻译处理后得到的程序,待控制指令包括二进制翻译系统中基本块的跳转指令,所述跳转指令的目标跳转地址为下一个基本块的起始地址;或者,目标程序为其他需要自修改等操作的程序,例如需要代码混淆的程序,待控制指令包括对目标程序的原始代码进行代码混淆过程中生成的指令。
45.控制状态寄存器(control and status register,csr)是cpu(central processing unit,中央处理器)中必不可少的部件,用于记录、控制整个处理器内部的状态,操作系统及应用程序可以通过阅读或修改控制状态寄存器,以达到获取或改变处理器运行状态的目的。可以理解的是,控制状态寄存器中维护有使能控制位列表,其中,使能控制位列表中包含有多个目标指令,以及各个目标指令对应的使能控制位。当控制状态寄存器的使能状态信息表示控制状态寄存器处于使能状态时,对目标指令对应的使能控制位进行标记。
46.需要说明的是,在本发明实施例中,所述目标指令指的是可以被控制状态寄存器控制并无效化的指令。所述目标指令满足以下至少一项:
47.a1、所述目标指令的操作码为目标操作码,所述目标操作码用于指示所述目标指令被所述控制状态寄存器控制;
48.a2、所述目标指令之前插入有至少一条前缀控制指令,所述前缀控制指令用于指示所述目标指令被控制状态寄存器控制。
49.对于a1项,所述目标操作码用于指示所述目标指令被所述控制状态寄存器控制。区别于处理器中已经存在的通用指令、浮点指令、向量指令、特权指令等普通指令,本发明中的目标指令拥有特定的操作码,也即目标操作码,所述目标指令既可以完成处理器中存在的普通指令的功能,也可以被控制状态寄存器控制。参照图2,示出了本发明实施例提供的一种目标指令的指令格式示意图。其中,由控制状态寄存器控制的目标指令b的指令格式如图2所示,其中,c_b_opcode对应目标指令b的操作码,对照地, 图2还示出了一种普通指令b的指令格式,其中,b_opcode对应普通指令b的操作码。可以看出,普通指令b的指令格式与由控制状态寄存器控制的目标指令b的指令格式使用不一样的操作码,由控制状态寄存器控制的目标指令b的指令格式的操作码带有特定标识(如图2中的c_标识)。需要说明的是,目标指令的操作码中携带的特定标识并不限于c_,还可以是其他任何能够与普通指令区分开的标识。
50.对于a2项,所述目标指令之前插入有至少一条前缀控制指令,所述前缀控制指令用于指示所述目标指令被控制状态寄存器控制。其中,所述目标指令可以为处理器中任意一条需要被控制的指令,也即待控制指令。在本发明实施例中,除了通过修改指令的操作码,将普通指令转化为目标指令,还可以在待控制指令,也即目标指令之前插入一条前缀控制指令,通过前缀控制指令对目标指令进行管理。
51.可选地,所述目标指令与所述前缀控制指令满足以下条件:所述前缀控制指令的存储地址与所述目标指令的存储地址连续相邻,且所述前缀控制指令的存储地址在所述目标指令的存储地址之前。在本发明实施例中,前缀控制指令需要在目标指令之前执行完毕,这样才能通过前缀控制指令对目标指令进行标记,使得目标指令的执行过程受控制状态寄存器的控制。可以理解的是,现有的处理器执行方式分为两种,顺序执行和乱序执行。其中,顺序执行是指按照pc的取指顺序,一条一条的执行指令。乱序执行是指cpu采用了允许将多条指令不按程序规定的顺序分开发送给各相应电路单元处理。在本发明实施例中,前缀控制指令的存储地址与目标指令的存储地址连续相邻,且前缀控制指令的存储地址在目标指令的存储地址之前,从而无论是按照顺序执行的方式,还是乱序执行的方式,都可以保证前缀控制指令早于目标指令执行完毕。
52.本发明实施例中,处理器在执行目标指令之前,先获取控制状态寄存器的使能状态信息。其中,所述使能状态信息用于指示控制状态寄存器处于使能状态或者处于非使能状态。
53.根据控制状态寄存器的使能状态信息,可以确定是否对目标指令对应的使能控制位进行标记。具体地,如果使能状态信息为第一状态信息,则表示状态控制寄存器处于使能状态,此时需要对目标指令进行无效化处理,这种情况下,对所述目标指令对应的使能控制位进行标记。如果使能状态信息为第二状态信息,则表示控制状态寄存器处于非使能状态,此时不需要对目标指令进行无效化处理,因此不对目标指令对应的使能状态控制位进行标记。
54.如果目标指令对应的使能控制位被标记,说明控制状态寄存器需要对该目标指令进行无效处理,即忽略该目标指令,并顺序执行下一条指令。如果目标指令对应的使能控制位没有被标记,说明控制状态寄存器不对该目标指令进行无效处理,在这种情况下,可以正常执行该目标指令。
55.本发明实施例提供的指令控制方法,将需要进行无效化处理的待控制指令修改为目标指令,通过控制状态寄存器对目标指令进行控制,从而在每次执行目标指令之前,根据控制状态寄存器的使能状态信息判断是否对目标指令对应的使能控制位进行标记,并在目标指令对应的使能控制位被标记的情况下,处理器将目标指令确定为无效指令,从而忽略该目标指令并顺序执行下一条指令。相比于现有技术中通过增加跳转指令使得程序不执行某些指令,本发明实施例可以减少跳转指令的生成或内存数加载指令的生成,降低处理器内部的性能开销,提高软件程序的运行效率。
56.作为一种示例,本发明实施例提供的指令控制方法,可用于克服现有指令集中无法高效无效某些指令执行,特别用于二进制翻译过程中代码块链接解链动作,以及代码混淆中减少自修改代码生成等方面,以减小软件层面的开销,加速整体软件运行效率。
57.在本发明的一种可能的应用场景下,所述待控制指令可以是二进制翻译系统中基
本块的跳转指令,且该跳转指令用于链接两个基本块,即,所述跳转指令的目标跳转地址为下一个基本块的起始地址。其中,所述基本块为二进制翻译系统的基本工作单元。
58.二进制翻译指通过二进制翻译技术,将某isa(instruction set architecture,指令集架构)的应用程序(如x86)通过二进制翻译的方式运行在另一isa上(如非x86指令系统),以起到跨架构跨指令集程序兼容。然而,跨架构二进制翻译会有较大性能损失,为解决此问题,二进制翻译会引入一些优化手段,其中最重要的优化就是基本块链接技术。基本块链接做法是在每个基本块的结尾插入包含跳转到下一个基本块的分支指令的链接代码,这种普通的分支指令运行时会无条件的跳转到目标,也就是下一个基本块。但如果遇到二进制翻译的程序因为一些原因,如自修改代码等,需要退出时,就需要进行断链操作。断链操作在普通情况下会引入较大的开销。
59.参照图3,示出了本发明实施例提供的一种二进制翻译的基本块链接示意图。如图3所示,基本块1翻译的指令表示对基本块1进行翻译处理,在基本块1翻译完成之后,可以跳转到基本块2,对基本块2进行翻译,基本块1和基本块2并不一定是连续的两个基本块。其中,在每一个基本块的最后都有一些代码,用于进行下一个基本块的查找。这些代码主要分成两部分,第一部分用于基本块的链接,预留了一条跳转指令,用于直接跳转到下一个基本块。在第一次运行过程中,预留的跳转指令因为还没有被填充,所以此时相当于一个空操作,并不生效;在此基本块执行完成后,进入第二部分。第二部分用于退出到翻译器,让翻译器查找并跳转到下一个基本块。运行到下一个基本块后,翻译器会主动将下一个基本块的入口地址填入预留的跳转地址部分。当第二次运行此基本块时,不再需要进入第二部分,而是直接跳转到下一个基本块。
60.从图3中可以看到,为了达成断链的需求,需要将第一部分用于链接的跳转指令无效化。现有技术中为了实现对基本块的断链,通常是增加一些跳转指令,直接跳转到下一个基本块,而不执行第一部分中用于链接基本块的跳转指令。这种做法会引入较大的开销,影响程序的运行效率。
61.为了降低二进制翻译过程中基本块断链操作带来的开销,提高程序的运行效率,本发明实施例可以将二进制翻译系统中用于链接基本块的跳转指令修改为目标指令,利用控制状态寄存器对该跳转指令进行控制。具体地,可以将二进制翻译系统中用于链接基本块的跳转指令的操作码修改为目标操作码,所述目标操作码用于指示所述目标指令被所述控制状态寄存器控制。或者,也可以在二进制翻译系统中用于链接基本块的跳转指令之前插入一条前缀控制指令,通过前缀控制指令对目标指令进行无效化管理。
62.本发明在二进制翻译过程的基本块链接的解链过程中,通过控制状态寄存器的无效化动作,让原本的跳转指令无效化,以降低解链动作的开销。
63.在本发明的另一种可能的应用场景中,所述待控制指令可以是对原始代码进行代码混淆过程中生成的指令。示例性地,可以将代码混淆过程中产生的指令的操作码修改为目标操作码,从而将这些指令修改为目标指令;或者,也可以在每一条需要控制的指令之前插入一条前缀控制指令,将这些需要控制的指令修改为目标指令。
64.在实际应用中,为了避免外界通过工具和手段窃取程序内部的算法等,通常会采用代码混淆技术。代码混淆技术多采用代码自修改技术对程序进行混淆处理,其中,自修改技术一般是指在程序运行过程中动态的产生一些指令,并在程序执行时,跳过这些指令,按
照程序原本的处理逻辑执行原始代码中的指令。如果将代码混淆过程中产生的指令作为本发明实施例中的目标指令,通过本发明实施例提供的指令控制方法对这些指令进行无效化管理,可以有效降低程序的自修改频度,提高程序运行效率。
65.在本发明的一种可选实施例中,所述目标指令的操作码为目标操作码,步骤102所述根据所述使能状态信息确定是否对所述目标指令对应的使能控制位进行标记,包括:
66.步骤s11、若所述使能状态信息为第一状态信息,则对所述目标指令对应的使能控制位进行标记;所述第一状态信息用于指示所述状态控制寄存器处于使能状态;
67.步骤s12、若所述使能状态信息为第二状态信息,则不对所述目标指令对应的使能控制位进行标记;所述第二状态信息用于指示所述状态控制寄存器处于非使能状态。
68.其中,所述目标指令的操作码为目标操作码,所述目标操作码用于指示所述目标指令被所述控制状态寄存器控制。对于目标指令,可以直接根据控制状态寄存器的使能状态信息判断控制状态寄存器是否处于使能状态。如果使能状态信息为第一状态信息,表示控制状态寄存器处于使能状态,则需要对目标指令进行无效化处理,这种情况下,对所述目标指令对应的使能控制位进行标记。如果使能状态信息为第二状态信息,表示控制状态寄存器处于非使能状态,则此时不需要对目标指令进行无效化处理,因此不对目标指令对应的使能状态控制位进行标记。
69.在本发明的一种可选实施例中,所述目标指令之前插入有前缀控制指令,所述前缀控制指令包括第一操作数,所述第一操作数根据所述前缀控制指令的作用域确定,所述作用域用于指示所述前缀控制指令控制的目标指令对应的存储区间;步骤102所述根据所述使能状态信息确定是否对所述目标指令对应的使能控制位进行标记,包括:
70.步骤s21、若所述使能状态信息为第一状态信息,则执行所述前缀控制指令,以根据所述第一操作数对所述作用域中存储的目标指令对应的使能控制位进行标记;所述第一状态信息用于指示所述状态控制寄存器处于使能状态;
71.步骤s22、若所述使能状态信息为第二状态信息,则不对所述作用域中存储的目标指令对应的使能控制位进行标记;所述第二状态信息用于指示所述状态控制寄存器处于非使能状态。
72.其中,所述目标指令的前一条指令为前缀控制指令,所述前缀控制指令用于指示所述目标指令被所述控制状态寄存器控制。所述前缀控制指令包括第一操作数,所述第一操作数根据所述前缀控制指令的作用域确定,所述作用域用于指示所述前缀控制指令控制的目标指令对应的存储区间。
73.在本发明实施例中,对于目标指令,获取到控制状态寄存器的使能状态信息后,先根据使能状态信息判断控制状态寄存器是否处于使能状态。如果使能状态信息为第一状态信息,说明控制状态寄存器处于使能状态,此时需要对目标指令进行无效化处理,因此执行前缀控制指令,以根据操作数对前缀控制指令的作用域中存储的目标指令对应的使能控制位进行标记。其中,所述前缀控制指令的作用域由所述前缀控制指令控制的一条或多条目标指令的存储地址确定。例如,假设前缀控制指令用于控制一条目标指令a,其存储地址为211-214,则该前缀控制指令的作用域为211-214。如果前缀控制指令用于控制三条目标指令,分别为指令a、b、c,其中,指令a的存储地址为211-214,指令b的存储地址为215-218,指令c的存储地址为219-221,则该前缀控制指令的作用域为211-221。需要说明的是,前缀控
制指令的作用域可以为一个连续的存储区间,也可以为几个不连续的存储区间。例如,前缀控制指令用于对指令a、指令b和指令d进行控制,其中,指令a的存储地址为211-214,指令b的存储地址为215-218,指令d的存储地址为223-226,则该前缀控制指令的作用域为211-218和223-226。
74.如果使能状态信息为第二状态信息,表示控制状态寄存器处于非使能状态,此时不需要对目标指令进行无效化处理,这种情况下,不对前缀控制指令的作用域中存储的目标指令对应的使能控制位进行标记。
75.可选地,所述前缀控制指令包括第二操作数,所述第二操作数根据所述前缀控制指令的编组信息确定,所述编组信息用于指示所述前缀控制指令所属的编组,编组信息相同的前缀控制指令的作用域中存储的目标指令对应同一个使能控制位。例如,假设前缀控制指令的作用域a1中存储的目标指令包括目标指令b1和目标指令b2,前缀控制指令a2中的作用域中存储的目标指令包括目标指令b3,其中,前缀控制指令a1和a2的第二操作数均为g1,说明前缀控制指令a1和a2属于同一个编组,那么,目标指令b1、b2和b3对应于同一个使能控制位。参照图4,示出了本发明实施例提供的一种前缀控制指令的指令格式示意图。其中,set_csr_cond_opcode为前缀控制指令的操作码,group为前缀控制指令的第二操作数,指示该前缀控制指令的编组编号。
76.可以理解的是,对于每一条目标指令,均有其对应的使能控制位。而且,在本发明实施例中,对于编组信息相同的前缀控制指令的作用域中存储的目标指令可以对应同一个使能控制位。当编组中的一个前缀在控制指令对其作用域中目标指令对应的使能控制位进行标记之后,就可以同步对该编组中的每一条前缀控制指令的作用域中存储的目标指令进行无效化处理,提高处理效率。
77.需要说明的是,对于任意一条前缀控制指令,其操作数可以包括第一操作数和/或第二操作数。当前缀控制指令包含不同的操作数时,其操作码相同。例如,前缀控制指令c1的操作数包括第一操作数,前缀控制指令c2的操作数包括第二操作数,前缀控制指令c3包括第一操作数和第二操作数,这三条前缀控制指令的操作码均相同,指示指令c1至c3为前缀控制指令。如果该前缀控制指令仅包含第一操作数,则说明该前缀控制指令未被编组,不属于任何一个前缀控制指令组,该前缀控制指令用于对第一操作数指示的作用域中存储的目标指令进行控制。可以理解的是,第一操作数指示的作用域,可以为该前缀控制指令的下一条指令的存储地址。如果该前缀控制指令仅包含第二操作数,则默认该前缀控制指令的作用域为其下一条指令的存储地址,也即该前缀控制指令用于对其下一条指令进行控制。
78.在本发明的一种可选实施例中,所述前缀控制指令包括第二操作数,所述方法还包括:若前缀控制指令的作用域中存储的目标指令对应的使能控制位被标记,则根据所述第二操作数对所述前缀控制指令所属的编组中其他前缀控制指令的作用域中存储的目标指令对应的使能控制位进行标记。
79.在本发明实施例中,除了对编组信息相同的前缀控制指令的作用域中存储的目标指令设置同一个使能控制位,也可以针对每条目标指令设置单独的使能控制位,只要编组中某条前缀控制指令的作用域中存储的目标指令对应的使能控制位被标记,就根据第二操作数,也即前缀控制指令的编组信息,对编组中其他前控制指令的作用域中存储的目标指令对应的使能控制位也进行标记,这样不用针对编组信息相同的前缀控制指令的作用域中
存储的目标指令设置相同的使能控制位,也能够实现对同一个编组中各条前缀控制指令控制的目标指令同步进行无效化处理,从而提高指令控制效率和程序的处理效率。
80.作为一种示例,目前存在5条目标指令,分别记为指令a、指令b、指令c、指令d和指令e。在每条目标指令前分别插入前缀控制指令,其中插入的5条前缀控制指令的操作码相同,编组编号依次为2、4、3、2、2。可以看出指令a、d、e对应的前缀控制指令的编组编号均为2,那么若指令a、d、e中任意一条指令对应的使能控制位被标记,其余两条指令的使能控制位也会被标记,从而处理器在执行过程中,会同步无效指令a、d、e。
81.可以理解的是,控制状态寄存器中维护有使能控制位列表,其中,使能控制位列表中包含有多个目标指令,以及各个目标指令对应的使能控制位。当控制状态寄存器的使能状态信息表示控制状态寄存器处于使能状态时,对目标指令对应的使能控制位进行标记。
82.参照图5,示出了本发明实施例提供的一种控制状态寄存器的使能控制位列表的示意图,其中,控制状态寄存器中的使能控制位可以包括但不限于如下任意一种:1)通用运算指令控制;2)控制流指令控制;3)浮点及向量指令控制;4)访存指令控制位;5)原子指令控制;6)指令组控制。其中,1)至5)类使能控制位中,每一类指令又可以包含多个子项,每一个子项对应一种目标指令,对于各个子项可以分别设置对应的使能控制位。图4中仅示例性地示出了几种。
83.如图5所示,通用运算指令控制用于运算类指令对应的使能控制,其中or表示或运算指令,and表示与运算指令,add表示求和运算指令。
84.控制流指令控制表示转移类指令对应的使能控制,其中,beq表示相等的跳转,bne表示不等的跳转,b表示无条件跳转。
85.浮点及向量指令控制用于浮点运算指令、向量运算等指令对应的使能控制,其中,fdiv表示浮点除法指令,fmul表示浮点乘法指令,fadd表示浮点加法指令。
86.访存指令控制用于访问内存的指令或访问数据的指令对应的使能控制,其中,fst表示浮点存指令,ld表示取数据指令,st表示存数据指令。
87.原子指令控制用于原子指令对应的使能控制,原子指令表示不可分割的,在执行完毕之前不会被任何其它任务或事件中断的指令。其中,amadd表示原子加法指令,sc表示原子存操作指令,ll表示原子取操作指令。
88.指令组控制用于控制各个编组的前缀控制指令的作用域中目标指令的使能情况,图5中仅示例性地示出了4种编组情况,其中,g3表示编组编号为3,g2表示编组编号为2,g1表示编组编号为1,g0表示编组编号为0。本发明实施例中,编组的数量可以根据需要进行扩展。
89.在本发明实施例中,可以在操作码为目标操作码的目标指令之前增加前缀控制指令,以利用前缀控制指令的编组信息,对多条目标指令同步进行无效化处理。参照图6,示出了本发明实施例提供的另一种目标指令的指令格式示意图。如图6所示,可以在操作码为c_b_opcode的目标指令之前插入一条前缀控制指令,其中,set_csr_cond_opcode域为前缀控制指令的操作码,area为前缀控制指令的第一操作数,用于指示该前缀控制指令的作用域,group为前缀控制指令的第二操作数,用于指示该前缀控制指令的编组信息,示例性地,第二操作数可以为该前缀控制指令的编组编号。
90.在本发明实施例中,还可以将前缀控制指令作为目标指令,也即在前缀控制指令
之前插入前缀控制指令,使用前缀控制指令对另一条前缀控制指令的使能控制位进行标记,以设置被前缀控制指令控制的目标指令的优先级。例如,前缀控制指令a1的作用域中存储的目标指令为指令b1,前缀控制指令a2的作用域中存储的目标指令为指令a1,则处理器在对指令b1、前缀控制指令a1进行无效化处理时,优先处理指令a1,再处理指令b1。参照图7,其示出了本发明实施例又一种目标指令的指令格式示意图,即在前缀控制指令之前添加前缀控制指令。如图7所示,普通指令,也即本发明中的目标指令之前,插入了一条前缀控制指令2,前缀控制指令2之前插入了一条前缀控制指令1。在无效处理中,图7中的前缀控制指令1的优先级会高于前缀控制指令2的优先级。如果前缀控制指令2被无效,则图7中的普通指令不再受前缀控制指令2的控制;如果前缀控制指令2未被无效,则前缀控制指令2正常执行,此时普通指令仍被前缀控制指令2控制。
91.需要说明的是,如果前缀控制指令的作用域中包含多条目标指令,且目标指令包含前缀控制指令,则在指令序列中,前面的前缀控制指令的无效优先级高于后面的前缀控制指令的优先级。例如,指令序列为[a3,a4,a5,b1],其中,前缀控制指令a3的作用域中存储的目标指令为a4、a5和b1,前缀控制指令a4、a5均对其下一条指令进行无效化控制,则在无效化处理过程中,各条指令的无效化优先级为:a3》a4》a5》b1。
[0092]
当然,图7中的普通指令也可以是本发明中的目标指令,这种情况属于图6和图7所示的目标指令的嵌套。
[0093]
综上,本发明实施例提供的指令控制方法,将需要进行无效化处理的待控制指令修改为目标指令,通过控制状态寄存器对目标指令进行控制,从而在每次执行目标指令之前,根据控制状态寄存器的使能状态信息判断是否对目标指令对应的使能控制位进行标记,并在目标指令对应的使能控制位被标记的情况下,处理器将目标指令确定为无效指令,忽略该目标指令并顺序执行下一条指令。相比于现有技术中通过增加跳转指令使得程序不执行某些指令,本发明实施例可以减少跳转指令的生成或内存数加载指令的生成,降低处理器内部的性能开销,提高软件程序的运行效率。
[0094]
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0095]
装置实施例
[0096]
参照图8,示出了本发明的一种指令控制装置实施例的结构框图,所述装置具体可以包括:
[0097]
指令处理模块801,用于识别目标程序中的待控制指令,并将所述待控制指令修改为目标指令;
[0098]
信息获取模块802,用于获取控制状态寄存器的使能状态信息;
[0099]
控制位标记模块803,用于根据所述使能状态信息确定是否对所述目标指令对应的使能控制位进行标记;
[0100]
第一执行模块804,用于若所述目标指令对应的使能控制位被标记,则确定所述目标指令为无效指令,并顺序执行下一条指令;
[0101]
其中,所述目标指令满足以下至少一项:
[0102]
所述目标指令的操作码为目标操作码,所述目标操作码用于指示所述目标指令被所述控制状态寄存器控制;
[0103]
所述目标指令之前插入有至少一条前缀控制指令,所述前缀控制指令用于指示所述目标指令被控制状态寄存器控制。
[0104]
可选地,所述装置还包括:
[0105]
第二执行模块,用于若所述目标指令对应的使能控制位未被标记,则确定所述目标指令为有效指令,并执行所述目标指令。
[0106]
可选地,所述目标指令的操作码为目标操作码,所述控制位标记模块,包括:
[0107]
第一处理子模块,用于若所述使能状态信息为第一状态信息,则对所述目标指令对应的使能控制位进行标记;所述第一状态信息用于指示所述状态控制寄存器处于使能状态;
[0108]
第二处理子模块,用于若所述使能状态信息为第二状态信息,则不对所述目标指令对应的使能控制位进行标记;所述第二状态信息用于指示所述状态控制寄存器处于非使能状态。
[0109]
可选地,所述目标指令之前插入有前缀控制指令,所述前缀控制指令包括第一操作数,所述第一操作数根据所述前缀控制指令的作用域确定,所述作用域用于指示所述前缀控制指令控制的目标指令对应的存储区间;所述控制位标记模块,包括:
[0110]
第三处理子模块,用于若所述使能状态信息为第一状态信息,则执行所述前缀控制指令,以根据所述第一操作数对所述作用域中存储的目标指令对应的使能控制位进行标记;所述第一状态信息用于指示所述状态控制寄存器处于使能状态;
[0111]
第四处理子模块,用于若所述使能状态信息为第二状态信息,则不对所述作用域中存储的目标指令对应的使能控制位进行标记;所述第二状态信息用于指示所述状态控制寄存器处于非使能状态。
[0112]
可选地,所述前缀控制指令的作用域由所述前缀控制指令控制的一条或多条目标指令的存储地址确定。
[0113]
可选地,所述前缀控制指令包括第二操作数,所述第二操作数根据所述前缀控制指令的编组信息确定,编组信息相同的前缀控制指令的作用域中存储的目标指令对应同一个使能控制位。
[0114]
可选地,所述控制位标记模块还包括:
[0115]
控制位标记子模块,用于若前缀控制指令的作用域中存储的目标指令对应的使能控制位被标记,则根据所述第二操作数对所述前缀控制指令所属的编组中其他前缀控制指令的作用域中存储的目标指令对应的使能控制位进行标记。
[0116]
可选地,所述目标指令之前插入有前缀控制指令,且所述目标指令与所述前缀控制指令满足以下条件:
[0117]
所述前缀控制指令的存储地址与所述目标指令的存储地址连续相邻,且所述前缀控制指令的存储地址在所述目标指令的存储地址之前。
[0118]
可选地,所述待控制指令包括二进制翻译系统中基本块的跳转指令,所述跳转指令的目标跳转地址为下一个基本块的起始地址;或者,所述待控制指令包括对原始代码进
行代码混淆过程中生成的指令。
[0119]
可选地,所述控制状态寄存器中维护有使能控制位列表,所述使能控制位列表中包含各个目标指令对应的使能控制位。
[0120]
综上,本发明实施例提供的指令控制装置,将需要进行无效化处理的待控制指令修改为目标指令,通过控制状态寄存器对目标指令进行控制,从而在每次执行目标指令之前,根据控制状态寄存器的使能状态信息判断是否对目标指令对应的使能控制位进行标记,并在目标指令对应的使能控制位被标记的情况下,处理器将目标指令确定为无效指令,忽略该目标指令并顺序执行下一条指令。相比于现有技术中通过增加跳转指令使得程序不执行某些指令,本发明实施例可以减少跳转指令的生成或内存数加载指令的生成,降低处理器内部的性能开销,提高软件程序的运行效率。
[0121]
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0122]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0123]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0124]
参照图9,是本发明实施例提供的一种用于指令控制的电子设备的结构示意图。如图9所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行前述实施例的指令控制方法。
[0125]
本发明实施例提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的程序或处理器执行时,使得终端能够执行前述实施例的指令控制方法。
[0126]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0127]
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0128]
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0129]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方
框或多个方框中指定的功能。
[0130]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0131]
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0132]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0133]
以上对本发明所提供的一种指令控制方法、装置及电子设备,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1