1.本技术涉及计算机技术领域,特别是涉及一种命令执行方法、装置、设备及存储介质。
背景技术:2.命令行指令,也称为命令行界面(command-line interface,cli)命令,广泛运用于嵌入式开发和程序运行过程中。命令行指令具有执行速度快和功能强大等优点,能给应用程序的开发、调试和后期的维护带来极大的方便。
3.目前,在linux系统下,为了实现对应用程序的操作,用户需要借助应用程序的cli接口,为每一个需要执行的操作创建一个专门的命令行指令,然后通过该专门的命令行指令来执行相应的操作。
4.可见,现有技术由于需要为每一个操作创建一个专门的命令行指令,因此在linux系统下存在着命令行指令的可扩展性差、工作量大的问题。
技术实现要素:5.基于此,本技术提供一种命令执行方法、装置、设备及存储介质,改善现有技术中在linux系统下的命令行指令的可扩展性差、工作量大的问题。
6.第一方面,本技术提供了一种命令执行方法,该命令执行方法包括:在运行应用程序之后,接收命令行指令,其中,命令行指令包括函数调用指令、变量赋值指令和变量显示指令中的任意一种;提取出命令行指令中的目标标识符,其中,目标标识符包括函数名和变量名中的任意一种;根据应用程序对应的符号表确定目标标识符的目标地址;对目标地址下的数据执行命令行指令所指示的操作。
7.结合第一方面,在第一方面的第一种可实施方式中,根据应用程序对应的符号表确定目标标识符的目标地址的步骤,包括:在应用程序对应的符号表中查找目标标识符对应的相对地址;基于相对地址和应用程序的虚拟地址,得到目标地址。
8.结合第一方面,在第一方面的第二种可实施方式中,对目标地址下的数据执行命令行指令所指示的操作的步骤,包括:在命令行指令为函数调用指令的情况下,将目标地址下的函数转换为函数调用指令所指示的函数类型,并对转换后的函数进行调用;在命令行指令为变量赋值指令的情况下,将目标地址下的变量转换为变量赋值指令所指示的数据类型,并对转换后的变量进行赋值;在命令行指令为变量显示指令的情况下,将目标地址下的变量转换为变量显示指令所指示的数据类型,并对转换后的变量的数值进行显示。
9.结合第一方面,在第一方面的第三种可实施方式中,在运行应用程序时,该方法还包括:从应用程序中分离出符号表的压缩文件;对压缩文件进行解压,以得到符号表。
10.结合第一方面的第三种可实施方式,在第一方面的第四种可实施方式中,从应用程序中分离出符号表的压缩文件的步骤,包括:按照从应用程序的尾部到头部的顺序,查找应用程序中的特征码和符号表长度,其中,特征码用于指示符号表的压缩文件在应用程序
中的位置,符号表长度用于指示符号表的压缩文件的长度;根据特征码和符号表长度从应用程序中分离出符号表的压缩文件。
11.结合第一方面,在第一方面的第五种可实施方式中,在运行应用程序之前,该方法还包括:编译得到应用程序的可执行文件和符号表;调整符号表中的数据顺序;将符号表进行压缩后得到的压缩文件合并到可执行文件的尾部,并在合并后的文件的末尾添加特征码和符号表长度。
12.结合第一方面的第五种实施方式,在第一方面的第六种可实施方式中,调整符号表中的数据顺序的步骤,包括:将符号表中的各标识符及其相对地址分别进行关联,得到至少一对数据对;根据至少一对数据对中的各标识符的首字符的编码的大小,对符号表中的至少一对数据对的排列顺序进行调整。
13.第二方面本技术提供了一种命令执行装置,该命令执行装置包括:接收单元,用于在运行应用程序之后,接收命令行指令,其中,命令行指令包括函数调用指令、变量赋值指令和变量显示指令中的任意一种;提取单元,用于提取出命令行指令中的目标标识符,其中,目标标识符包括函数名和变量名中的任意一种;确定单元,用于根据应用程序对应的符号表确定目标标识符的目标地址;执行单元,用于对目标地址下的数据执行命令行指令所指示的操作。
14.结合第二方面,在第二方面的第一种可实施方式中,确定单元具体用于:在应用程序对应的符号表中查找目标标识符对应的相对地址;基于相对地址和应用程序的虚拟地址,得到目标地址。
15.结合第二方面,在第二方面的第二种可实施方式中,执行单元具体用于:在命令行指令为函数调用指令的情况下,将目标地址下的函数转换为函数调用指令所指示的函数类型,并对转换后的函数进行调用;在命令行指令为变量赋值指令的情况下,将目标地址下的变量转换为变量赋值指令所指示的数据类型,并对转换后的变量进行赋值;在命令行指令为变量显示指令的情况下,将目标地址下的变量转换为变量显示指令所指示的数据类型,并对转换后的变量的数值进行显示。
16.结合第二方面,在第二方面的第三种可实施方式中,命令执行装置还包括分离单元,该分离单元用于:在运行应用程序时,从应用程序中分离出符号表的压缩文件;对压缩文件进行解压,以得到符号表。
17.结合第二方面的第三种可实施方式,在第二方面的第四种可实施方式中,分离单元具体用于:按照从应用程序的尾部到头部的顺序,查找应用程序中的特征码和符号表长度,其中,特征码用于指示符号表的压缩文件在应用程序中的位置,符号表长度用于指示符号表的压缩文件的长度;根据特征码和符号表长度从应用程序中分离出符号表的压缩文件。
18.结合第二方面,在第二方面的第五种可实施方式中,命令执行装置还包括编译单元,该编译单元用于:在运行应用程序之前,编译得到应用程序的可执行文件和符号表;调整符号表中的数据顺序;将符号表进行压缩后得到的压缩文件合并到可执行文件的尾部,并在合并后的文件的末尾添加特征码和符号表长度。
19.结合第二方面的第五种实施方式,在第二方面的第六种可实施方式中,编译单元,具体用于:将符号表中的各标识符及其相对地址分别进行关联,得到至少一对数据对;根据
至少一对数据对中的各标识符的首字符的编码的大小,对符号表中的至少一对数据对的排列顺序进行调整。
20.第三方面,本技术还提供了一种命令执行设备,该命令执行设备包括处理器和存储器,处理器和存储器通过总线连接;处理器,用于执行多条指令;存储器,用于存储多条指令,指令适于由处理器加载并执行如第一方面或第一方面的任意一项实施方式的命令执行方法。
21.第四方面,本技术还提供了一种计算机可读存储介质,计算机可读存储介质中存储有多条指令,指令适于由处理器加载并执行如第一方面或第一方面的任意一项实施方式的命令执行方法,改善现有技术中命令行指令的可扩展性差、工作量大的问题。
22.综上,本技术提供一种命令执行方法、装置、设备及存储介质,其中,命令执行方法包括:命令执行装置/命令执行设备在运行应用程序之后,先接收命令行指令,该命令行指令可以是预设的三个命令行指令中的任一个,然后提取出命令行指令中的目标标识符,并通过符号表获取该目标标识符对应的相对地址,最后对目标地址下的数据执行命令行指令所指示的操作。可见,本技术提供的命令执行方法通过三个预设的命令行指令实现了对应用程序的任意操作,而不需要为每一个需要执行的操作创建一个命令行指令,因此本技术提供的命令执行方法改善现有技术中命令行指令的可扩展性差、工作量大的问题。
附图说明
23.图1为本技术一个实施例中命令执行方法的应用场景图;
24.图2为本技术一个实施例中命令执行方法的流程示意图;
25.图3为本技术提供的一种命令执行装置的示意性框图;
26.图4为本技术提供的一种命令执行设备的结构性框图。
具体实施方式
27.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
28.由于本技术实施例涉及相对较多的专业术语,为了便于理解,下面先对本技术实施例可能涉及的相关术语和概念进行介绍。
29.1、标识符(identifier)
30.在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。标识符通常由字母和数字以及其它字符构成。在本技术中,标识符主要包括函数名和变量名。
31.2、符号表
32.符号表是一种用于语言翻译器(例如编译器和解释器)中的数据结构。在编译程序中,符号表用来存放语言程序中出现的标识符及其属性信息,属性信息包括数据类型、作用域以及相对地址等。在本技术中,符号表中的属性信息主要指的是相对地址,也即是说本技术中的符号表包括应用程序中的标识符及其相对地址的至少一个数据对。另外,符号表也包括了标识符的类型,指示是“函数”还是“变量”,用于区分对应的相对地址是函数还是变
量的,从而便于后续执行对应的操作时,判断其操作的合法性。
33.3、命令行指令
34.命令行指令也即是命令行界面(command-line interface,cli)命令,其中,cli是非图形的计算机操作界面。用户通过键盘在计算机的cli输入命令行指令,来指示计算机完成对应的操作。
35.需要说明的是,本技术接下来涉及到的处理器可以包括但不限于中央处理器(central processing unit,cpu),通用处理器,协处理器,数字信号处理器(digital signal processor,dsp),专用集成电路(application-specific integrated circuit,asic),现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。处理器可以实现本技术的所描述的方法,例如可以对目标地址下的数据执行命令行指令所指示的操作等,本技术对此不再赘述。
36.还需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。本说明书所附图式所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。同时,本说明书中所引用的如“上”、“下”、“左”、“右”、“中间”、“纵向”、“横向”、“水平”、“内”、“外”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,亦仅为了便于简化叙述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
37.目前,在linux系统下,为了实现对应用程序的操作,用户需要借助应用程序的cli接口,为每一个需要执行的操作创建一个命令行指令,也即是为应用程序中的每个函数和每个变量都创建一个专门的命令行指令,然后通过该专门的命令行指令来执行相应的操作。可见,为了实现对应用程序的操作,需要创建大量的命令行指令,因此在linux系统下存在着命令行指令的可扩展性差、工作量大的问题。
38.对此,本技术提供了一种命令执行方法,能够改善现有技术中在linux系统下的命令行指令的可扩展性差、工作量大的问题。为了对该方法进行更好的理解,本技术接下来将会结合图1所示的应用场景图,并以命令执行装置为执行主体进行详细的说明。具体的:
39.本技术提供的命令执行方法,可以应用于如图1所示的应用环境中。其中,命令执行装置102与服务器104通过网络进行通信。命令执行装置中预先设置了三种命令行指令,分别是函数调用指令、变量赋值指令和变量显示指令。其中,函数调用指令用于接收用户关于指示调用函数的指令,变量赋值指令用于接收用户关于指示对变量进行赋值的指令,变量显示指令用于接收用户关于指示显示变量的数值的指令。举例来说,函数调用指令可以是function指令,形如function《函数名》《参数
…
》;变量赋值指令可以是varset指令,形如varset《变量名》《值》;变量显示指令可以是varget指令,形如varget《变量名》。其中,命令
执行装置102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
40.命令执行装置在运行应用程序之后,接收命令行指令,并根据接收到的命令行指令进行相应的操作,其中,命令行指令包括函数调用指令、变量赋值指令和变量显示指令中的任意一种。举例来说,如果命令行指令是函数调用指令,则命令执行装置调用命令行指令中的函数名所指示的函数;如果命令行指令是变量赋值指令,则命令执行装置对命令行指令中的变量名所指示的变量进行赋值;如果命令行指令是变量显示指令,则命令执行装置对命令行指令中的变量名所指示的变量的数值进行显示。
41.更具体的,本技术通过符号表来实现上述根据接收到的命令行指令进行相应的操作的步骤:命令执行装置对接收到命令行指令进行读取,并提取出其中的标识符作为目标标识符,该目标标识符可以是函数名,也可以是变量名。然后,命令执行装置在应用程序对应的符号表中读取目标标识符对应的相对地址,并将该相对地址加上应用程序的虚拟地址的首地址,得到目标标识符对应的虚拟地址,也即目标标识符的目标地址。最后,命令执行装置对目标地址下的数据执行命令行指令所指示的操作,例如:若命令行指令为函数调用指令,则对目标地址下的函数进行调用;若命令行指令为变量赋值指令,则对目标地址下的变量进行赋值;若命令行指令为变量显示指令,则对目标地址下的变量的数值进行显示。
42.需要说明的是,本技术通过将符号表里面记录的目标标识符的相对位置转换为虚拟地址,从而可以基于符号表来实现对目标标识符所对应数据的正确寻址,从而实现了仅通过三个命令行指令来对应用程序的任意函数和任意变量的操作。
43.综上,本技术提供的命令执行方法仅通过三个命令行指令,便可以实现对应用程序的任意函数和任意变量的操作,即使在应用程序中对函数或变量进行新增或修改,也无需对应创建新的命令行指令或者对原有的命令行指令进行修改,因此大大提高了命令行指令的可扩展性,改善了现有技术中在linux系统下的命令行指令的可扩展性差、工作量大的问题。
44.为了对本技术的技术方案进行更加详细的说明,本技术提出了一种命令执行方法,接下来本技术将以执行主体为命令执行装置为例,并结合图2的流程示意图,对该命令执行方法进行更详细的说明。具体的:
45.201:在运行应用程序之后,接收命令行指令。
46.其中,命令执行装置在运行应用程序之后,通过cli接收命令行指令,该命令行指令可以是函数调用指令、变量赋值指令和变量显示指令中的任意一种。
47.202:提取出命令行指令中的目标标识符。
48.其中,由于命令行指令中包括标识符,因此命令执行装置可以从命令行指令中提取出标识符作为目标标识符,该目标标识符可以是函数名和变量名中的任意一种。
49.举例来说,命令执行装置提取出函数调用指令function《函数名》《参数
…
》中的标识符“函数名”作为目标标识符;命令执行装置提取出变量赋值指令varset《变量名》《值》中的标识符“变量名”作为目标标识符;命令执行装置提取出变量显示指令varget《变量名》中的标识符“变量名”作为目标标识符。
50.203:根据应用程序对应的符号表确定目标标识符的目标地址。
51.其中,由于符号表中记载了标识符及其相对地址的至少一对数据对,因此命令执
行装置可以从符号表中获取与目标标识符关联的相对地址,然后根据该相对地址确定与目标标识符关联的目标地址。需要说明的是,符号表中记载的相对地址实质是指目标标识符在应用程序中的相对位置,因此为了正确寻址,需要将目标标识符的相对地址转换为目标标识符的虚拟地址,并将目标标识符的虚拟地址作为目标标识符的目标地址。
52.具体的,上述根据应用程序对应的符号表确定目标标识符的目标地址的步骤包括:在应用程序对应的符号表中查找目标标识符对应的相对地址;基于相对地址和应用程序的虚拟地址,得到目标地址。
53.举例来说,命令执行装置从函数调用指令function《函数名》《参数
…
》中获取得到目标标识符“函数名”之后,找到该“函数名”在符号表中所对应的相对地址,并将该相对地址加上应用程序的虚拟地址的首地址得到该“函数名”的虚拟地址,也即是该“函数名”对应的目标地址。
54.204:对目标地址下的数据执行命令行指令所指示的操作。
55.其中,命令执行装置可以通过寻址目标标识符的目标地址,找到目标地址下所存储的数据,并对该目标地址下的数据执行命令行指令所指示的操作。
56.具体的,上述对目标地址下的数据执行命令行指令所指示的操作的步骤,包括:在命令行指令为函数调用指令的情况下,将目标地址下的函数转换为函数调用指令所指示的函数类型,并对转换后的函数进行调用;在命令行指令为变量赋值指令的情况下,将目标地址下的变量转换为变量赋值指令所指示的数据类型,并对转换后的变量进行赋值;在命令行指令为变量显示指令的情况下,将目标地址下的变量转换为变量显示指令所指示的数据类型,并对转换后的变量的数值进行显示。
57.举例来说,命令执行装置通过符号表找到函数调用指令function《函数名》《参数
…
》中的目标标识符“函数名”对应的目标地址之后,通过对该目标地址进行寻址,找到目标地址下存储的函数,将目标地址下的函数转换为函数调用指令所指示的函数类型,并将function《函数名》《参数
…
》中的参数的数值带入到转换了函数类型的函数中,执行函数以实现对函数的调用。另一举例,命令执行装置通过符号表找到变量赋值指令varset《变量名》《值》中的目标标识符“变量名”对应的目标地址之后,通过对该目标地址进行寻址,找到目标地址下存储的变量的数值,将目标地址下的变量转换为变量赋值指令所指示的数据类型,并将varset《变量名》《值》中的“值”存储到目标地址下,覆盖目标地址下原来存储的数值,以实现对变量的赋值。再一举例,命令执行装置通过符号表找到变量显示指令varget《变量名》中的目标标识符“变量名”对应的目标地址之后,通过对该目标地址进行寻址,找到目标地址下存储的变量的数值,将目标地址下的变量转换为变量显示指令所指示的数据类型,并将该数值显示出来,以实现对变量的显示。
58.在一种可实施的方式中,命令执行装置在运行应用程序时,为获得应用程序的符号表,命令执行装置还可以:从应用程序中分离出符号表的压缩文件;对压缩文件进行解压,以得到符号表。其中,符号表包含在应用程序中,与应用程序结合在一起,因此为了获取应用程序中的符号表,命令执行装置先将应用程序中的符号表的压缩文件分离出来,并解压出压缩文件中的符号表。
59.进一步的,上述从应用程序中分离出符号表的压缩文件的步骤,包括:按照从应用程序的尾部到头部的顺序,查找应用程序中的特征码和符号表长度,其中,特征码可以是任
意字符的组合,特征码用于指示符号表的压缩文件在应用程序中的位置,符号表长度用于指示符号表的压缩文件的长度;根据特征码和符号表长度从应用程序中分离出符号表的压缩文件。其中,符号表结合在应用程序的尾部,为了提高查找的效率,命令执行装置从应用程序的尾部开始查找,直到查找到符号表的特征码和符号表长度,然后截取应用程序中从特征码开始的长度为符号表长度的部分作为符号表的压缩文件,本技术对此不做限制。
60.在一种可实施的方式中,在运行应用程序之前,命令执行装置为生成应用程序的符号表,还可以:编译得到应用程序的可执行文件和符号表;调整符号表中的数据顺序;将符号表进行压缩后得到的压缩文件合并到可执行文件的尾部,并在合并后的文件的末尾添加特征码和符号表长度。在合并后的文件的末尾添加特征码和符号表长度,是为了便于在程序运行过程中分离并解压符号表,而不需要从文件最后向前遍历整个文件去找特征码,这样做可以提高分离符号表的效率。其中,命令执行装置通过编译得到应用程序的可执行文件和符号表,然后将符号表中的标识符及其相对地址的至少一对数据对的顺序进行调整,使得命令执行装置根据该符号表可以更容易查找到目标标识符对应的相对地址,从而提高查找效率,最后命令执行装置对符号表进行压缩得到压缩文件,并将该压缩文件合并到可执行文件的尾部得到应用程序。
61.进一步的,上述调整符号表中的数据顺序的步骤,包括:将符号表中的各标识符及其相对地址分别进行关联,得到至少一对数据对;根据至少一对数据对中的各标识符的首字符的编码的大小,对符号表中的至少一对数据对的排列顺序进行调整。其中,命令执行装置在对符号表中的数据顺序进行调整时,可以先将符号表中的各标识符及其相对地址分别进行关联,以得到至少一个数据对,每个数据对分别包括一个标识符及一个相对地址。然后命令执行装置按照该至少一个数据对按照各数据对中的标识符的首字符的编码(例如ascii编码)从小到大或从大到小的顺序,将该至少一对数据对进行顺序存储,从而形成应用程序的符号表,在该符号表中,标识符为索引,相对地址为值。
62.为了理解前述实施例和进一步的方式中关于生成符号表的过程,本技术接下来将举例说明:命令执行装置可以先通过交叉编译工具链(gcc)编译应用程序,以得到应用程序的可执行文件(例如二进制可执行文件),然后通过python脚本分析(gcc
–
map=map.txt)生成应用程序的符号表(map.txt),该符号表中的标识符及其相对地址以《标识符,相对地址》的方式存放,比如《函数名,相对地址》,《变量名,相对地址》等。再然后,命令执行装置将符号表中的标识符及其相对地址分别进行关联得到至少一对数据对,并按照标识符的首字符的ascii编码的大小,将该至少一对数据对进行顺序排列。最后,命令执行装置通过gzip命令对符号表进行压缩得到压缩文件,将该压缩文件合并到应用程序的可执行文件的尾部,并在合并之后的文件的末尾插入特征码和符号表长度等信息,用于在程序运行过程时分离出符号表,以提高分离的效率。
63.综上,本技术提供的命令执行方法仅通过三个命令行指令,便可以实现对应用程序的任意函数和任意变量的操作,大大提高了命令行指令的可扩展性,改善了现有技术中在linux系统下的命令行指令的可扩展性差、工作量大的问题。
64.参见图3,本发明实施还提供了一种命令执行装置。本发明实施例可以根据上述方法示例对设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,
也可以采用软件功能单元的形式实现。需要说明的是,本发明实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。如图3所示,该命令执行装置包括接收单元310、提取单元320、确定单元330以及执行单元340,具体的:
65.接收单元310,用于在运行应用程序之后,接收命令行指令,其中,命令行指令包括函数调用指令、变量赋值指令和变量显示指令中的任意一种;提取单元320,用于提取出命令行指令中的目标标识符,其中,目标标识符包括函数名和变量名中的任意一种;确定单元330,用于根据应用程序对应的符号表确定目标标识符的目标地址;执行单元340,用于对目标地址下的数据执行命令行指令所指示的操作。
66.在一种可实施的方式中,确定单元330具体用于:在应用程序对应的符号表中查找目标标识符对应的相对地址;基于相对地址和应用程序的虚拟地址,得到目标地址。
67.在一种可实施的方式中,执行单元340具体用于:在命令行指令为函数调用指令的情况下,将目标地址下的函数转换为函数调用指令所指示的函数类型,并对转换后的函数进行调用;在命令行指令为变量赋值指令的情况下,将目标地址下的变量转换为变量赋值指令所指示的数据类型,并对转换后的变量进行赋值;在命令行指令为变量显示指令的情况下,将目标地址下的变量转换为变量显示指令所指示的数据类型,并对转换后的变量的数值进行显示。
68.在一种可实施的方式中,命令执行装置还包括分离单元350,该分离单元350用于:在运行应用程序时从应用程序中分离出符号表的压缩文件;对压缩文件进行解压,以得到符号表。
69.在一种可实施的方式中,分离单元350具体用于:按照从应用程序的尾部到头部的顺序,查找应用程序中的特征码和符号表长度,其中,特征码用于指示符号表的压缩文件在应用程序中的位置,符号表长度用于指示符号表的压缩文件的长度;根据特征码和符号表长度从应用程序中分离出符号表的压缩文件。
70.在一种可实施的方式中,命令执行装置还包括编译单元360,该编译单元360用于:在运行应用程序之前,编译得到应用程序的可执行文件和符号表;调整符号表中的数据顺序;将符号表进行压缩后得到的压缩文件合并到可执行文件的尾部,并在合并后的文件的末尾添加特征码和符号表长度。
71.在一种可实施的方式中,编译单元360,具体用于:将符号表中的各标识符及其相对地址分别进行关联,得到至少一对数据对;根据至少一对数据对中的各标识符的首字符的编码的大小,对符号表中的至少一对数据对的排列顺序进行调整。
72.参见图4,是本技术另一实施例提供的一种命令执行设备的示意框图。如图所示的本实施例中的命令执行设备可以包括:处理器410和存储器420。上述处理器410和存储器420通过总线430连接。处理器410,用于执行多条指令;存储器420,用于存储多条指令,该指令适于由处理器410加载并执行如上述实施例中的命令执行方法。
73.其中,处理器410可以是电子调整单元(electronic control unit,ecu)、中央处理器(central processing unit,cpu),通用处理器,协处理器,数字信号处理器(digital signal processor,dsp),专用集成电路(application-specific integrated circuit,asic),现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。该处理器410也可以是实现计算功能的
组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。在本实施例中,处理器410可采用单片机,通过对单片机进行编程可以实现各种控制功能,比如在本实施例中,实现对所述目标地址下的数据执行所述命令行指令所指示的操作功能,处理器具有计算能力强大,处理快速的优点。具体的:
74.处理器410用于执行接收单元310的功能,用于在运行应用程序之后,接收命令行指令,其中,命令行指令包括函数调用指令、变量赋值指令和变量显示指令中的任意一种;还用于执行提取单元320的功能,用于提取出命令行指令中的目标标识符,其中,目标标识符包括函数名和变量名中的任意一种;还用于执行确定单元330的功能,用于根据应用程序对应的符号表确定目标标识符的目标地址;还有用于执行执行单元340的功能,用于对目标地址下的数据执行命令行指令所指示的操作。
75.在一种可实施的方式中,处理器410具体用于:在应用程序对应的符号表中查找目标标识符对应的相对地址;基于相对地址和应用程序的虚拟地址,得到目标地址。
76.在一种可实施的方式中,处理器410具体用于:在命令行指令为函数调用指令的情况下,将目标地址下的函数转换为函数调用指令所指示的函数类型,并对转换后的函数进行调用;在命令行指令为变量赋值指令的情况下,将目标地址下的变量转换为变量赋值指令所指示的数据类型,并对转换后的变量进行赋值;在命令行指令为变量显示指令的情况下,将目标地址下的变量转换为变量显示指令所指示的数据类型,并对转换后的变量的数值进行显示。
77.在一种可实施的方式中,处理器410还有用于执行分离单元350的功能,用于:在运行应用程序时,从应用程序中分离出符号表的压缩文件;对压缩文件进行解压,以得到符号表。
78.在一种可实施的方式中,处理器410具体用于:按照从应用程序的尾部到头部的顺序,查找应用程序中的特征码和符号表长度,其中,特征码用于指示符号表的压缩文件在应用程序中的位置,符号表长度用于指示符号表的压缩文件的长度;根据特征码和符号表长度从应用程序中分离出符号表的压缩文件。
79.在一种可实施的方式中,处理器410还有用于执行编译单元360的功能,用于:在运行应用程序之前,编译得到应用程序的可执行文件和符号表;调整符号表中的数据顺序;将符号表进行压缩后得到的压缩文件合并到可执行文件的尾部,并在合并后的文件的末尾添加特征码和符号表长度。
80.在一种可实施的方式中,处理器410具体用于:将符号表中的各标识符及其相对地址分别进行关联,得到至少一对数据对;根据至少一对数据对中的各标识符的首字符的编码的大小,对符号表中的至少一对数据对的排列顺序进行调整。
81.本技术还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有多条指令,指令适于由处理器加载并执行前述任意实施例中的方法。处理器410,用于执行多条指令;存储器420,用于存储多条指令,该指令适于由处理器410加载并执行如上述实施例中的命令执行方法。
82.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
83.以上实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
技术特征:1.一种命令执行方法,其特征在于,包括:在运行应用程序之后,接收命令行指令,其中,所述命令行指令包括函数调用指令、变量赋值指令和变量显示指令中的任意一种;提取出所述命令行指令中的目标标识符,其中,所述目标标识符包括函数名和变量名中的任意一种;根据所述应用程序对应的符号表确定所述目标标识符的目标地址;对所述目标地址下的数据执行所述命令行指令所指示的操作。2.根据权利要求1所述的方法,其特征在于,所述根据所述应用程序对应的符号表确定所述目标标识符的目标地址的步骤,包括:在所述应用程序对应的符号表中查找所述目标标识符对应的相对地址;基于所述相对地址和所述应用程序的虚拟地址,得到目标地址。3.根据权利要求1所述的方法,其特征在于,所述对所述目标地址下的数据执行所述命令行指令所指示的操作的步骤,包括:在所述命令行指令为所述函数调用指令的情况下,将所述目标地址下的函数转换为所述函数调用指令所指示的函数类型,并对转换后的函数进行调用;在所述命令行指令为所述变量赋值指令的情况下,将所述目标地址下的变量转换为所述变量赋值指令所指示的数据类型,并对转换后的变量进行赋值;在所述命令行指令为所述变量显示指令的情况下,将所述目标地址下的变量转换为所述变量显示指令所指示的数据类型,并对转换后的变量的数值进行显示。4.根据权利要求1所述的方法,其特征在于,在运行所述应用程序时,所述方法还包括:从所述应用程序中分离出所述符号表的压缩文件;对所述压缩文件进行解压,以得到所述符号表。5.根据权利要求4所述的方法,其特征在于,所述从所述应用程序中分离出所述符号表的压缩文件的步骤,包括:按照从所述应用程序的尾部到头部的顺序,查找所述应用程序中的特征码和符号表长度,其中,所述特征码用于指示所述符号表的压缩文件在所述应用程序中的位置,所述符号表长度用于指示所述符号表的压缩文件的长度;根据所述特征码和所述符号表长度从所述应用程序中分离出所述符号表的压缩文件。6.根据权利要求1所述的方法,其特征在于,在运行所述应用程序之前,所述方法还包括:编译得到所述应用程序的可执行文件和符号表;调整所述符号表中的数据顺序;将所述符号表进行压缩后得到的压缩文件合并到所述可执行文件的尾部,并在合并后的文件的末尾添加特征码和符号表长度。7.根据权利要求6所述的方法,其特征在于,所述调整所述符号表中的数据顺序的步骤,包括:将符号表中的各标识符及其相对地址分别进行关联,得到至少一对数据对;根据所述至少一对数据对中的各标识符的首字符的编码的大小,对所述符号表中的至少一对数据对的排列顺序进行调整。
8.一种命令执行装置,其特征在于,包括:接收单元,用于在运行应用程序之后,接收命令行指令,其中,所述命令行指令包括函数调用指令、变量赋值指令和变量显示指令中的任意一种;提取单元,用于提取出所述命令行指令中的目标标识符,其中,所述目标标识符包括函数名和变量名中的任意一种;确定单元,用于根据所述应用程序对应的符号表确定所述目标标识符的目标地址;执行单元,用于对所述目标地址下的数据执行所述命令行指令所指示的操作。9.一种命令执行设备,其特征在于,所述设备包括处理器和存储器,所述处理器和存储器通过总线连接;所述处理器,用于执行多条指令;所述存储介质,用于存储所述多条指令,所述指令适于由所述处理器加载并执行如权利要求1-7中任一项所述的命令执行方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有多条指令,所述指令适于由处理器加载并执行如权利要求1-7中任一项所述的命令执行方法。
技术总结本申请涉及一种命令执行方法、装置、设备及存储介质。其中,命令执行方法包括:在运行应用程序之后,接收命令行指令,其中,命令行指令包括函数调用指令、变量赋值指令和变量显示指令中的任意一种;提取出命令行指令中的目标标识符,其中,目标标识符包括函数名和变量名中的任意一种;根据应用程序对应的符号表确定目标标识符的目标地址;对目标地址下的数据执行命令行指令所指示的操作。通过采用本申请所提供的命令执行方法能够改善现有技术中在linux系统下的命令行指令的可扩展性差、工作量大的问题。问题。问题。
技术研发人员:龙政方 朱乾勇 涂少波 韩波 邓凌天 陈建伟
受保护的技术使用者:成都赛力斯科技有限公司
技术研发日:2022.09.26
技术公布日:2023/1/6