智能合约的编译方法、装置、终端设备及存储介质与流程
- 国知局
- 2024-07-31 23:03:27
本申请属于区块链,尤其涉及一种智能合约的编译方法、装置、终端设备及存储介质。
背景技术:
1、智能合约是一种基于区块链技术的自动化合约,它能够在没有中介的情况下执行合约条款,并确保合约各方的权益。对于智能合约的编译主要是将智能合约对应的字节码转化为机器码,然而通过现有编译方式得到的机器码存在执行效率较低的问题,亟需解决。
技术实现思路
1、本申请目的在于提供一种智能合约的编译方法、装置、终端设备及存储介质,旨在提高机器码的执行效率。
2、本申请实施例的第一方面提供了一种智能合约的编译方法,所述编译方法包括:
3、根据多个ir指令和当前的编译辅助栈,将每个ir指令对应的多个栈变量置于对应寄存器进行指令编译,生成汇编指令;所述寄存器择一为空寄存器和当前编译辅助栈中寄存器栈元素对应的寄存器中的一个,所述多个ir指令是通过对当前待编译的所述智能合约的字节码编译得到;
4、将所述汇编指令编译为对应的机器码;其中,若所述寄存器择一为所述空寄存器,将另一寄存器中的栈变量转移至内存,以将所述另一寄存器转化为空寄存器。
5、在可选的实施例中,所述ir指令包括算术指令,对应的,所述根据多个ir指令和当前的编译辅助栈,将每个ir指令对应的多个栈变量置于对应寄存器进行指令编译,生成汇编指令,包括:
6、根据所述算术指令,在当前的编译辅助栈中取出多个待运算栈元素,对所述多个待运算栈元素对应的栈变量执行运算操作,得到运算结果;
7、将所述运算结果存入对应寄存器内,生成对应的寄存器栈元素,并将所述多个寄存器栈元素写入编译辅助栈栈顶;
8、根据所述运算操作和所述寄存器,生成汇编指令。
9、在可选的实施例中,所述ir指令包括立即数写入指令和算术指令,对应的,所述根据多个ir指令和当前的编译辅助栈,将每个ir指令对应的多个栈变量置于对应寄存器进行指令编译,生成汇编指令,包括:
10、将所述立即数写入指令对应的常量值存入多个常量栈元素,并将所述多个常量栈元素写入编译辅助栈栈顶;
11、根据所述算术指令,在所述编译辅助栈中取出多个待运算栈元素对应的栈变量执行运算操作,得到运算结果;
12、将所述运算结果存入对应寄存器内,生成对应的寄存器栈元素,并将所述多个寄存器栈元素写入编译辅助栈栈顶;
13、根据所述运算操作和所述寄存器,生成汇编指令。
14、在可选的实施例中,所述ir指令包括立即数写入指令和算术指令,对应的,所述根据多个ir指令和当前的编译辅助栈,将每个ir指令对应的多个栈变量置于对应寄存器进行指令编译,生成汇编指令,包括:
15、将所述立即数写入指令对应的常量值存入多个寄存器栈元素,并将所述多个寄存器栈元素写入编译辅助栈栈顶;
16、根据所述算术指令,在所述编译辅助栈中取出多个待运算栈元素对应的栈变量执行运算操作,得到运算结果;
17、将所述运算结果存入对应寄存器内,生成对应的寄存器栈元素,并将所述多个寄存器栈元素写入编译辅助栈栈顶;
18、根据所述运算操作和所述寄存器,生成汇编指令。
19、在可选的实施例中,所述根据所述算术指令,在所述编译辅助栈中取出多个待运算栈元素对应的栈变量执行运算操作,得到运算结果,包括:
20、若所述算术指令对应一个操作数的汇编指令,在所述编译辅助栈中取出多个待运算栈元素对应的栈变量执行第一运算操作,得到运算结果;
21、若所述算术指令对应两个操作数的汇编指令,在所述编译辅助栈中取出多个待运算栈元素对应的栈变量执行第二运算操作,得到运算结果。
22、在可选的实施例中,所述算术指令对应一个操作数的汇编指令,对应的,所述将所述多个运算结果存入对应寄存器内,包括:
23、若所述待运算栈元素为常量栈元素,则申请一空寄存器,将所述运算结果存入所述空寄存器;
24、若所述待运算栈元素为寄存器栈元素,则将所述运算结果存入所述寄存器栈元素对应的寄存器;
25、若所述待运算栈元素为内存栈元素,则申请一空寄存器,将所述运算结果存入所述空寄存器。
26、在可选的实施例中,所述算术指令对应两个操作数的汇编指令,对应的,所述将所述多个运算结果存入对应寄存器内,包括:
27、若两个操作数均为寄存器栈元素,则将所述运算结果存入其中一个寄存器栈元素对应的寄存器;
28、若一个操作数为寄存器栈元素,另一个操作数为常量栈元素,则将所述运算结果存入所述寄存器栈元素对应的寄存器;
29、若一个操作数为寄存器栈元素,另一个操作数为内存栈元素,则将所述运算结果存入所述寄存器栈元素对应的寄存器;
30、若两个操作数均为内存栈元素或均为常量栈元素,则申请一个空寄存器,将所述运算结果存入所述空寄存器。
31、本申请实施例的第二方面提供了一种智能合约的编译装置,所述智能合约的编译装置包括:
32、第一编译模块,用于根据多个ir指令和当前的编译辅助栈,将每个ir指令对应的多个栈变量置于对应寄存器进行指令编译,生成汇编指令;所述寄存器择一为空寄存器和当前编译辅助栈中寄存器栈元素对应的寄存器中的一个,所述多个ir指令是通过对当前待编译的所述智能合约的字节码编译得到;
33、第二编译模块,用于将所述汇编指令编译为对应的机器码;其中,若所述寄存器择一为所述空寄存器,将另一寄存器中的栈变量转移至内存,以将所述另一寄存器转化为空寄存器。
34、本申请实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法。
35、本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法。
36、本申请实施例的第五方面提供了一种计算机程序产品,当所述计算机程序产品在终端设备上运行时,使得所述终端设备执行上述第一方面所述的方法。
37、本申请有益效果
38、本申请提供的智能合约的编译方法、装置、终端设备及存储介质,将每个ir指令对应的多个栈变量置于一寄存器进行指令编译,对于不存在空寄存器的情况,本申请通过将一寄存器中的栈变量转移至内存,使得该寄存器转化为空寄存器,从而在编译过程中可以不断有空寄存器供使用,由于读取寄存器数据速度比读取内存数据速度更快,因此能够提高机器码的执行效率。
技术特征:1.一种智能合约的编译方法,其特征在于,所述编译方法包括:
2.根据权利要求1所述的方法,其特征在于,所述ir指令包括算术指令,对应的,所述根据多个ir指令和当前的编译辅助栈,将每个ir指令对应的多个栈变量置于对应寄存器进行指令编译,生成汇编指令,包括:
3.根据权利要求1所述的方法,其特征在于,所述ir指令包括立即数写入指令和算术指令,对应的,所述根据多个ir指令和当前的编译辅助栈,将每个ir指令对应的多个栈变量置于对应寄存器进行指令编译,生成汇编指令,包括:
4.根据权利要求1所述的方法,其特征在于,所述ir指令包括立即数写入指令和算术指令,对应的,所述根据多个ir指令和当前的编译辅助栈,将每个ir指令对应的多个栈变量置于对应寄存器进行指令编译,生成汇编指令,包括:
5.根据权利要求2或3或4所述的方法,其特征在于,所述根据所述算术指令,在所述编译辅助栈中取出多个待运算栈元素对应的栈变量执行运算操作,得到运算结果,包括:
6.根据权利要求5所述的方法,其特征在于,所述算术指令对应一个操作数的汇编指令,对应的,所述将所述运算结果存入对应寄存器内,包括:
7.根据权利要求5所述的方法,其特征在于,所述算术指令对应两个操作数的汇编指令,对应的,所述将所述多个运算结果存入对应寄存器内,包括:
8.一种智能合约的编译装置,其特征在于,所述智能合约的编译装置包括:
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
技术总结本申请适用于区块链技术领域,提供了一种智能合约的编译方法、装置、终端设备及存储介质,所述编译方法包括:根据多个IR指令和当前的编译辅助栈,将每个IR指令对应的多个栈变量置于一寄存器进行指令编译,生成汇编指令;所述寄存器择一为空寄存器和当前编译辅助栈中寄存器栈元素对应的寄存器中的一个,所述多个IR指令是通过对当前待编译的所述智能合约的字节码编译得到;将所述汇编指令编译为对应的机器码;其中,若所述寄存器择一为所述空寄存器,将另一寄存器中的栈变量转移至内存,以将所述另一寄存器转化为空寄存器。通过上述方案,能够实现提高机器码的执行效率。技术研发人员:端豪,张帅,卢益铭,何奇,齐亚庆受保护的技术使用者:杭州高新区(滨江)区块链与数据安全研究院技术研发日:技术公布日:2024/7/29本文地址:https://www.jishuxx.com/zhuanli/20240730/195826.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表