向内联汇编传递参数的方法、装置、设备以及存储介质制造方法及图纸

技术编号:24089512 阅读:32 留言:0更新日期:2020-05-09 07:26
本发明专利技术提供一种向内联汇编传递参数的方法、装置、设备以及存储介质。该方法包括:在编译至源程序的内联汇编时,根据内联汇编的参数读取指针,获取第一内存空间对应的首地址,并根据第一内存空间对应的首地址以及内联汇编中预设置的读取代码,读取第一内存空间中存储的第一参数,通过预先将待传递的参数存储在内存中,使内联汇编能够从内存中读取参数,进而在不引起编译器报错的情况下,完成参数的传递,并且,本方案中对内存的操作,相较于分割后的内联汇编小功能块之间的对内存的操作次数以及传输的数据均明显减少,降低了内存损耗。

Methods, devices, devices, and storage media for passing parameters to inline assemblies

【技术实现步骤摘要】
向内联汇编传递参数的方法、装置、设备以及存储介质
本专利技术涉及计算机
,尤其涉及一种向内联汇编传递参数的方法、装置、设备以及存储介质。
技术介绍
在计算机设计阶段,通常会将汇编语言插入其他高级语言(例如C语言)中进行编写,插入高级语言中的汇编语言编写的代码或者代码段也叫做内联汇编,结合两种语言的特点进行开发工作。采用汇编语言编写应用程序的核心代码,即可以弥补整个程序因使用高级语言带来的性能下降的缺憾,也兼顾了整个程序的简洁度。现有技术中,由于编译器对于非内联汇编(即使用高级语言编写的代码或者代码段)向内联汇编传递参数的个数有限制,当传递的参数超出限制时,编译器则无法完成编译,例如,当非内联汇编向内联汇编传递的参数个数超过30个时,将导致编译失败。对此,本领域通常通过将内联汇编划分为更小的功能块来减少传递的参数的个数。然而,划分之后的内联汇编小功能块之间需要借助内存传输数据,在实际应用场景中,由于内联汇编小功能块之间需要传输的数据和传输的次数均较多,会带来较大的内存损耗。
技术实现思路
本专利技术提供一种向内联汇编传递参数的方法、装置、设备以及存储介质,使得在非内联汇编需要向内联汇编传递参数的数量超过编译器的最大限制时,依然能够成功编译,而不增加内存损耗。第一方面,本专利技术提供一种向内联汇编传递参数的方法,在非内联汇编向内联汇编传递参数的数量超出编译器所限定的最大可传输参数的数量时,所述方法包括:在编译至源程序的内联汇编时,根据所述内联汇编的参数读取指针,获取第一内存空间对应的首地址;根据所述第一内存空间对应的首地址以及所述内联汇编中预设置的读取代码,读取所述第一内存空间中存储的第一参数;其中,所述第一内存空间位于内存中,存储了非内联汇编向所述内联汇编传递的第二参数,所述第一参数为所述非内联汇编向所述内联汇编传递的第二参数中的至少一个。可选的,所述第二参数为所述非内联汇编向所述内联汇编传递的全部参数;或者,所述第二参数为所述非内联汇编向所述内联汇编传递的全部参数中的M个数量的参数,所述M的值不小于全部参数的数量加一再减去所述最大可传输参数的数量。在一种具体的实现方式中,所述方法还包括:将所述非内联汇编向所述内联汇编传递的第二参数设置为一个结构体,并将所述结构体存储于所述第一内存空间;将所述第一内存空间对应的首地址赋值给所述内联汇编的参数读取指针,所述第一内存空间对应的首地址为所述结构体的第一个参数的存储空间对应的地址。在一种具体的实现方式中,在所述内联汇编中预设置的读取代码指示读取第一内存空间中存储的全部参数时,所述方法还包括:根据所述第一内存空间对应的首地址,依次读取所述第一内存空间中存储的全部参数。在一种具体的实现方式中,在所述内联汇编中预设置的读取代码指示读取第一内存空间中存储的一至多个参数时,所述方法还包括:根据预先定义的每个待传递的参数的数据类型,确定每个待读取的参数在第一内存空间中的偏移地址;根据所述第一内存空间对应的首地址和所述每个待读取的参数在第一内存空间中的偏移地址,读取所述第一内存空间中存储的所述参数。第二方面,本专利技术提供一种向内联汇编传递参数的装置,所述装置包括:获取模块,用于在编译至源程序的内联汇编时,根据所述内联汇编的参数读取指针,获取第一内存空间对应的首地址;读取模块,用于根据所述第一内存空间对应的首地址以及所述内联汇编中预设置的读取代码,读取所述第一内存空间中存储的第一参数;其中,所述第一内存空间位于内存中,存储了非内联汇编向所述内联汇编传递的第二参数,所述第一参数为所述非内联汇编向所述内联汇编传递的第二参数中的至少一个。可选的,所述第二参数为所述非内联汇编向所述内联汇编传递的全部参数;或者,所述第二参数为所述非内联汇编向所述内联汇编传递的全部参数中的M个数量的参数,所述M的值不小于全部参数的数量加一再减去所述最大可传输参数的数量。在一种具体的实现方式中,所述装置还包括:处理模块;所述处理模块用于:将所述非内联汇编向所述内联汇编传递的第二参数设置为一个结构体,并将所述结构体存储于所述第一内存空间;将所述第一内存空间对应的首地址赋值给所述内联汇编的参数读取指针,所述第一内存空间对应的首地址为所述结构体的第一个参数的存储空间对应的地址。在一种具体的实现方式中,在所述内联汇编中预设置的读取代码指示读取第一内存空间中存储的全部参数时,所述读取模块具体用于:根据所述第一内存空间对应的首地址,依次读取所述第一内存空间中存储的全部参数。在一种具体的实现方式中,在所述内联汇编中预设置的读取代码指示读取第一内存空间中存储的一至多个参数时,所述读取模块具体用于:根据预先定义的每个待传递的参数的数据类型,确定每个待读取的参数在第一内存空间中的偏移地址;根据所述第一内存空间对应的首地址和所述每个待读取的参数在第一内存空间中的偏移地址,读取所述第一内存空间中存储的所述参数。第三方面,本专利技术提供一种电子设备,包括:存储器及处理器;所述存储器存储计算机执行指令;所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如第一方面所述的向内联汇编传递参数的方法。第四方面,本专利技术提供一种存储介质,包括:可读存储介质和计算机程序,所述计算机程序用于实现第一方面所述的向内联汇编传递参数的方法。本专利技术实施例提供的向内联汇编传递参数的方法、装置、设备以及存储介质,当编译至源程序的内联汇编,根据内联汇编的参数读取指针,获取第一内存空间对应的首地址,并根据第一内存空间对应的首地址以及内联汇编中预设置的读取代码,读取第一内存空间中存储的第一参数,其中,第一内存空间位于内存中,存储了非内联汇编向所述内联汇编传递的第二参数,第一参数为非内联汇编向内联汇编传递的第二参数中的至少一个。本方案在非内联汇编向内联汇编传递参数超过编译器所限定的最大可传输参数的数量时,通过预先将待传递的参数存储在内存中,使内联汇编能够从内存中读取参数,进而在不引起编译器报错的情况下,完成参数的传递;并且,现有技术中因受参数传递数量的限制而将内联汇编划分为多个小功能块,导致小功能块之间的数据传输给内存带来较大损耗,而本方案中对内存的操作,相较于内联汇编的小功能块之间的对内存的操作次数以及传输的数据均明显减少,降低了内存损耗。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的一种向内联汇编传递参数的方法实施例一的流程示意图;图2为本专利技术实施例提供的一种向内联汇编传递参数的方法实施例二的本文档来自技高网...

【技术保护点】
1.一种向内联汇编传递参数的方法,其特征在于,在非内联汇编向内联汇编传递参数的数量超出编译器所限定的最大可传输参数的数量时,所述方法包括:/n在编译至源程序的内联汇编时,根据所述内联汇编的参数读取指针,获取第一内存空间对应的首地址;/n根据所述第一内存空间对应的首地址以及所述内联汇编中预设置的读取代码,读取所述第一内存空间中存储的第一参数;/n其中,所述第一内存空间位于内存中,存储了非内联汇编向所述内联汇编传递的第二参数,所述第一参数为所述非内联汇编向所述内联汇编传递的第二参数中的至少一个。/n

【技术特征摘要】
1.一种向内联汇编传递参数的方法,其特征在于,在非内联汇编向内联汇编传递参数的数量超出编译器所限定的最大可传输参数的数量时,所述方法包括:
在编译至源程序的内联汇编时,根据所述内联汇编的参数读取指针,获取第一内存空间对应的首地址;
根据所述第一内存空间对应的首地址以及所述内联汇编中预设置的读取代码,读取所述第一内存空间中存储的第一参数;
其中,所述第一内存空间位于内存中,存储了非内联汇编向所述内联汇编传递的第二参数,所述第一参数为所述非内联汇编向所述内联汇编传递的第二参数中的至少一个。


2.根据权利要求1所述的方法,其特征在于,
所述第二参数为所述非内联汇编向所述内联汇编传递的全部参数;
或者,
所述第二参数为所述非内联汇编向所述内联汇编传递的全部参数中的M个数量的参数,所述M的值不小于全部参数的数量加一再减去所述最大可传输参数的数量。


3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
将所述非内联汇编向所述内联汇编传递的第二参数设置为一个结构体,并将所述结构体存储于所述第一内存空间;
将所述第一内存空间对应的首地址赋值给所述内联汇编的参数读取指针,所述第一内存空间对应的首地址为所述结构体的第一个参数的存储空间对应的地址。


4.根据权利要求1或2所述的方法,其特征在于,在所述内联汇编中预设置的读取代码指示读取第一内存空间中存储的全部参数时,所述方法还包括:
根据所述第一内存空间对应的首地址,依次读取所述第一内存空间中存储的全部参数。


5.根据权利要求1或2所述的方法,其特征在于,在所述内联汇编中预设置的读取代码指示读取第一内存空间中存储的一至多个参数时,所述方法还包括:
根据预先定义的每个待传递的参数的数据类型,确定每个待读取的参数在第一内存空间中的偏移地址;
根据所述第一内存空间对应的首地址和所述每个待读取的参数在第一内存空间中的偏移地址,读取所述第一内存空间中存储的所述参数。


6.一种向内联汇编传递参数的装置,其特征在于,所述装置包括:
获取模块,用于在编译至源程序的内联汇编时,根据所述内联汇编的参数读取指针,获取第一内存空间对应的首地址;
读取模块,...

【专利技术属性】
技术研发人员:殷时友顾希伟彭飞
申请(专利权)人:龙芯中科合肥技术有限公司
类型:发明
国别省市:安徽;34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1