[发明专利]一种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 pfR'=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/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top