[發明專利]裝飾器模式的指令的存取方法有效
| 申請號: | 201010237450.4 | 申請日: | 2010-07-23 |
| 公開(公告)號: | CN101923466A | 公開(公告)日: | 2010-12-22 |
| 發明(設計)人: | 董淵;王生原;曹震 | 申請(專利權)人: | 清華大學 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 北京眾合誠成知識產權代理有限公司 11246 | 代理人: | 朱琨 |
| 地址: | 100084 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 裝飾 模式 指令 存取 方法 | ||
1.裝飾器模式的指令的存取方法,其特征在于,所述方法是在目標機中依次按以下步驟實現的:
步驟(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=”ExtendedDecorator”base=”Decorator”suffix=”e”>,其中:關鍵詞class定義為一個類,
屬性name表示類名,
屬性suffix表示裝飾器的后綴為e,
屬性base表示裝飾器的分析處理器Decorator,
定義一個該裝飾器修改基本指令的語義動作action段,該指令動作段由所述基本指令中的指令動作再添加對基本指令動作的修改動作形成,所述指令動作action段被描述為:$action(%instruction),表示基本指令動作,testset?CARRY表示測試進位CARRY,$action(%instruction)testset?CARRY表示在指令動作完成后一旦滿足條件就修改進位CARRY位,
對修改指令操作數的immediate裝飾器,則在操作數operand段中重新定義一個修改的操作數段,
<src2type=”imm16”/>,表示源操作數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源文件。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于清華大學,未經清華大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010237450.4/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種具有共享鏈路的以太網保護方法和裝置
- 下一篇:生物柴油的生產方法





