基于内联扩展的编译方法、装置、电子设备及存储介质与流程
未命名
07-14
阅读:117
评论:0
1.本发明涉及计算机技术领域,特别是涉及一种基于内联扩展的编译方法、一种基于内联扩展的编译装置、一种电子设备以及一种存储介质。
背景技术:
2.计算机系统中,中央处理器(central processing unit,cpu)可以从内存中读取数据或者在内存中写入数据,字节是内存访问的最小单位,当内存地址a是n字节的倍数时,内存地址a被称为n字节对齐,其中,n是2的幂。否则内存地址a称为非n字节对齐。对于一个过程,当此过程中含有地址类型的参数时,如果该参数不对齐,则访问内存时就会出现跨数据边界访问,即首先要载入跨边界的两个数据块,除去不需要的字节,再将两个数据块合并成一个内存块,从而需要访问两次高速缓存(cache)或者内存。通常,会在过程实现的过程中判断地址是否对齐,进而根据地址对齐情况进行相应的处理,因此,程序的执行效率较低,尤其对于相对简单或数据量较小的过程,判断地址对齐所用的时间在程序运行时间中的占比十分可观。
技术实现要素:
3.鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种基于内联扩展的编译方法,以解决在程序运行过程中判断地址是否对齐,造成程序的执行效率较低的问题。
4.相应的,本发明实施例还提供了一种基于内联扩展的编译装置、一种电子设备以及一种存储介质,用以保证上述方法的实现及应用。
5.为了解决上述问题,本发明实施例公开了一种基于内联扩展的编译方法,包括:
6.在编译过程中,对于待内联扩展的目标过程,当所述目标过程中包括地址类型的参数时,判断所述参数是否对齐;
7.当所述参数对齐时,判断所述目标过程是否符合内联汇编代码的生成条件;
8.当所述目标过程符合所述生成条件时,生成所述目标过程对应的内联汇编代码,其中,所述内联汇编代码用于在运行时,按照所述参数对齐的情况进行访存操作。
9.可选地,在所述判断所述目标过程是否符合内联汇编代码的生成条件之后,还包括:
10.当所述目标过程不符合所述生成条件时,生成用于调用第一库函数的第一指令,
11.其中,所述第一库函数用于在被调用时,按照所述参数对齐的情况进行访存操作。
12.可选地,在所述判断所述参数是否对齐之后,还包括:
13.当所述参数不对齐时,生成用于调用第二库函数的第二指令,
14.其中,所述第二库函数用于在被调用时,按照所述参数不对齐的情况进行访存操作。
15.可选地,在所述判断所述参数是否对齐之后,还包括:
16.当编译时无法判断出所述参数是否对齐时,生成第三指令,
17.其中,所述第三指令用于在执行时判断所述参数是否对齐;当所述参数对齐时,按照所述参数对齐的情况进行访存操作;当所述参数不对齐时,按照所述参数不对齐的情况进行访存操作。
18.可选地,所述当所述参数对齐时,按照所述参数对齐的情况进行访存操作,包括:
19.当所述参数对齐时,调用第一库函数,其中,所述第一库函数用于在被调用时,按照所述参数对齐的情况进行访存操作。
20.可选地,所述当所述参数不对齐时,按照所述参数对齐的情况进行访存操作,包括:
21.当所述参数不对齐时,调用第二库函数,其中,所述第二库函数用于在被调用时,按照所述参数不对齐的情况进行访存操作。
22.可选地,所述内联汇编代码的生成条件包括所述目标过程的汇编指令数量不超过预设数量。
23.本发明实施例还公开了一种基于内联扩展的编译装置,包括:
24.第一判断模块,用于在编译过程中,对于待内联扩展的目标过程,当所述目标过程中包括地址类型的参数时,判断所述参数是否对齐;
25.第二判断模块,用于当所述参数对齐时,判断所述目标过程是否符合内联汇编代码的生成条件;
26.第一生成模块,用于当所述目标过程符合所述生成条件时,生成所述目标过程对应的内联汇编代码,其中,所述内联汇编代码用于在运行时,按照所述参数对齐的情况进行访存操作。
27.本发明实施例还公开了一种电子设备,包括有存储器、以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上的处理器执行所述一个或者一个以上的程序,所述程序包含用于进行以下操作的指令:
28.在编译过程中,对于待内联扩展的目标过程,当所述目标过程中包括地址类型的参数时,判断所述参数是否对齐;
29.当所述参数对齐时,判断所述目标过程是否符合内联汇编代码的生成条件;
30.当所述目标过程符合所述生成条件时,生成所述目标过程对应的内联汇编代码,其中,所述内联汇编代码用于在运行时,按照所述参数对齐的情况进行访存操作。
31.本发明实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上所述的基于内联扩展的编译方法。
32.本发明实施例包括以下优点:
33.在本发明实施例中,在编译过程中,当待内联扩展的目标过程中包括地址类型的参数时,首先判断该参数是否对齐,当该参数对齐时,再判断目标过程是否符合内联汇编代码的生成条件,当目标过程符合生成条件时,生成目标过程对应的内联汇编代码,内联汇编代码可以在运行时,直接按照参数对齐的情况进行访存操作。在本发明实施例中,可以在编译过程中判断目标过程中包括的地址类型的参数是否对齐,进而根据对齐情况选择是否对目标过程进行内联扩展,从而在程序运行时无需再判断地址类型的参数是否对齐,如此,可以在不改变硬件性能的情况下,减少程序运行时判断地址对齐的开销,提高程序运行效率。
附图说明
34.图1是本发明的一种基于内联扩展的编译方法实施例的步骤流程图;
35.图2是本发明的另一种基于内联扩展的编译方法实施例的步骤流程图;
36.图3是本发明的一种基于内联扩展的编译装置实施例的结构框图;
37.图4是根据一示例性实施例示出的一种用于基于内联扩展进行编译的电子设备的结构框图。
具体实施方式
38.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
39.本发明实施例的核心构思之一在于,将原本需要在程序运行时判断对齐的工作放到编译阶段,在编译时,基于内联扩展(in-line expansion)优化遍,通过过程中地址类型的参数的对齐情况选择是否对过程进行内联扩展,从而在实现内联扩展优化的基础上,减少程序运行时判断地址对齐的开销,在不改变硬件性能的情况下,提高程序运行效率。
40.参照图1,示出了本发明的一种基于内联扩展的编译方法实施例的步骤流程图,具体可以包括如下步骤:
41.步骤101:在编译过程中,对于待内联扩展的目标过程,当所述目标过程中包括地址类型的参数时,判断所述参数是否对齐。
42.在本发明实施例中,为了便于理解,首先对编译器内联扩展优化遍的相关内容进行介绍。内联扩展优化遍是一种通过低级代码替代过程调用的机制。
43.通过内联扩展优化遍可以生成过程对应的内联汇编代码,从而在程序运行时,当运行至这部分时,可以直接执行内联的汇编代码,从而实现过程的功能,节约过程调用的开销,提高程序运行效率。
44.在本发明实施例中,首先可以选定需要进行内联扩展优化的目标编译器以及目标过程。在编译过程中,可以对目标过程中的地址类型的参数(可简称为地址)添加特定的标识,从而目标编译器可以根据标识,确定目标过程中是否存在地址类型的参数。在实际应用中,可选地,地址类型的参数可以是数据类型为指针类型的参数。
45.步骤102:当所述参数对齐时,判断所述目标过程是否符合内联汇编代码的生成条件。
46.在本步骤中,若目标过程中的地址类型的参数是所读/写数据的字节宽度的整数倍,则可以确定该参数对齐,进而可以判断目标过程是否符合内联汇编代码的生成条件。
47.在本发明实施例中,可选地,所述内联汇编代码的生成条件包括所述目标过程的汇编指令数量不超过预设数量。也即是当目标过程中的地址类型的参数对齐时,目标编译器可以判断目标过程所包括的汇编指令数量是否超过预设数量。
48.在实际应用中,内联扩展需要考虑过程的大小,如果过程较大,则不适宜采用内联方式,因此,需要考虑过程的大小是否符合内联汇编代码的生成条件。当目标过程所包括的汇编指令数量超过预设数量时,可以说明目标过程较大,当目标过程所包括的汇编指令数量不超过预设数量时,可以说明目标过程较小。例如,通常情况下,包括20-30条汇编指令的过程可以认为是较小的过程,包括100条以上汇编指令的过程可以认为是较大的过程。
49.步骤103:当所述目标过程符合所述生成条件时,生成所述目标过程对应的内联汇编代码,其中,所述内联汇编代码用于在运行时,按照所述参数对齐的情况进行访存操作。
50.在本发明实施例中,当目标过程中包括的地址类型为参数对齐,且目标过程较小的情况下,可以生成目标过程对应的内联汇编代码,目标过程对应的内联汇编代码可以在程序运行时直接执行,从而替代目标过程的实现,如此,则无需在程序运行时调用目标过程,可以节省程序运行时调用过程的开销,提高程序运行效率。
51.进一步地,图2示出了本发明的另一种基于内联扩展的编译方法实施例的步骤流程图,可选地,参照图2,所述方法包括以下步骤:
52.步骤21中,在编译过程中,对于待内联扩展的目标过程,当所述目标过程中包括地址类型的参数时,判断所述参数是否对齐。如果参数对齐,则执行步骤211;如果参数不对齐,则执行步骤212。
53.该步骤可参照步骤101。
54.步骤211中,判断所述目标过程是否符合内联汇编代码的生成条件。如果目标过程符合内联汇编代码的生成条件,则执行步骤211a;如果目标过程不符合内联汇编代码的生成条件,则执行步骤211b。
55.该步骤可参照步骤102。
56.步骤211a中,生成所述目标过程对应的内联汇编代码,其中,所述内联汇编代码用于在运行时,按照所述参数对齐的情况进行访存操作。
57.该步骤可参照步骤103。
58.步骤211b中,生成用于调用第一库函数的第一指令,其中,所述第一库函数用于在被调用时,按照所述参数对齐的情况进行访存操作。
59.在该步骤中,当目标过程中包括的地址类型的参数对齐,但目标过程不符合内联汇编代码的生成条件时,也即目标过程中包括的地址类型的参数对齐,但目标过程较大时,目标编译器可以生成第一指令,第一指令在程序运行的过程中执行时,可以调用第一库函数,第一库函数也即地址对齐模式下的库函数,第一库函数在执行时不会再进行地址是否对齐的判断,而会直接按照地址对齐的情况进行数据的访存操作(也可称为读/写操作),从而可以减少程序运行时判断地址对齐的开销,提高程序运行效率。
60.步骤212中,当所述参数不对齐时,生成用于调用第二库函数的第二指令,其中,所述第二库函数用于在被调用时,按照所述参数不对齐的情况进行访存操作。
61.在该步骤中,当目标过程中包括的地址类型的参数不对齐时,目标编译器可以生成第二指令,第二指令在程序运行的过程中执行时,可以调用第二库函数,第二库函数也即地址不对齐模式下的库函数,第二库函数在执行时也不会再进行地址是否对齐的判断,而会直接按照地址不对齐的情况进行数据的访存操作,从而可以减少程序运行时判断地址对齐的开销。
62.步骤213中,当编译时无法判断出所述参数是否对齐时,生成第三指令,其中,所述第三指令用于在执行时判断所述参数是否对齐,当所述参数对齐时,按照所述参数对齐的情况进行访存操作,当所述参数不对齐时,按照所述参数不对齐的情况进行访存操作。
63.模块是一些可以作为独立程序来编译的函数和数据类型的集合。在该步骤中,进行模块编译时,对于目标过程中地址类型的参数是目标过程所在模块内的地址的情况,可
以判断出该参数是否对齐,但是,若目标过程中的地址类型的参数不是目标过程所在模块内的地址,而是其他模块内的地址,则本模块对应的目标编译器无法在编译阶段判断出该参数是否对齐,因此,目标编译器在无法判断出该参数是否对齐时,可以生成第三指令。第三指令在程序运行的过程中执行时,可以调用一段运行时判断地址类型的参数是否对齐的代码,从而在程序运行时再去判断该参数是否对齐,当该参数对齐时,可以调用第一库函数,从而按照该参数对齐的情况进行访存操作,当该参数不对齐时,可以调用第二库函数,从而按照该参数不对齐的情况进行访存操作。
64.一个模块被加载到操作系统的内核中时,就成为内核代码的一部分,每个模块加载到内核后,各模块内的地址都成为内核中的地址,地址不再有跨模块的区分,因此,在内核加载完成后,当程序运行时,可以调用并运行相关代码来判断地址类型的参数是否对齐。
65.本发明实施例可以将原本需要在程序运行时判断地址对齐的工作放到编译阶段,在编译时,基于内联扩展优化遍,通过过程中地址类型的参数的对齐情况和过程大小,选择是生成内联汇编代码,还是调用对齐模式/不对齐模式的库函数,从而在实现内联扩展优化的基础上,减少程序运行时判断地址对齐以及过程调用的开销,在不改变硬件性能的情况下,提高了程序运行效率。
66.在本发明实施例中,在编译过程中,当待内联扩展的目标过程中包括地址类型的参数时,首先判断该参数是否对齐,当该参数对齐时,再判断目标过程是否符合内联汇编代码的生成条件,当目标过程符合生成条件时,生成目标过程对应的内联汇编代码,内联汇编代码可以在运行时,直接按照参数对齐的情况进行访存操作。在本发明实施例中,可以在编译过程中判断目标过程中包括的地址类型的参数是否对齐,进而根据对齐情况选择是否对目标过程进行内联扩展,从而在程序运行时无需再判断地址类型的参数是否对齐,如此,可以在不改变硬件性能的情况下,减少程序运行时判断地址对齐的开销,提高程序运行效率。
67.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
68.参照图3,示出了本发明的一种基于内联扩展的编译装置实施例的结构框图,基于内联扩展的编译装置300具体可以包括如下模块:
69.第一判断模块301,用于在编译过程中,对于待内联扩展的目标过程,当所述目标过程中包括地址类型的参数时,判断所述参数是否对齐;
70.第二判断模块302,用于当所述参数对齐时,判断所述目标过程是否符合内联汇编代码的生成条件;
71.第一生成模块303,用于当所述目标过程符合所述生成条件时,生成所述目标过程对应的内联汇编代码,其中,所述内联汇编代码用于在运行时,按照所述参数对齐的情况进行访存操作。
72.可选地,所述装置还包括:
73.第二生成模块,用于当所述目标过程不符合所述生成条件时,生成用于调用第一库函数的第一指令,
74.其中,所述第一库函数用于在被调用时,按照所述参数对齐的情况进行访存操作。
75.可选地,所述装置还包括:
76.第三生成模块,用于当所述参数不对齐时,生成用于调用第二库函数的第二指令,
77.其中,所述第二库函数用于在被调用时,按照所述参数不对齐的情况进行访存操作。
78.可选地,所述装置还包括:
79.第四生成模块,用于当编译时无法判断出所述参数是否对齐时,生成第三指令,
80.其中,所述第三指令用于在执行时,判断所述参数是否对齐;当所述参数对齐时,按照所述参数对齐的情况进行访存操作;当所述参数不对齐时,按照所述参数不对齐的情况进行访存操作。
81.可选地,所述第三指令具体用于:
82.当所述参数对齐时,调用第一库函数,其中,所述第一库函数用于在被调用时,按照所述参数对齐的情况进行访存操作。
83.可选地,所述第三指令具体用于:
84.当所述参数不对齐时,调用第二库函数,其中,所述第二库函数用于在被调用时,按照所述参数不对齐的情况进行访存操作。
85.可选地,所述内联汇编代码的生成条件包括所述目标过程的汇编指令数量不超过预设数量。
86.在本发明实施例中,在编译过程中,当待内联扩展的目标过程中包括地址类型的参数时,首先可以通过第一判断模块,判断该参数是否对齐,当该参数对齐时,再通过第二判断模块,判断目标过程是否符合内联汇编代码的生成条件,当目标过程符合生成条件时,可以通过第一生成模块,生成目标过程对应的内联汇编代码,内联汇编代码可以在运行时,直接按照参数对齐的情况进行访存操作。在本发明实施例中,可以在编译过程中判断目标过程中包括的地址类型的参数是否对齐,进而根据对齐情况选择是否对目标过程进行内联扩展,从而在程序运行时无需再判断地址参数是否对齐,如此,可以在不改变硬件性能的情况下,减少程序运行时判断地址对齐的开销,提高程序运行效率。
87.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
88.图4是根据一示例性实施例示出的一种用于基于内联扩展进行编译的电子设备400的结构框图。例如,电子设备400可以是计算机、服务器等。
89.参照图4,电子设备400可以包括以下一个或多个组件:处理组件402、存储器404、电源组件406、多媒体组件408、音频组件410、输入/输出(i/o)的接口412、传感器组件414、以及通信组件416。
90.处理组件402通常控制电子设备400的整体操作,诸如与显示、电话呼叫、数据通信、相机操作和记录操作相关联的操作。处理组件402可以包括一个或多个处理器420来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件402可以包括一个或多个模块,便于处理组件402和其他组件之间的交互。例如,处理组件402可以包括多媒体模块,以方便多媒体组件408和处理组件402之间的交互。
91.存储器404被配置为存储各种类型的数据以支持在设备400的操作。这些数据的示
例包括用于在电子设备400上操作的任何应用程序或方法的指令、联系人数据、电话簿数据、消息、图片、和/或视频等。存储器404可以由任何类型的易失性或非易失性存储设备或者它们的组合实现、例如静态随机存取存储器(sram)、电可擦除可编程只读存储器(eeprom)、可擦除可编程只读存储器(eprom)、可编程只读存储器(prom)、只读存储器(rom)、磁存储器、快闪存储器、磁盘或光盘。
92.电源组件406为电子设备400的各种组件提供电力。电源组件406可以包括电源管理系统、一个或多个电源、以及其他与为电子设备400生成、管理和分配电力相关联的组件。
93.多媒体组件408包括在所述电子设备400和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件408包括一个前置摄像头和/或后置摄像头。当电子设备400处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
94.音频组件410被配置为输出和/或输入音频信号。例如,音频组件410包括一个麦克风(mic),当电子设备400处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器404或经由通信组件416发送。在一些实施例中,音频组件410还包括一个扬声器,用于输出音频信号。
95.i/o接口412为处理组件402和外围接口模块之间提供接口,上述外围接口模块可以是键盘、点击轮、按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
96.传感器组件414包括一个或多个传感器,用于为电子设备400提供各个方面的状态评估。例如,传感器组件414可以检测到设备400的打开/关闭状态,组件的相对定位,例如所述组件为电子设备400的显示器和小键盘,传感器组件414还可以检测电子设备400或电子设备400一个组件的位置改变,用户与电子设备400接触的存在或不存在,电子设备400方位或加速/减速和电子设备400的温度变化。传感器组件414可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件414还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件414还可以包括加速度传感器、陀螺仪传感器、磁传感器、压力传感器或温度传感器。
97.通信组件416被配置为便于电子设备400和其他设备之间有线或无线方式的通信。电子设备400可以接入基于通信标准的无线网络,如wifi、2g或3g、或它们的组合。在一个示例性实施例中,通信组件416经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件416还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
98.在示例性实施例中,电子设备400可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
99.在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器404,上述指令可由电子设备400的处理器420执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
100.一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述任一实施例所述的基于内联扩展的编译方法。
101.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
102.本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
103.本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
104.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
105.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
106.尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
107.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
108.以上对本发明所提供的一种基于内联扩展的编译方法和装置、一种电子设备以及
一种存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
技术特征:
1.一种基于内联扩展的编译方法,其特征在于,包括:在编译过程中,对于待内联扩展的目标过程,当所述目标过程中包括地址类型的参数时,判断所述参数是否对齐;当所述参数对齐时,判断所述目标过程是否符合内联汇编代码的生成条件;当所述目标过程符合所述生成条件时,生成所述目标过程对应的内联汇编代码,其中,所述内联汇编代码用于在运行时,按照所述参数对齐的情况进行访存操作。2.根据权利要求1所述的方法,其特征在于,在所述判断所述目标过程是否符合内联汇编代码的生成条件之后,还包括:当所述目标过程不符合所述生成条件时,生成用于调用第一库函数的第一指令,其中,所述第一库函数用于在被调用时,按照所述参数对齐的情况进行访存操作。3.根据权利要求1所述的方法,其特征在于,在所述判断所述参数是否对齐之后,还包括:当所述参数不对齐时,生成用于调用第二库函数的第二指令,其中,所述第二库函数用于在被调用时,按照所述参数不对齐的情况进行访存操作。4.根据权利要求1所述的方法,其特征在于,在所述判断所述参数是否对齐之后,还包括:当编译时无法判断出所述参数是否对齐时,生成第三指令,其中,所述第三指令用于在执行时判断所述参数是否对齐;当所述参数对齐时,按照所述参数对齐的情况进行访存操作;当所述参数不对齐时,按照所述参数不对齐的情况进行访存操作。5.根据权利要求4所述的方法,其特征在于,所述当所述参数对齐时,按照所述参数对齐的情况进行访存操作,包括:当所述参数对齐时,调用第一库函数,其中,所述第一库函数用于在被调用时,按照所述参数对齐的情况进行访存操作。6.根据权利要求4所述的方法,其特征在于,所述当所述参数不对齐时,按照所述参数对齐的情况进行访存操作,包括:当所述参数不对齐时,调用第二库函数,其中,所述第二库函数用于在被调用时,按照所述参数不对齐的情况进行访存操作。7.根据权利要求1-6中任一项所述的方法,其特征在于,所述内联汇编代码的生成条件包括所述目标过程的汇编指令数量不超过预设数量。8.一种基于内联扩展的编译装置,其特征在于,包括:第一判断模块,用于在编译过程中,对于待内联扩展的目标过程,当所述目标过程中包括地址类型的参数时,判断所述参数是否对齐;第二判断模块,用于当所述参数对齐时,判断所述目标过程是否符合内联汇编代码的生成条件;第一生成模块,用于当所述目标过程符合所述生成条件时,生成所述目标过程对应的内联汇编代码,其中,所述内联汇编代码用于在运行时,按照所述参数对齐的情况进行访存操作。9.一种电子设备,其特征在于,包括有存储器、以及一个或者一个以上的程序,其中一
个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上的处理器执行所述一个或者一个以上的程序,所述程序包含用于进行以下操作的指令:在编译过程中,对于待内联扩展的目标过程,当所述目标过程中包括地址类型的参数时,判断所述参数是否对齐;当所述参数对齐时,判断所述目标过程是否符合内联汇编代码的生成条件;当所述目标过程符合所述生成条件时,生成所述目标过程对应的内联汇编代码,其中,所述内联汇编代码用于在运行时,按照所述参数对齐的情况进行访存操作。10.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1-7中任一项所述的基于内联扩展的编译方法。
技术总结
本发明实施例提供了一种基于内联扩展的编译方法、装置、电子设备及存储介质,涉及计算机技术领域。其中,该方法包括:在编译过程中,当待内联扩展的目标过程中包括地址类型的参数时,判断该参数是否对齐;当该参数对齐时,判断目标过程是否符合内联汇编代码的生成条件;当符合生成条件时,生成目标过程对应的内联汇编代码,内联汇编代码用于在运行时,按照该参数对齐的情况进行访存操作。在本发明实施例中,可以在编译过程中判断目标过程包括的地址类型的参数是否对齐,进而根据对齐情况选择是否对目标过程进行内联扩展,在程序运行时无需再判断地址类型的参数是否对齐,如此,可以减少程序运行时判断地址对齐的开销,提高程序运行效率。行效率。行效率。
技术研发人员:徐成华 程璐璐
受保护的技术使用者:龙芯中科技术股份有限公司
技术研发日:2021.12.29
技术公布日:2023/7/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种固体酸催化剂及其应用 下一篇:一种簇笼状金属硼氢化物固态电解质的制备方法
