[发明专利]一种MSVL语言的编译系统及方法有效
申请号: | 201610980621.X | 申请日: | 2016-11-08 |
公开(公告)号: | CN106371887B | 公开(公告)日: | 2019-09-13 |
发明(设计)人: | 段振华;杨凯;田聪;张南;时一防;王小兵;黄伯虎 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京科亿知识产权代理事务所(普通合伙) 11350 | 代理人: | 汤东凤 |
地址: | 710071 陕西省*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种MSVL语言的编译系统及方法,包括:MSVL前端和底层虚拟机后端;MSVL前端包括词法语法分析模块,预处理模块和中间代码生成模块;LLVM后端包括目标代码生成模块;所述MSVL语言的编译方法对MSVL中的简单语句用正则形的方法进行预处理,对复杂语句,分别对每个并发分量进行预处理,并对每个并发分量创建一个线程。本发明很好地解决了现有技术执行MSVL程序效率低,影响了程序验证和执行的效率的问题,提高了MSVL程序的执行和验证效率;根据程序本身复杂程度的不同,其执行速度可提高几十倍乃至上百倍;并且一次编译成功后程序可以反复执行,无需再次编译。 | ||
搜索关键词: | 一种 msvl 语言 编译 系统 方法 | ||
【主权项】:
1.一种MSVL语言的编译方法,其特征在于,所述MSVL语言的编译方法对MSVL中的简单语句用Normal Form的方法进行预处理,对复杂语句,分别对每个并发分量进行预处理,并对每个并发分量创建一个线程;Pre(P)用于对MSVL程序P进行预处理,其中P是待处理的MSVL程序,P'是预处理后的MSVL程序;具体包括:步骤一,如果P是赋值语句x<= =e, P'=P;否则转到步骤二;步骤二,如果P是skip、x:=e、next p、 p||q、 p and q、 {p1, ..., pm} prj q ,P'=PreNf(Nf(P));否则转到步骤三;步骤三,如果P是if(b) then{p}else{q},P'=if(b){Pre(p)}else{Pre(q)};否则转到步骤四;步骤四,如果P是while(b){p},P'=while(b){Pre(p)};否则转到步骤五;步骤五,如果P是p;q,P'=Pre(p);Pre(q);否则转到步骤六;步骤六,如果P是p or q,P'=if(b){Pre(p)}else{Pre(q)};否则转到步骤七;步骤七,如果P是await(c),P'=Pre(while(!c){skip});否则转到步骤八;步骤八,如果P是len(n),P'=Pre(i<= =0 and while(i<n){i:=i+1});否则转到步骤九;步骤九,如果P是frame(x),将变量x插入到frame符号表中;否则转到步骤十;步骤十,如果P是local x:p,在进程p中声明变量x;否则结束;在步骤二中,Nf(P)将MSVL程序P转换成正则形式;PreNf(Nf(P))对MSVL程序P的正则形式进行预处理,其中R是待处理的MSVL程序的正则形,R'是预处理后的MSVL程序,函数printState()用于输出程序中的变量信息;(1)如果R的形式是and empty,“R'=x1=e1,..., xm=em;printState()”;否则转到(2);(2)如果R的形式是 and next pf,“R'=x1=e1,..., xm=em;printState(); Pre(pf) ”;否则转到(3);(3) 如果R是true and next pf:R'=printState();Pre(pf);否则结束;对MSVL程序中的复杂语句的预处理,其中P是待处理的MSVL程序,P'是预处理后的MSVL程序;(1)如果P是p||q,“P'=createThread(Pre(p), PAL);createThread(Pre(q), PAL) ”;否则转到(2);(2)如果P是p and q,“P'=createThread(Pre(p), AND);createThread(Pre(q), AND) ”;否则转到(3);(3)如果P是{p1,...,pm} prj q,“P'=createThread(Pre(p1),PRJ);...;createThread (Pre(pm),PRJ);createThread(Pre(q),PRJ) ”;否则转到(4);(4)如果P是alw(p),“P'=createThread(while(true) {createThread(Pre(p))}, ALW) ”;否则结束;所述MSVL语言的编译方法的运行在MSVL语言的编译系统中,所述MSVL语言的编译系统包括:MSVL前端和LLVM后端;所述MSVL前端将输入的MSVL程序转换为IR代码;LLVM后端对IR代码进行优化并转为机器码;所述MSVL前端包括词法语法分析模块,预处理模块和中间代码生成模块;词法语法分析模块用于对输入的MSVL程序进行词法语法分析,生成语法树;预处理模块对语法树进行预处理;中间代码模块根据预处理后的语法树生成中间代码;所述LLVM后端包括目标代码生成模块;目标代码生成模块根据中间代码和目标机器生成对应的目标机器码。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610980621.X/,转载请声明来源钻瓜专利网。