专利名称:控制寄存器中的标志位的存取方法
技术领域:
本发明属计算机体系架构领域,特别涉及体系架构描述语言ADL。
背景技术:
随着嵌入式处理器越来越复杂和引进各样新的特征,同时编译器不断开发新的优 化技术,为编译器详细描述处理器和体系架构信息越来越复杂,嵌入式处理器与编译器的 鸿沟也越来越大。表达能力强、简洁、可扩展的高质量体系架构描述语言成为迫切需要的工 具。很多编译器难以重定向,它们需要大量的编码和错误调试工作以及对编译器的深 入了解。而另一方面,许多体系架构描述语言(ADL)为模拟器设计,难以为编译器重定向提 取出语义信息。虽然存在支持编译器的ADL和语义扩展工作,对一个架构的完整描述仍然 需要大量的工作,由于各种各样的特征和大量的指令。而且,修改描述很麻烦,并由于冗余 信息和一致性问题可能产生难以发现的bug,这对面向应用程序的处理器(ASIP)可能是重 要问题,因为它们需要经常调整指令。传统上的体系结构描述语言主要为了单一目标如生成模拟器或编译器重定向设 计,然后扩展到其他应用,因此对一个设计工具很直接但不适应其他工具,这由于开发工具 箱需要硬件行为的不同抽象层次的描述。其他ADL为设计工具集设计,但主要关注于周期 精确的模拟器而缺乏对编译器的有效支持。根据其目标的不同,ADL分为三类结构、行为 和混合。MIMOLA属于第一类。在MIMOLA中,硬件结构用一个类似HDL的语言建模为寄存器 转移netlist,门层级的模块为netlist的特例。MIMOLA的结构化方法的优点是同一描述 能用于处理器合成、代码生成、测试和模拟。但是这个语言非常低级,书写工作量很大,而且 用于编译器的灵活性受严格限制。nML和ISDL是行为类的例子。它们捕获典型程序员手册提供的指令集层的处理器 信息来生成设计工具箱,用属性文法描述指令集。ISDL主要为VLIW架构设计。这些语言不 描述显式流水线结构和详细微操作,缺乏生成周期精确模拟器的能力。大多数ADL属于混合类。MDes和EXPRESSION是两个类似LISP的ADL,它们同时 捕获结构和行为的架构信息,主要为设计空间探索(DSE)设计。在MDes中,信息分为几个 段格式、资源使用、延迟、操作、寄存器等。而EXPRESSION将描述划分为两类指令集和结 构。每一类进一步细分为三个子类操作、指令和操作影射;组件、流水线/数据转移路径和 内存子系统。MDes有define预处理特征用于简洁描述。EXPRESSION被用于同构可编程架 构的DSE,并用于可编程SOC的架构探索工具的生成。但是,历史上这些语言在编译器中应 用的不多。LISA有一个类似C的语法,主要设计用于周期和位精确的快速编译模拟器,其主 要特征是使用计时模型在操作层对流水线的描述。RADL扩展LISA支持多流水线,用于周期 和相精确的模拟器。但是这些语言缺乏编译器重定向所需的高层语义,因为这些信息一般
5无法从任意的C语句中提取。ArchC是一个关注于SystemC用户的ADL,它主要基于C++和SystemC的语法。其 主要特征是基于存储的一致性验证。ArchC已被用于生成一些架构的模拟器和汇编器。但是,没有工作为存取控制寄存器中的标志位将面向对象机制引入ADL。控制寄存 器中的标志位影响频繁且具有例行的模式,手工描述复杂且很乏味,并容易出现冗余和信 息不一致等问题。本发明提出一个面向对象的方法进行ADL描述,解决了存取控制寄存器 标志位的问题,其充分消除了描述的冗余,语言简洁灵活健壮,从而使编写和维护均比其它 ADL简单的多。
发明内容
本发明利用计算机体系架构存取技术,设计出一种控制寄存器标志位的存取方 法,该方法将指令抽象为基本指令和指令格式,并用一个继承机制将体系架构信息描述为 类、属性和对象。它不仅有高度的简洁性和表达能力,而且比其它体系架构描述语言ADL的 冗余少的多,而且会产生高质量的描述而有更少的错误。本发明的控制寄存器中的比较标志位的存取方法,是在目标机中依次按以下步骤 实现的步骤(1),目标机的初始化在所述目标机内设置体系架构描述语言ADL描述文件和体系架构描述语言ADL 的分析程序,以下简称ADL描述文件和ADL分析程序,其中ADL描述文件,至少包括指令格式syntax form描述部分和指令描述部分,其中指令格式syntax form描述部分所述指令格式syntax form是指把一些具有非常类似行为而只有一些例行行为 有别的一些指令书写成为同一类基本指令后,再通过添加设定后缀以表示相应不同例行 行为的一类指令,在所述控制寄存器中的比较标志位的存取方法中只有下述两种指令格 式”*”和”*. ”,其中指令格式”*”表示没有影响,指令格式”*. ”表示影响控制寄存器中 的比较标志位LT、GT、EQ和S0,所述指令格式”*”后缀为””,表示空后缀,所述指令格式”,, 的后缀为”.”,表示影响所述控制寄存器的比较标志位,所述指令格式syntax form被描述 为<class name =,,Syntax,,base =,,InstructionGroupGenerator,,>,其中关键词 class定义为一个类,属性name表示类名,属性base表示这一类指令格式的指令组生成器InstructionGroupGenerator,指令格式后缀为空被描述为〈form suffix=””/〉,指令格式为”.”被描述为〈form suffix =”.,,/>,其中关键词form定义每一类 指令格式,属性suffix对每一类指令格式指定其后缀,对指令格式类的组合,则分析定义其中的每一类指令格式,所述指令格式中定义指令动作action段和指令编码encoding段,其中指令动作action段,由所述基本指令中的指令动作再添加上对所述控制寄存器
6中的比较标志位的修改动作形成,所述指令动作action段被描述为$action(% instruction),表示指令动作,testset CRO [LT,GT, EQ, SO],其中testset表示测试标志为CRO的所述控制寄存器的比较标志位,$action (% instruction) testset CRO [LT, GT, EQ, SO]表示在指令动作完成后一 旦满足条件就修改所述控制寄存器中的比较标志位,指令编码encoding段,指定该类指令格式所修改的指令编码的位和相应值,所述指令描述部分,每条基本指令在以其指令名称为XML标记的一个信息段中描 述,所述信息包括指令动作action、指令编码encoding、指令操作数operand以及指令汇 编格式assembly pattern,对于每条基本指令若该指令为空后缀,则表示没有指令格式,则直接定义该指令自身的信息,若该指令具有指令格式,则通过属性syntax指定其指令格式类,再定义指令自 身的信息,ADL分析程序,含有指令格式分析模块,指令分析模块和指令处理模块,其中指令格式分析模块,定义一个指令格式类的内存对象类,一个指令信息类和一个 指令组生成器类InstructionGroupGenerator,其中指令格式类的内存对象类,包括指令格式的类名、指令后缀、指令动作action和 指令编码encoding,以用于存储和处理指令格式类中的各类指令格式的信息,从而建立指 令格式类名到该指令格式类内存对象的映射表SyntaxMap,指令信息类,包括指令名称、指令格式类名name、指令动作action、指令编码 encoding、指令操作数operand和指令汇编格式assembly pattern,用于存储和处理所述 指令描述部分中的各指令信息,指令组生成器类InstructionGroupGenerator,提供分析和处理指令格式的方法,指令分析模块,分析所述指令描述部分的每一条基本指令,其中包括指令名称、指 令是否包含指令格式及所述指令信息,然后再建立所述指令编码段内该条指令格式中指令 信息的类别,指令处理模块,分析所述指令分析模块建立的每一条指令信息类的类别,判断其 是否有指令格式;步骤(2),依次按以下步骤生成ADL源文件步骤(2. 1),所述目标机对每一种输入的指令格式进行步骤⑴所述的指令格式 描述和指令描述,步骤(2. 2),所述指令组生成器InstructionGroupGenerator依次按以下步骤对 输入的指令描述部分进行指令格式分析步骤(2. 2. 1),分析各指令格式的后缀以便建立该类指令格式的内存对象,步骤(2. 2. 2),读取指令动作段,分析出用$acti0n表示的原始指令动作部分和用 testset CRO[LT, GT, EQ, SQ]表示的对该指令格式增加的指令动作,步骤(2. 2. 3),读取指令编码段,分析出该指令格式修改的位的位置和值,步骤(2. 2. 4),根据该类指令格式的内存对象和指令信息生成具有指令格式的各 条指令信息,
步骤(2. 2. 5),对所述ADL描述文件的指令格式描述中的每类指令格式,重复步骤 (2. 2. 1) 步骤(2. 2. 4),在内存中建立相应的指令格式类内存对象和指令信息,然后把指 令格式类名和分析建立的指令格式内存对象添加到所述映射表SyntaxMap中;步骤(2. 3),指令分析模块对输入的所述ADL描述文件的指令描述部分中的各条 指令,在辨识指令名称和指令信息之后建立该指令信息的类别;步骤(2. 4),指令处理模块根据步骤(1)指令格式描述以及各类指令格式组合中 每条指令的分析结果,判断每条指令是否有指令格式若有指令格式,则根据指令格式类名,通过所述映射表SyntaxMap取得相 应的指令格式类内存对象,与该指令的信息一起作为参数,输入所述指令组生成器 InstructionGroupGenerator,经过处理后,生成相应指令格式类描述的带有指令格式的各 条指令信息,其中所述指令组生成器InstructionGroupGenerator的处理过程为对每个 添加指令动作的指令格式,把原始指令动作部分替换为基本指令自身的动作,并附加指令 格式增加的指令动作,对每个要修改指令编码的指令格式,则用分析出的指令格式修改的 编码位的位置的值来替换该指令编码在相应位置的值,即得到所生成的指令编码,若无指令格式,则该指令不变;步骤(3),把步骤(2. 5)生成的各条指令信息转换为指令描述输出,以生成相应的 ADL源文件。本发明的控制寄存器标志位的存取方法的所需的ADL描述文件具有简洁、表达能 力强、描述质量高等优点,它比其它体系架构描述语言ADL的冗余少的多而产生更少的错 误,同时更容易修改和维护。该控制寄存器标志位的存取方法可与各类通用处理器、图形处理器、嵌入式处理 器等的设计和相关工具链如模拟器、编译器、汇编器的开发相结合,应用于软硬件协同设 计。并且,该方法也可作为硬件描述方法用于编译器的跨体系架构的自动重定向的研发。
图1示出了本发明的流程图;图2示出了本发明示例的ADL指令描述文件;图3示出了图2示例的ADL指令描述文件对应的ADL分析程序输出的ADL指令描 述源文件。
具体实施例方式本发明的目标机的指令可以具有指令格式(syntax form),指令格式可理解为将 具有非常类似行为、而只有一些例行行为区别的一些指令,书写为同一条指令,并通过添加 特定后缀表示不同的例行行为;设目标机指令集有”*”、“*. ”、“*o”、“*o. ”四种指令格式, 各指令格式语义相同”* “格式没有影响,”*. ”格式影响CRO控制寄存器中的比较标志位 LT、GT、EQ和S0,“*o”格式影响定点异常寄存器(XER)中的溢出标志位SO和0V,,,*。· ”格 式影响上述所有;为描述具有四个指令格式的指令,传统上需要为每条指令定义四条,不仅冗余且 很乏味,本发明公开影响控制寄存器中的标志位的存取方法,将指令格式定义为指令格式类,可自动生成带有指令格式的指令,然后,可以使每一个基本指令继承这个类,而定义每 个指令仅一次;用这种方法,灵活性、可读性和简洁性均显著提高,并减少了冗余。控制寄存器中的标志位的存取方法,其特征在于,所述方法包括体系架构描述语 言ADL描述文件和ADL分析程序,其中ADL描述文件中至少包括指令格式描述部分和指令 描述部分,ADL分析程序中设立指令格式分析模块、指令分析模块、指令处理模块,通过本方 法处理最终生成ADL源文件,所述方法包括如下步骤步骤(1),ADL描述文件中的指令格式描述;在所述ADL描述文件的指令格式描述部分中对每一种需要的指令格式组合以 class关键字定义一个类,通过name属性指出其类名;通过base属性指定其基类为指令组 生成器InstructionGroupGenerator,表明定义的是指令格式类,用于存取控制寄存器中的 标志位,所述指令格式分析模块将调用指令组生成器类的方法对所描述的指令格式进行分 析和处理;在指令格式类中用form关键字定义每个指令格式,通过suffix属性对每个指令 格式指明其后缀;如对“*”和” *. ”指令格式组合,则定义两个指令格式,其后缀分别为”.,, 和””,分别表示影响控制寄存器中的比较标志位的指令的后缀为”.”,不影响控制寄存器中 的比较标志位的指令的后缀为””表示空后缀;在指令格式中定义指令动作(action)和指令编码(encoding)段,分别定义该指 令格式对指令的动作和编码的修改,如果没有修改,则可不定义相应的段;对指令动作段, 可以用”$acti0n(% instruction) ”代指指令定义中的指令动作,再添加对控制寄存器中的 比较标志位的修改动作,对指令编码段,指出该指令格式修改的指令编码的位和相应值;如 对后缀为””的指令格式,不定义指令动作和指令格式段,对后缀为,,.,,的指令格式,指令动 作段类似,,$action(% instruction) testset CRO [LT, GT, EQ, SO],,,表示指令完成其自身 动作后在满足条件时修改控制寄存器中的比较标志位;步骤(2),ADL描述文件中的指令描述;在所述ADL描述文件中的指令描述部分中,每条基本指令在以其名称为XML标记 的一个信息段中描述,对每条基本指令,(i)如果其具有指令格式,则通过syntax属性指定 其指令格式类,然后定义指令自身的信息,( )如果指令没有指令格式,则直接定义指令自 身的信息;每条基本指令自身的信息在指令中在各段中定义,包括指令动作(action)、指令 编码(encoding)、指令操作数(operand)、指令汇编格式(assembly);步骤(3),所述ADL分析程序的指令格式分析模块;定义一个指令格式类内存对象类,用于存储和处理指令格式类中的各指令格式信 息,包括指令后缀、指令动作和指令编码;定义一个指令信息类,用于存储和处理所述指令描述部分中的各指令信息,包括 指令名称、指令格式属性、指令动作、指令编码、指令操作数和指令汇编格式;在内存中建立指令格式类名到指令格式类内存对象的映射表SyntaxMap ;定义一个指令组生成器类InstructionGroupGenerator,提供分析和处理指令格 式的通用方法,包括分析各指令格式的后缀建立指令格式类内存对象、读取和修改各指令 格式中的指令动作和指令编码段、根据指令格式类内存对象和指令信息生成具有指令格式的各条指令信息;对指令动作段,分析出原始指令动作部分和该指令格式增加的指令动作,对指令 编码段,分析出该指令格式修改的位的位置和值;如对后缀为””的指令格式,则分析出对指 令各段没有影响,对后缀为”.”的指令格式,分析出对指令动作段的修改为在指令自身动作 后添加动作” testset CRO [LT,GT, EQ, SO] ” ;对所述ADL描述文件的指令格式描述中的每一个指令格式类,ADL分析程序调用 指令组生成器类的方法对指令格式类中的各指令格式进行分析和处理,在内存中建立相应 的指令格式类内存对象,然后将指令格式类名和分析建立的指令格式内存对象添加到映射 ^ SyntaxMap φ ;步骤(4),所述ADL分析程序的指令分析模块,其中对所述ADL描述文件的指令描 述中的每一条指令,ADL分析程序分析处理指令描述,包括指令名称、是否包含指令格式及 指令格式名称、指令动作、指令编码各位代表的信息、指令操作数和指令汇编格式,然后建 立指令信息类的对象;步骤(5),所述ADL分析程序的指令处理模块,其中对步骤⑷中分析建立的每一 个指令信息类对象,判断其是否有指令格式,(i)如果有指令格式,则根据指令格式类名通 过SyntaxMap取得相应的指令格式类内存对象,与该指令信息对象一起作为参数调用指令 组生成器类的方法进行处理,生成相应指令格式类描述的带有指令格式的各条指令信息, ( )如果没有指令格式,则该指令不变。其中情况(i)中指令组生成器对指令格式类内存对象和指令信息进行处理的详 细步骤如下,根据步骤(3)和步骤(4)的分析,对每个增加指令动作的指令格式,将原始指 令动作部分替换为基本指令自身的动作,并附加指令格式增加的指令动作即得到生成的指 令动作,对每个修改指令编码的指令格式,则用分析出的指令格式修改的编码位的位置的 值替换该指令编码在相应位置的值,即得到所生成指令的指令编码;步骤(6),将步骤5处理生成的各条指令信息转换为指令描述输出生成相应的ADL 源文件。为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施 方式作进一步地详细描述。图1示出了本发明的流程图。如图1所示,首先在步骤101中,在ADL描述文件中 描述指令格式。本示例描述整数运算指令的一个子集add(两寄存器相加),addc(两寄存 器相加并加进位),addi (寄存器与立即数相加),其中adcUaddc带有影响控制寄存器中的 比较标志位的指令格式,addi没有指令格式。在ADL描述文件的指令格式描述部分中以class关键字定义一个名称为Syntax、 基类为指令组生成器InstructionGroupGenerator的指令格式类,如图2所示。在指令格 式类中用form关键字定义两个后缀分别为”.”和””的指令格式,分别表示影响控制寄存 器中的比较标志位的指令的后缀为”.”,不影响控制寄存器中的比较标志位的指令的后缀 为””表示空后缀。空后缀指令格式对指令动作和指令编码均无影响,则不定义任何段。在 后缀为”.,,的指令格式中定义指令动作和指令编码段,指令动作段中testset关键字表示 测试标志寄存器的标志位,其内容”$action(% instruction) testset CRO[LT,GT,EQ,SO] ” 表示指令完成其自身动作后在满足条件时修改控制寄存器CRO中的比较标志位LT,GT,EQ,
10SO ;指令编码段为” 1 [31] ”,表示将编码第31位修改为1。接着在步骤102中,在ADL描述文件中描述各指令信息。对add和addc指令,通 过syntax属性指明其指令格式类为Syntax。分别定义出各指令的指令动作、指令编码、指 令操作数和指令汇编格式段。其中指令操作数段中”〈result type =”GPR”/>”表示目的 操作数类型为通用寄存器GPR,,,<srcltype =,,GPR" />”表示源操作数1类型为通用寄存 器 Gra。指令编码段中” 31
result [6-10] srcl [11-15] src2 [16-20] 532 [21-31] ” 表示 0-5位为31,6-10位为目的操作数result,11-15位和16-20为分别为两个源操作数srcl 和 src2, 21-31 位为 532。在步骤103中,分别定义出指令格式类内存对象类和指令信息类,再定义指令 格式类名到指令格式类内存对象的映射表SyntaxMap,然后定义一个指令组生成器类 InstructionGroupGenerator,提供分析和处理指令格式的通用方法,包括分析各指令格式 的后缀建立指令格式类内存对象、读取和修改各指令格式中的指令动作和指令编码段、根 据指令格式类内存对象和指令信息生成具有指令格式的各条指令信息。ADL分析程序分析Syntax指令格式类并建立指令格式类内存对象,分析出(i)后 缀为””的指令格式对指令各段没有影响,( )后缀为”.”的指令格式对指令动作段的修改 为在指令自身动作后添加动作” testset CRO [LT,GT, EQ, SO] ”,对指令编码段的修改为将编 码第31位修改为1。然后将指令格式类名Syntax和分析建立的指令格式类内存对象添加 到映射表SyntaxMap中。在步骤104中,ADL分析程序分析三条指令描述add、addc和addi,分析出add和 addc有指令格式Syntax,而addi没有指令格式,同时分析出指令动作、指令编码、指令操作 数和指令汇编格式各段,然后建立各条指令的指令信息类的对象。在步骤105中,ADL分析程序处理对步骤104中分析建立的每一个指令信息类对 象。判断出add和addc具有指令格式Syntax,然后根据指令格式类名Syntax通过查找 SyntaxMap取得指令格式类Syntax的指令格式类内存对象。然后分别对add和addc指令, 以指令信息对象和指令格式类Syntax的指令格式类内存对象为参数调用指令组生成器类 的方法进行处理指令,生成带有指令格式的各条指令信息add、add.、addc、addc.。对没有 指令格式的addi指令不做处理。最后在步骤106中,将步骤105处理生成的各条指令信息转换为指令描述输出生 成相应的ADL源文件,如图3所示。
权利要求
控制寄存器中的比较标志位的存取方法,其特征在于,所述方法是在目标机中依次按以下步骤实现的步骤(1),目标机的初始化在所述目标机内设置体系架构描述语言ADL描述文件和体系架构描述语言ADL的分析程序,以下简称ADL描述文件和ADL分析程序,其中ADL描述文件,至少包括指令格式syntax form描述部分和指令描述部分,其中指令格式syntax form描述部分所述指令格式syntax form是指把一些具有非常类似行为而只有一些例行行为有别的一些指令书写成为同一类基本指令后,再通过添加设定后缀以表示相应不同例行行为的一类指令,在所述控制寄存器中的比较标志位的存取方法中只有下述两种指令格式”*”和”*.”,其中指令格式”*”表示没有影响,指令格式”*.”表示影响控制寄存器中的比较标志位LT、GT、EQ和SO,所述指令格式”*”后缀为””,表示空后缀,所述指令格式”*.”的后缀为”.”,表示影响所述控制寄存器的比较标志位,所述指令格式syntax form被描述为<class name=”Syntax”base=”InstructionGroupGenerator”>,其中关键词class定义为一个类,属性name表示类名,属性base表示这一类指令格式的指令组生成器InstructionGroupGenerator,指令格式后缀为空被描述为<form suffix=””/>,指令格式为”.”被描述为<form suffix=”.”/>,其中关键词form定义每一类指令格式,属性suffix对每一类指令格式指定其后缀,对指令格式类的组合,则分析定义其中的每一类指令格式,所述指令格式中定义指令动作action段和指令编码encoding段,其中指令动作action段,由所述基本指令中的指令动作再添加上对所述控制寄存器中的比较标志位的修改动作形成,所述指令动作action段被描述为$action(%instruction),表示指令动作,testset CR0[LT,GT,EQ,SO],其中testset表示测试标志为CR0的所述控制寄存器的比较标志位,$action(%instruction)testset CR0[LT,GT,EQ,SO]表示在指令动作完成后一旦满足条件就修改所述控制寄存器中的比较标志位,指令编码encoding段,指定该类指令格式所修改的指令编码的位和相应值,所述指令描述部分,每条基本指令在以其指令名称为XML标记的一个信息段中描述,所述信息包括指令动作action、指令编码encoding、指令操作数operand以及指令汇编格式assembly pattern,对于每条指令若该指令为空后缀,则表示没有指令格式,则直接定义该指令自身的信息,若该指令具有指令格式,则通过属性syntax指定其指令格式类,再定义指令自身的信息,ADL分析程序,含有指令格式分析模块,指令分析模块和指令处理模块,其中指令格式分析模块,定义一个指令格式类的内存对象类,一个指令信息类和一个指令组生成器类InstructionGroupGenerator,其中指令格式类的内存对象类,包括指令格式的类名、指令后缀、指令动作action和指令编码encoding,以用于存储和处理指令格式类中的各类指令格式的信息,从而建立指令格式类名到该指令格式类内存对象的映射表SyntaxMap,指令信息类,包括指令名称、指令格式类名name、指令动作action、指令编码encoding、指令操作数operand和指令汇编格式assembly pattern,用于存储和处理所述指令描述部分中的各指令信息,指令组生成器类InstructionGroupGenerator,提供分析和处理指令格式的方法,指令分析模块,分析所述指令描述部分的每一条基本指令,其中包括指令名称、指令是否包含指令格式及所述指令信息,然后再建立所述指令编码段内该条指令格式中指令信息的类别,指令处理模块,分析所述指令分析模块建立的每一条指令信息类的类别,判断其是否有指令格式;步骤(2),依次按以下步骤生成ADL源文件步骤(2.1),所述目标机对每一种输入的指令格式进行步骤(1)所述的指令格式描述和指令描述,步骤(2.2),所述指令组生成器InstructionGroupGenerator依次按以下步骤对输入的指令描述部分进行指令格式分析步骤(2.2.1),分析各指令格式的后缀以便建立该类指令格式的内存对象,步骤(2.2.2),读取指令动作段,分析出用$action表示的原始指令动作部分和用testset CR0[LT,GT,EQ,SQ]表示的对该指令格式增加的指令动作,步骤(2.2.3),读取指令编码段,分析出该指令格式修改的位的位置和值,步骤(2.2.4),根据该类指令格式的内存对象和指令信息生成具有指令格式的各条指令信息,步骤(2.2.5),对所述ADL描述文件的指令格式描述中的每类指令格式,重复步骤(2.2.1)~步骤(2.2.4),在内存中建立相应的指令格式类内存对象和指令信息,然后把指令格式类名和分析建立的指令格式内存对象添加到所述映射表SyntaxMap中;步骤(2.3),指令分析模块对输入的所述ADL描述文件的指令描述部分中的各条指令,在辨识指令名称和指令信息之后建立该指令信息的类别;步骤(2.4),指令处理模块根据步骤(1)指令格式描述以及各类指令格式组合中每条指令的分析结果,判断每条指令是否有指令格式若有指令格式,则根据指令格式类名,通过所述映射表SyntaxMap取得相应的指令格式类内存对象,与该指令的信息一起作为参数,输入所述指令组生成器InstructionGroupGenerator,经过处理后,生成相应指令格式类描述的带有指令格式的各条指令信息,其中所述指令组生成器InstructionGroupGenerator的处理过程为对每个添加指令动作的指令格式,把原始指令动作部分替换为基本指令自身的动作,并附加指令格式增加的指令动作,对每个要修改指令编码的指令格式,则用分析出的指令格式修改的编码位的位置的值来替换该指令编码在相应位置的值,即得到所生成的指令编码,若无指令格式,则该指令不变;步骤(3),把步骤(2.5)生成的各条指令信息转换为指令描述输出,以生成相应的ADL源文件。
全文摘要
控制寄存器中的比较标志位的存取方法属于体系架构描述语言ADL技术领域,其特征在于,在目标机上设置ADL描述文件和ADL分析程序,ADL描述文件依次进行指令格式描述和指令描述,ADL分析程序中的指令格式分析模块、指令分析模块和指令处理模块把体系架构信息描述为类、属性和对象,分别表示具有非常类似的行为、而只有一些例行行为有别的一些指令,格式化的指令所述的指令格式的属性以及指令本身的信息,在此基础上的加在指令格式后的后缀表示不同指令格式的继承机制,不仅具有高度的简洁性和表达力,而且比其他ADL描述文件的冗余少得多而且会产生更高质量的描述而有更少的程序错误。
文档编号G06F9/30GK101916179SQ201010229449
公开日2010年12月15日 申请日期2010年7月12日 优先权日2010年7月12日
发明者曹震, 王生原, 董渊 申请人:清华大学