[发明专利]用于多核的C语言扩充及编译系统支持方法无效
申请号: | 201010140826.X | 申请日: | 2010-04-07 |
公开(公告)号: | CN101794230A | 公开(公告)日: | 2010-08-04 |
发明(设计)人: | 孙斌 | 申请(专利权)人: | 孙斌 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F9/45 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 200072 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 多核 语言 扩充 编译 系统 支持 方法 | ||
1.一种扩展C语言的方法,其特征是添加新的关键字,用新的关键字区别不同的处理器核,使得每一段程序都对应具体的处理器核。为了能够保证与现有C语言的兼容性,我们定义默认处理器为处理器0。上述C语言扩充方法的具体步骤为:
a. 在C语言体系下,保持现有C语言所有关键字;
b. 添加新的关键字,保证其与其他关键字不重合,并且能够代表不同的处理器核,在此,我们选用了MCU、PUB作为新的关键字,其代表设置不同的处理器核;
c. 参照现有C语言一般格式,设计该关键字在C语言中的使用方法。根据现有C语言语法格式,我们设计了MCU、PUB关键字使用方法。
d.为保证与现有C语言程序的兼容性,设置默认处理器编号为0,即当处理器为单核处理器时,其默认处理器核编号即为0。对程序而言,当程序并未如上述c项在定义后作关键字定义时,我们默认所有定义变量、函数、中断定位在处理器0中。
e.在现有C语言编译原理的基础上,添加对这两个关键字进行处理的前置编译程序。
f、添加现有的C语言编译程序,在前置编译程序之后,对分类后的程序进行C语言编译。
2.根据权利要求1所述的保留C语言所有关键字的方法为:
保留C语言所有关键字的方法是保留编译系统对C语言关键字的支持,为此,我们采用了保留原有C语言编译系统的方法,而将本发明所涉及的第e项前置编译程序作为前置独立程序放置在传统编译系统之前。
当程序中没有’MCU’或者’PUB’关键字时,经过前置编译程序时,对其不作处理。生成与原文件一致的文件然后送传统C语言编译程序进行处理,结果是可以保持对传统C语言的兼容性。
3.根据权利要求1所述的添加新关键字的方法为:
在本发明所涉及的第e项前置编译程序中,对新添加的关键字进行词法、语法、语义预处理,并按照这些关键字对程序所涉及的定义变量、定义函数等进行分类,形成中间文件,并将这些文件作为传统编译系统的输入文件,通过传统编译系统进行处理。
在本发明中,采用’MCU’标示不同的处理器核专属变量、函数和中断等,采用’PUB’标示共享变量、函数和中断。
4.根据权利要求1所述的关键字在C语言中的使用方法设计如下:
1)、MCU关键字可以置于所有定义语句后面,在其后面为相应的处理器编号:
(a) 变量定义;置于该定义变量后面,标示该变量为某一处理器的专有变量。如:
inta1MCU1;//’int’为变量类型,’a1’为变量名称,‘MCU’为关键字, //‘1’表示该变量类型存储在处理器核1中
(b) 函数定义:置于该函数定义后面,标示该函数定位在某一处理器的程序存储区中,并且在该处理器中执行。如:
voidfunction1MCU1;//’void’为函数返回值类型,’function1’为//函数名称,‘MCU’为关键字,’1’表示该函数存储在处理器核1所属程序//存储空间中,并由处理器核1执行
(c) 中断定义:置于该中断定义后面,标示该中断定位在某一处理器中,该中断由该处理器处理。如:
Voidinterrupt1MCU1;//’void’为函数返回值类型,’interrupt1’
//为函数名称,‘MCU’为关键字,’1’表示该函数存储在处理器核1所属程//序存储空间中,该中断由处理器核1执行中断处理
2)、PUB关键字针对存在公共存储区的处理器可以置于所有定义语句后面,在其后面为相应的公共存储区编号;
(a) 变量定义;置于该定义变量后面,标示该变量为某一公共存储区的专有变量。如:
inta1PUB1;//’int’为变量类型,’a1’为变量名称,‘MCU’为关键字, //‘1’表示该变量类型存储在公共存储区1中
(b) 函数定义:置于该函数定义后面,标示该函数定位在公共程序存储区中,并且可以由处理器任一处理器核中执行。如:
voidfunction1PUB1;//’void’为函数返回值类型,’function1’为//函数名称,‘PUB’为关键字,’1’表示该函数存储在公共存储区1中,可//以由任一处理器核执行
(c) 中断定义:置于该中断定义后面,标示该中断定位在公共存储区中,该中断可以由任一处理器处理。如:
Voidinterrupt1PUB1;//’void’为函数返回值类型,’interrupt1’
//为函数名称,‘PUB’为关键字,’1’表示该函数存储在公共存储区1中,该中断可以由任一处理器核执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于孙斌,未经孙斌许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010140826.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:多线程看门狗监控方法
- 下一篇:半反半透显示面板