System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请实施例涉及计算机技术,尤其涉及一种编译方法、电子设备及系统。
技术介绍
1、当前,业界在对静态语言程序进行编译时,往往是将程序中的数据类型存储具化到不同的字节码上。而对于动态语言程序的编译,则缺少对其数据类型的存储。
2、目前的编译方法中,往往将数据类型不同的同一操作编译为不同的指令,从而导致指令集数据量大;同时,由于指令集的庞大,导致每条指令的编码长度也需要足够长,编译后的中间代码,即产生的二进制文件(如java字节码)的数据量大,占用内存大。
技术实现思路
1、本申请提供了一种编译方法、电子设备及系统,该编译方法中,同一操作在针对不同的数据类型时,编译得到的该操作对应的指令是相同的,因此,可以避免同一操作在不同类型下产生不同指令,从而实现指令集的缩减,进而,由于指令集的缩减,指令的编码长度变短,从而减小生成的二进制文件(即中间代码)的大小。
2、第一方面,本申请实施例提供了一种编译方法,该方法包括:
3、获取待编译程序,待编译程序包括第一待编译语句,第一待编译语句用于指示进行第一操作;第一待编译语句包括第一数据类型,第一数据类型为第一待编译语句中第一操作的执行结果的数据类型;
4、将待编译程序编译成中间代码,中间代码包括第一待编译语句编译后的第一代码语句;第一代码语句包括第一操作对应的第一指令;
5、基于待编译程序中待编译语句包括的数据类型和中间代码,生成类型信息集合,类型信息集合包括第一代码语句的类型信息,第一
6、在本申请实施例中,电子设备可以将第一操作编译为第一指令,该第一指令与第一操作针对的数据类型(即第一数据类型)无关;进而,电子设备再基于第一数据类型和第一代码语句生成第一代码语句的类型信息;最后,电子设备可以得到中间代码和类型信息集合,中间代码包括第一代码语句,所述类型信息集合包括第一代码语句的类型信息。
7、该方法中,同一操作在针对不同的数据类型时,编译得到的该操作对应的指令是相同的,因此,可以避免同一操作在不同类型下产生不同指令,从而实现指令集的缩减,进而,由于指令集的缩减,指令的编码长度变短,从而减小生成的二进制文件(即中间代码)的大小。
8、结合第一方面,在一种可能的实现方式中,第一代码语句的类型信息包括第一代码语句的标识和第一数据类型的标识。
9、在本申请实施例中,可以通过标识来指示第一代码语句和第一数据类型,从而减小类型信息集合的大小。
10、结合第一方面,在一种可能的实现方式中,第一代码语句位于中间代码的第一位置;
11、第一代码语句的标识为指示第一位置的位置标识,第一代码语句的类型信息用于指示位于中间代码中第一位置的语句中第一指令的执行结果的数据类型为第一数据类型。
12、在一种可能的实现方式中,第一位置可以为位于中间代码中的第n句,则第一代码语句的标识可以为n,n为正整数。
13、在一种可能的实现方法中,第一数据类型的标识可以基于预设映射规则确定的。例如,number的标识为1,int的标识为2等。
14、在一种可能的实现中,类型信息集合为二元组集合,二元组集合包括至少一个二元组,其中,每一个二元组包括两个数据,一个数据为第一代码语句的标识,另一个数据为第一数据类型的标识。
15、结合第一方面,在一种可能的实现方式中,待编译程序包括第二待编译语句,第二待编译语句用于指示对第二数据进行第一操作;第二待编译语句包括第二数据类型,第二数据类型为第二待编译语句中第一操作的执行结果的数据类型;
16、中间代码包括第二待编译语句编译后的第二代码语句,第二代码语句位于中间代码的第二位置;第二语句包括第一指令;
17、类型信息集合包括第二类型信息,第二类型信息包括第二数据类型和第二位置;第二类型信息用于指示位于第二位置的语句中第一指令的执行结果为第二数据类型。
18、结合第一方面,在一种可能的实现方式中,方法还包括:
19、存储中间代码和类型信息集合。
20、结合第一方面,在一种可能的实现方式中,类型信息集合用于将中间代码转换为机器码。
21、结合第一方面,在一种可能的实现方式中,方法还包括:
22、获取第一类型信息;
23、基于第一类型信息中第一代码语句的标识,获取第一代码语句;
24、基于第一代码语句和第一数据类型的标识,得到第一机器码,第一机器码用于执行用于对第一数据执行第一操作以生成数据类型为第一数据类型的执行结果。
25、结合第一方面,在一种可能的实现方式中,待编译程序为动态语言程序。
26、在一种可能的实现方法中,该待编译程序也可以为静态语言程序。
27、第二方面,本申请实施例提供了一种编译装置,该装置包括:
28、获取单元,用于获取待编译程序,待编译程序包括第一待编译语句,第一待编译语句用于指示进行第一操作;第一待编译语句包括第一数据类型,第一数据类型为第一待编译语句中第一操作的执行结果的数据类型;
29、编译单元,用于将待编译程序编译成中间代码,中间代码包括第一待编译语句编译后的第一代码语句;第一代码语句包括第一操作对应的第一指令;
30、生成单元,用于基于待编译程序中待编译语句包括的数据类型和中间代码,生成类型信息集合,类型信息集合包括第一代码语句的类型信息,第一代码语句的类型信息用于指示第一代码语句中第一指令的执行结果的数据类型为第一数据类型。
31、在本申请实施例中,电子设备可以将第一操作编译为第一指令,该第一指令与第一操作针对的数据类型(即第一数据类型)无关;进而,电子设备再基于第一数据类型和第一代码语句生成第一代码语句的类型信息;最后,电子设备可以得到中间代码和类型信息集合,中间代码包括第一代码语句,所述类型信息集合包括第一代码语句的类型信息。
32、该方法中,同一操作在针对不同的数据类型时,编译得到的该操作对应的指令是相同的,因此,可以避免同一操作在不同类型下产生不同指令,从而实现指令集的缩减,进而,由于指令集的缩减,指令的编码长度变短,从而减小生成的二进制文件(即中间代码)的大小。结合第二方面,在一种可能的实现方式中,第一代码语句的类型信息包括第一代码语句的标识和第一数据类型的标识。
33、结合第二方面,在一种可能的实现方式中,第一代码语句位于中间代码的第一位置;
34、第一代码语句的标识为指示第一位置的位置标识,第一代码语句的类型信息用于指示位于中间代码中第一位置的语句中第一指令的执行结果的数据类型为第一数据类型。
35、在一种可能的实现方式中,第一位置可以为位于中间代码中的第n句,则第一代码语句的标识可以为n,n为正整数。
36、在一种可能的实现本文档来自技高网...
【技术保护点】
1.一种编译方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述第一代码语句的类型信息包括所述第一代码语句的标识和所述第一数据类型的标识。
3.根据权利要求2所述的方法,其特征在于,所述第一代码语句位于所述中间代码的第一位置;
4.根据权利要求3所述的方法,其特征在于,所述待编译程序包括第二待编译语句,所述第二待编译语句用于指示对第二数据进行所述第一操作;所述第二待编译语句包括第二数据类型,所述第二数据类型为所述第二待编译语句中所述第一操作的执行结果的数据类型;
5.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
6.根据权利要求1-3任一项所述的方法,其特征在于,所述类型信息集合用于将所述中间代码转换为机器码。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
8.根据权利要求1-7任一项所述的方法,其特征在于,所述待编译程序为动态语言程序。
9.一种编译装置,其特征在于,所述装置包括:
10.一种电子设备
11.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1-8中任一项所述的方法。
...【技术特征摘要】
1.一种编译方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述第一代码语句的类型信息包括所述第一代码语句的标识和所述第一数据类型的标识。
3.根据权利要求2所述的方法,其特征在于,所述第一代码语句位于所述中间代码的第一位置;
4.根据权利要求3所述的方法,其特征在于,所述待编译程序包括第二待编译语句,所述第二待编译语句用于指示对第二数据进行所述第一操作;所述第二待编译语句包括第二数据类型,所述第二数据类型为所述第二待编译语句中所述第一操作的执行结果的数据类型;
5.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
6.根据权利要求1-3任一项所述的方法,其特征在于,所述类型信息集合用于将所述中间代码转换为机器...
【专利技术属性】
技术研发人员:陈庭威,王刚,邱榆,胡峰,张仁高,彭卓立,陈秋瑶,彭彪,姜凯文,
申请(专利权)人:华为终端有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。