[发明专利]装饰器模式的指令的存取方法有效
申请号: | 201010237450.4 | 申请日: | 2010-07-23 |
公开(公告)号: | CN101923466A | 公开(公告)日: | 2010-12-22 |
发明(设计)人: | 董渊;王生原;曹震 | 申请(专利权)人: | 清华大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京众合诚成知识产权代理有限公司 11246 | 代理人: | 朱琨 |
地址: | 100084 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 装饰器模式的指令的存取方法属于体系架构描述语言ADL技术领域,其特征在于,在目标机上设置ADL描述文件和ADL分析程序,ADL描述文件依次进行装饰器描述和指令描述,ADL分析程序中的装饰器分析模块、指令分析模块和指令处理模块把体系架构信息描述为类、属性和对象,分别表示具有非常类似的行为、而只有一些例行行为有别的一些指令,格式化的指令所述的装饰器的属性以及指令本身的信息,在此基础上的加在装饰器后的后缀表示不同装饰器模式的指令的继承机制,不仅具有高度的简洁性和表达力,而且比其他ADL描述文件的冗余少得多而且会产生更高质量的描述而有更少的程序错误。 | ||
搜索关键词: | 装饰 模式 指令 存取 方法 | ||
【主权项】:
装饰器模式的指令的存取方法,其特征在于,所述方法是在目标机中依次按以下步骤实现的:步骤(1),目标机的初始化:设立:体系架构描述语言ADL描述文件和体系架构描述语言ADL分析程序,以下简称ADL描述文件和ADL分析程序,其中:ADL描述文件,至少包括装饰器描述部分和指令描述部分,其中:装饰器描述部分,设立下述6条执行加法操作的指令:add,表示两寄存器相加,addc,是指add carrying,表示两寄存器相加并设置进位,adde,是指add extended,表示两寄存器相加并加进位并设置进位,addi,是指add immediate,表示寄存器与立即数相加,addic,是指add immediate carrying,表示寄存器与立即数相加并加进位,addis,是指add immediate shift,表示寄存器与左移16位的立即数相加,定义下述装饰器:carrying装饰器、extended装饰器、immediate装饰器,immediate shift装饰器,其中:carrying装饰器,表示使用进位CARRY位,extended装饰器,表示使用和设置进位CARRY位,immediate装饰器,表示操作数为立即数,immediate shift装饰器,表示操作数为左移16位的立即数,以上装饰器也适用于同样模式的其他类型指令,其中包括减法sub、乘法mul,immediate装饰器和immediate shift装饰器装饰器也可于二进制操作指令如算术与and、算术或or,与后取反nand,定义装饰器模式的指令,是指一组执行相同类型的操作的指令,只要用操作数或特定的子操作加以区别,于是,便能将有区别的操作数或子操作用一个特定的装饰器来加以控制,一个指令能有若干个装饰器,一个装饰器也能用于多种类型的指令,将装饰器提取出作为语义类,将执行相同类型的操作而带有不同装饰器的指令抽象合并为一条基本指令,所述装饰器被描述为:,其中:关键词class定义为一个类,属性name表示类名,属性suffix表示装饰器的后缀为e,属性base表示装饰器的分析处理器Decorator,定义一个该装饰器修改基本指令的语义动作action段,该指令动作段由所述基本指令中的指令动作再添加对基本指令动作的修改动作形成,所述指令动作action段被描述为:$action(%instruction),表示基本指令动作,testset CARRY表示测试进位CARRY,$action(%instruction)testset CARRY表示在指令动作完成后一旦满足条件就修改进位CARRY位,对修改指令操作数的immediate装饰器,则在操作数operand段中重新定义一个修改的操作数段, ,表示源操作数2的类型为16位立即数;指令描述部分,每条基本指令在以其指令名称为XML标记的一个指令信息段中描述,所述指令信息包括:指令动作action、指令编码encoding、指令操作数operand以及指令汇编格式assembly pattern,对于每条指令:若:该指令没有装饰器则为普通指令,则直接定义该指令自身的信息,若:该指令具有装饰器则为基本指令,则在其中定义相应的装饰器decorator段,每个装饰器段表示一条装饰器模式的指令,通过属性name指定其装饰器类名,然后定义指令自身的信息,如果装饰器模式的指令有装饰器类未定义的修改,则在装饰器段中定义;ADL分析程序,含有:装饰器分析模块,指令分析模块和指令处理模块,其中:装饰器分析模块,定义一个装饰器内存对象类,指令装饰器信息类和一个指令信息类,其中:装饰器内存对象类,包括装饰器的名称、装饰器的后缀、指令动作action和指令操作数operand,以用于存储和处理装饰器覆盖的各基本指令的信息,从而建立装饰器类名到该装饰器内存对象的映射表DecoratorMap,指令装饰器信息类,包括装饰器类名称、是否有装饰器类未描述的附加修改、一个装饰器内存对象用于存储和处理装饰器类未描述的附加修改,以用于存储指令的装饰器信息;指令信息类,包括指令名称、指令装饰器信息数组、指令动作action、指令编码encoding、指令操作数operand和指令汇编格式assembly pattern,用于存储和处理所述指令描述部分中的各指令信息,指令分析模块,分析所述指令描述部分的每一条基本指令,其中包括指令名称、指令各装饰器信息及所述指令信息,然后再建立所述指令描述部分中该条指令信息的类别,指令处理模块,根据所述装饰器分析模块建立的DecoratorMap和指令分析模块建立的指令信息,处理生成装饰器模式的指令信息;步骤(2),依次按以下步骤生成ADL源文件:步骤(2.1),所述目标机对每一种输入的指令格式进行步骤(1)所述的装饰器描述和指令描述,步骤(2.2),所述装饰器分析模块依次按以下步骤对输入的装饰器描述部分进行分析处理:步骤(2.2.1),分析各装饰器的名称、后缀以便建立该装饰器的内存对象,步骤(2.2.2),判断装饰器是否定义指令动作段,若有定义则读取指令动作段,分析出用$action表示的原始指令动作部分和对基本指令增加的指令动作部分,将分析结果存储在步骤(2.2.1)建立的装饰器内存对象中,步骤(2.2.3),判断装饰器是否定义指令操作数段,若有定义则读取指令操作数段,分析出装饰器修改的作为子段的指令操作数,将分析结果存储在步骤(2.2.1)建立的装饰器内存对象中,步骤(2.2.4),判断装饰器是否定义指令编码段,若有定义则读取指令编码段,分析出该装饰器修改的位的位置和值,步骤(2.2.5),对所述ADL描述文件的指令格式描述中的每个装饰器定义,重复步骤(2.2.1)~步骤(2.2.4),在内存中建立相应的装饰器内存对象,然后把装饰器类名和分析建立的装饰器内存对象添加到所述映射表DecoratorMap中;步骤(2.3),指令分析模块对输入的所述ADL描述文件的指令描述部分中的各条指令,分析出所述指令装饰器信息类和指令信息类中的各属性,建立各指令信息对象,其中分析指令装饰器信息的详细步骤如下,对每一个装饰器段,分析出其装饰器类名称,判断其是否有附加的段以定义装饰器未描述的附加修改,如果有,则调用装饰器内存对象类对各附加的段进行分析和处理,建立一个装饰器类对象,然后根据分析的结果建立指令装饰器信息对象,并将该指令装饰器信息对象添加到指令装饰器信息数组中;步骤(2.4),指令处理模块根据步骤(2.3)中分析建立的每一个指令信息类对象,判断其是否有装饰器,(i)如果有装饰器,则对每一个指令装饰器信息A,根据其装饰器类名通过所述DecoratorMap取得相应的装饰器类内存对象,以该指令信息对象为参数调用该装饰器类内存对象进行处理,生成相应装饰器类描述的指令信息B,如果A同时具有装饰器类未描述的附加修改,则再以生成的指令信息B为参数调用A中的装饰器类内存对象,生成带有相应装饰器的指令信息,(ii)如果没有装饰器,则该指令不变;其中情况(i)中装饰器内存对象对指令信息进行处理的详细步骤如下,根据步骤(2.2)和步骤(2.3)的分析,对修改指令动作的装饰器,将原始指令动作部分替换为指令自身的动作,并附加指令格式增加的指令动作即得到生成的指令动作;对修改指令操作数的装饰器,则用分析出的装饰器修改的操作数替换该指令在相应位置的操作数,即得到所生成指令的指令操作数;对每个修改指令编码的装饰器,则用分析出的装饰器修改的编码位的位置的值替换该指令编码在相应位置的值,即得到所生成指令的指令编码;步骤(3),把步骤(2.4)生成的各条指令信息转换为指令描述输出,以生成相应的ADL源文件。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201010237450.4/,转载请声明来源钻瓜专利网。
- 上一篇:一种具有共享链路的以太网保护方法和装置
- 下一篇:生物柴油的生产方法