中文字幕无码日韩视频无码三区

一種指令解析方法、裝置及智能卡的制作方法

文檔序號:6444941閱讀:275來源:國(guo)知局
專利名稱:一種指令解析方法、裝置及智能卡的制作方法
技術領域
本發明涉及通信技術領域,尤其涉及一種指令解析方法、裝置及智能卡。
背景技術
隨著科技的發展,集成電路antegrated Curcuit, IC)卡以其方便、快捷的優勢得到越來越多人的青睞。尤其是在電信,金融,政府,交通等領域應用越來越廣泛,發卡量逐年快速增長。為了適應人們的需求,卡片的容量也在不斷增加,卡片內存儲的數據越來越大, 對卡內數據庫的應用的需求也不斷增加。然而IC卡自身的特點決定了它內存小的局限性,雖然技術的不斷發展使卡的容量不斷增大,卡的內存也不斷增大,但與大內存設備還是無法相比,使智能卡對大容量數據的使用有很大的局限性,同時也使其支持的功能有了很大的局限性。例如,一條操作命令多是由多幀組成,當卡內數據庫系統對操作命令(例如SQL語句)進行卡內解析時,數據庫系統要保存接收到的每一幀,直到接收到完整的一條操作命令,然后執行該操作命令所指示的操作。現有技術中一條完整的操作命令需要占用大量的內存空間,由此IC卡中操作命令的解析過程占用了大量的內存空間,進而使得其他程序由于沒有足夠的內存而無法運行,降低了 IC卡的工作效率。

發明內容
本發明實施例提供一種指令解析方法、裝置及智能卡,用于解決現有技術中執行操作命令時需要大量的存儲空間的問題。本發明實施例提供一種指令解析方法,所述方法包括接收kl個數據幀,所述kl個數據幀為組成一條操作命令的η個數據幀中的kl 個,kl 彡 1,kl < η ;解析所述kl個數據幀,并根據解析的內容執行相應的操作。本發明實施例提供一種指令解析裝置,包含于智能卡中,所述指令解析裝置包括接收單元,用于接收kl個數據幀,所述kl個數據幀為組成一條操作命令的η個數據幀中的kl個,kl ^ l,kl <n ;解析單元,用于解析所述kl個數據幀,并根據解析的內容執行相應的操作。本發明實施例還提供一種智能卡,包括上述本發明實施例提供的指令解析裝置。可見,采用本發明實施例提供的方法,在接收到一條操作指令包含的一定數量的數據幀后,即對接收到的數據幀進行解析,并根據解析的內容執行相應的操作;可見,該方法在不需要接收到一條操作命令的全部數據幀的情況下,就可對接收到的內容執行相應操作,因此,該方法并不需要大量的存儲空間存儲接收到的操作命令,可大大節省存儲空間。


圖1為本發明實施例提供的一種指令解析方法的流程示意圖;圖2(1)為本發明實施例提供的調整后的表達式子樹(1)的結構示意圖;圖2(2)為本發明實施例提供的調整后的表達式子樹O)的結構示意圖;圖2(3)為本發明實施例提供的調整后的表達式子樹(3)的結構示意圖;圖2(4)為本發明實施例提供的調整后的表達式子樹的結構示意圖;圖2(5)為本發明實施例提供的調整后的表達式子樹(5)的結構示意圖;圖2(6)為本發明實施例提供的調整后的表達式子樹(6)的結構示意圖;圖2(7)為本發明實施例提供的調整后的表達式子樹(7)的結構示意圖;圖2(8)為本發明實施例提供的調整后的表達式子樹(8)的結構示意圖;圖3為本發明實施例提供的一種指令解析裝置的結構示意圖。
具體實施例方式本發明實施例提供一種指令解析方法,該方法在接收到一條操作指令包含的一定數量的數據幀后,即對接收到的數據幀進行解析,并根據解析的內容執行相應的操作;可見,該方法在不需要接收到一條操作命令的全部數據幀的情況下,就可對接收到的內容執行相應操作,因此,該方法并不需要大量的存儲空間存儲接收到的操作命令,可大大節省存儲空間。如圖1所示,該方法包括步驟11,接收kl個數據幀,所述kl個數據幀為組成一條操作命令的η個數據幀中的kl個,kl ^ l,kl < η;步驟12,解析所述kl個數據幀,并根據解析的內容執行相應的操作。一條操作命令包含η個數據幀,在接收到這η個數據幀中的一個或多個后,就開始解析并執行;即不用等到這η個數據幀都接收完全后再解析。進一步的,該方法還可以包括保存所述kl個數據幀中的關聯數據;所述關聯數據為解析所述kl個數據幀時,未解析出的數據;將所述關聯數據與后續接收到的k2個數據幀結合后進行解析,并根據解析的內容執行相應的操作;所述k2個數據幀為組成所述一條操作命令的η個數據幀中的k2個,k2彡1,kl+k2彡η。其中,kl和k2可以相等,也可以不等。本發明實施例的應用背景可以是應用程序根據指令操作智能卡內的其他模塊,應用程序可以位于卡內和卡外。本發明實施例中的操作命令可以是外部傳輸給智能卡的APDU 指令,也可以是智能卡內部傳輸的操作命令。本發明實施例例如可以解析自定義格式數據、 電子錢包應用中密鑰指令數據、應用程序調用卡內的數據庫系統的操作數據等等。自定義格式數據如自定義操作卡內數據庫的語句,創建表語句、自定義訪問控制語句等;調用卡內的數據庫系統的操作數據例如SQL語句。下面以對SQL語句進行解析為例進行說明。實施例本發明實施例提供一種指令解析方法,智能卡以幀(數據幀)為單位接收由SQL 語言編寫的操作命令,即將一條操作命令分成多幀接收,每幀為一個數據幀。SQL語句操作卡內的數據庫系統,SQL語句由PC端傳入卡內,卡內的數據解析模塊對語句實時解析,采用分段式的處理方式,對每一幀進行緩存并實時解析,并將解析后生成的數據傳到卡內的其他功能模塊進行相應的處理;對于一幀指令的尾端的關聯數據(未能解析的數據),將關聯數據緩存,等待與下一幀傳來的數據重新組合在一起后進行解析; 其中緩存每一幀數據和關聯數據的緩存空間nl的大小由實際情況而定。例如一幀APDU 指令的長度為256字節,字段名的長度、每個詞的長度的最大值為16字節,所以nl的值可以為272個字節;即用nl字節的空間可以緩存上一幀的關聯數據和當前幀的數據,這樣對于由多幀數據組成的APDU指令可以只需272個字節即可完成整個解析過程。例如插入 Ig--Bj insert into tab values ( "wang_ming" )," insert"
則“insert”是關聯數據,緩存“ins”,等待下一幀數據來到后解析出“insert” ;解析到表名“tab”時,先用緩存表名“tab”,然后傳入數據處理模塊做表名查找等處理,同樣解析到插入的記錄值時,先緩存記錄如“wang”,然后傳入數據處理模塊進行插入操作,當插入數據量大,如二進制數據,一幀數據傳入的全部為記錄數據時,則可以先用η = 256個字節空間緩存記錄,傳入卡內的數據處理模塊處理。具體的,本發明實施例中,針對一個數據幀中的第一個分隔符之前的內容,以及相鄰兩個分隔符之間的內容,以及最后一個分隔符之后的內容,如果可以解析,則解析并執行,如果無法解析,則為關聯數據,緩存該關聯數據與后續的數據幀合并后解析。下面舉例說明關聯數據如SQL 語句“select SNO, SNAME, from tab where fl = "wang^and f2+f3 < (f4+f5) *5”,當一幀數據的結尾為“SNO,SNAME”時,由于沒有表名信息”tab”,不能直接傳到數據處理模塊進行操作,所以需要將“SN0,SNAME”臨時緩存。“SN0, SNAME"即為關聯數據的一種。本實施例可以采用壓縮存儲的方法為每一個字段名設定字段標識,如SNO的標識為0,SNAME的標識為1,緩存時只存儲字段的標識而不緩存字段的名字,從而節省了存儲空間。字段標識是整個系統實現中的全局標識,可通過查表獲得標識對應的內容,或者預先配置標識對應的內容。下面舉例說明判斷關聯數據和解析每一幀數據的具體過程可以在該智能卡中預先使用SQL語言創建與該智能卡相關的多張表;并根據該智能卡中的內容創建對照表和對應關系表;該對照表中可以包括表名、與表名對應的表標識、字段名、與字段名對應的字段標識、指令關鍵字、指令關鍵字對應的指令關標識、條件關鍵字、與條件關鍵字對應的條件標識;對應關系表中包括表名、字段名、指令關標識、條件關鍵字;其中指令關鍵字為構成SQL語言結構中的、且具有代表相關操作意義的關鍵字,例如,insert into、delete、 seclect等;其中insert into代表需要進行插入操作;delete代表需要進行刪除操作; seclect代表需要進行選擇操作;其中條件關鍵字為where或者if,用于限制執行條件;其中字段名為表中的相關信息,例如wangming等。可以根據數據幀中的分隔符來確定指令關鍵字,相鄰的兩個分隔符之間的內容為一個指令關鍵字;在根據分隔符確定出指令關鍵字后,可以判斷將該指令關鍵字是否與對照表中的指令關鍵字匹配,如果匹配,則保存該指令關鍵字;如果不匹配,則不保存。若在一幀的最后沒有包括一個完整的指令關鍵字,則將不完整的字符緩存,等待與下一陣數據一并解析。例如,一個數據幀的結尾為“ ins”,該“ ins”之后不包含符號(分隔符),則將“ ins” 緩存,接收下一個數據幀后,在“ert”之后可以檢測到分隔符,此時將“ ins”與“ert”合并為指令關鍵字“insert”。其中,此處的“ins”即為關聯數據的一種。
進一步的,為了更好的節約存儲空間,在緩存指令關鍵字、表名、字段名時,可根據對應關系表,分別確定出指令關鍵字、表名和字段名的標識,并將對應的標識保存到緩存中。即緩存時只緩存標識,而不緩存實際的數據,由此可以更好的節約存儲空間。下面介紹本發明實施例中提供的分段解析條件表達式的方法。本發明實施例可以在分段解析指令的基礎上對條件表達式邏輯上的進一步解析采用構建表達式樹的方式,動態構建具有優先級的表達式樹。首先為每一個符號設定一個權值,設定的依據是運算符優先級的大小,優先級越高設定的權值越小,如“ + ”的權值是 al,“< ”的權值是a2,“ = ”的權值是a3等等依次類推,al < a2 < a3。當遇到括號時,括號內的運算符優先級增加。為了方便介紹,本實施例中設置條件表達式中各符號的優先級從大到小的順序與C語言中運算符的優先級順序相同,當遇到括號時,括號并不被加入到結構樹中,僅用來增加括號內的運算符的優先級,及括號內運算符的優先級高于括號外運算符的優先級。通過以下方法解析條件表達式接收到第一段條件表達式al后,根據所述第一段條件表達式al中各個結點的優先級,構建表達式子樹Rl ;所述第一段條件表達式al包括至少兩個節點;接收到下一段表達式a2后,將所述表達式a2中的各個結點按照接收的先后順序, 依次添加到所述表達式子樹Rl中,得到表達式子樹R2 ;重復執行,直至接收到最后一段表達式am后,將表達式am中的各個結點按照接收的先后順序,依次添加到表達式子樹Rm-I 中,得到表達樹Rm ;條件表達式包括m段。具體的,在將表達式a2中的各個結點按照接收的先后順序,依次添加到表達式子樹Rl的過程中,根據表達式子樹Rl和表達式a2中各個結點的優先級,動態調整表達式子樹R1,最終生成表達式子樹R2 ;具體可以包括根據表達式a2中第1個結點的優先級,將所述第1個結點添加到表達式子樹Rl 中,調整表達式子樹Rl,得到表達式子樹Rll ;根據表達式a2中第2個結點的優先級,將所述第2個結點添加到表達式子樹Rll 中,調整表達式子樹Rl 1,得到表達式子樹R12 ;重復執行,直至根據表達式a2中第s個結點的優先級,將所述第s個結點添加到表達式子樹Rls-I中,得到表達式子樹R2 ;其中,所述表達式a2包括s個節點。其它的將后續接收到的表達式中的各個結點按照接收的先后順序,依次添加到之前表達式子樹中,形成新的表達式子樹的過程,參見上述形成表達式子樹R2的過程,在此不再贅述。其中,根據條件表達式al中各個結點(共K個結點)的優先級構建表達式子樹Rl 的過程例如可以為(1)根據表達式al中各個結點的接收順序,將前M(M大于或等于2)個結點按照優先級,構建表達式子樹M1,然后根據第M+1個結點的優先級,將第M+1個結點添加到表達式子樹Ml中(其中,根據第M+1個結點與表達式子樹Ml的結點中的優先級,調整表達式子樹 Ml),得到表達式子樹M2 ;(2)根據第M+2個結點的優先級,將第M+2個結點添加到表達式子樹M2中(其中, 根據第M+2個結點與表達式子樹M2的結點中的優先級,調整表達式子樹M2),得到表達式子樹M3 ;(η)依次類推;根據第K個結點的優先級,將第K個結點添加到表達式子樹Mk-I中 (其中,根據第K個結點與表達式子樹Mk-I的結點中的優先級,調整表達式子樹Mk-I),得到表達式子樹Mk (即表達式子樹Rl)。下面以 select SNO, SNAME, from tab where fl ="wang"and f2+f3 < (f4+f5) 為例進行說明。where子句中的每一個單詞都是表達式樹中的一個結點,運算符為父結點, 運算符連接的變量為孩子結點,按照子句的輸入順序先構建每一棵表達式子樹,構建中后輸入的運算符影響到前面子樹,將之前生成的表達式子樹做相應的調整,直至最后整棵樹生成完成。條件關鍵字where之后依次接收到的指令字段分別為f 1_,= _“,Wang”_,and, _f2, _+_, f3_, < (f4_+,_f5, )_*,_5,如圖 2 中的(1)至(8)所示,過程如下接收第一指令字段“Π_”、第二指令字段“ =_”和第三指令字段“wang”,解析這三段指令字段形成表達式子樹,此時“H”為左孩子結點,“=”為父結點(根節點),“Wang” 為右孩子結點,參見圖2(1);接收到指令字段“AND”后,調整表達式子樹,“=”調整為左孩子結點,“AND”為“=” 的父結點;參見圖2(2);接收到指令字段“ f2 ”后,調整表達式子樹,"AND”為“=”和“ f2 ”的父結點,“ f2 ” 為右孩子結點;參見圖2(3);接收到指令字段“ + ”和“f3”后,調整表達式子樹,“AND”為“=”和“ + ”的父結點, “ + ”為“f2”和“f3”的父節點;參見圖2(4);接收到指令字段“<”后,調整后的表達式子樹參見圖2(5);接收到指令字段“(f4”后,調整后的表達式子樹參見圖2(6);接收到指令字段“ + ”和“f5”后,調整后的表達式子樹參見圖2(7);接收到指令字段“)”、“*”和“5”后,調整后的表達式樹參見圖2(8)。較佳的,本發明實施例提供以結構樹的方式存儲表達式,可大大的節省存儲空間, 例如,使用堆棧的方式存儲進行存儲時,必須預先設置出足夠大的存儲空間,即預先設置的存儲空間應大于表達式實際所需的存儲空間;而使用結構樹在接收到數據幀的同時,只需給表達式劃分出實際所需的存儲空間即可。如圖3所示,本發明實施例提供一種指令解析裝置,包含于智能卡中,所述裝置包括接收單元31,用于接收kl個數據幀,所述kl個數據幀為組成一條操作命令的η個數據幀中的kl個,kl ^ l,kl <n ;解析單元32,用于解析所述kl個數據幀,并根據解析的內容執行相應的操作。所述裝置還包括保存單元33,用于保存所述kl個數據幀中的關聯數據;所述關聯數據為解析所述kl個數據幀時,未解析出的數據;操作單元34,用于將所述關聯數據與后續接收到的k2個數據幀結合后進行解析, 并根據解析的內容執行相應的操作;所述k2個數據幀為組成所述一條操作命令的η個數據幀中的k2個,k2彡1,kl+k2彡η。所述裝置還包括用于解析條件表達式的執行單元35 ;所述執行單元35包括
第一子單元36,用于接收到第一段條件表達式al后,根據所述第一段條件表達式 al中各個結點的優先級,構建表達式子樹Rl ;所述第一段條件表達式al包括至少兩個節點。第二子單元37,用于接收到下一段表達式a2后,將所述表達式a2中的各個結點按照接收的先后順序,依次添加到所述表達式子樹Rl中,得到表達式子樹R2 ;重復執行,直至接收到最后一段表達式am后,將表達式am中的各個結點按照接收的先后順序,依次添加到表達式子樹Rm-I中,得到表達樹Rm ;條件表達式包括m段。所述第二子單元37具體用于接收到下一段表達式a2后,根據表達式a2中第1個結點的優先級,將所述第1個結點添加到表達式子樹Rl中,調整表達式子樹R1,得到表達式子樹Rll ;根據表達式a2中第2個結點的優先級,將所述第2個結點添加到表達式子樹Rl 1中,調整表達式子樹Rl 1,得到表達式子樹R12 ;重復執行,直至根據表達式a2中第s個結點的優先級,將所述第s個結點添加到表達式子樹Rls-I中,得到表達式子樹R2 ;其中,所述表達式a2包括s個節點;重復執行,直至接收到最后一段表達式am后,將表達式am中的各個結點按照接收的先后順序,依次添加到表達式子樹Rm-I中,得到表達樹Rm ;條件表達式包括m段。本實施例中各個單元的工作原理和工作流程參見上述方法實施例中的描述,在此不再贅述。本發明實施例提供一種智能卡,該智能卡中包括上述指令解析裝置。綜上所述,有益效果采用本發明實施例提供的方法,在接收到一定數量的數據幀后,即可對接收到的數據幀進行解析,并根據解析的內容執行相應的操作;可見,該方法在不需要接收到全部操作命令的情況下,就可對接收到的內容執行相應操作,因此,該方法并不需要大量的存儲空間存儲接收到的操作命令,可大大節省存儲空間。較佳的,本發明實施例提供以結構樹的方式存儲表達式,可大大的節省存儲空間, 例如,使用堆棧的方式存儲進行存儲時,必須預先設置出足夠大的存儲空間,即預先設置的存儲空間應大于表達式實際所需的存儲空間;而使用結構樹在接收到數據幀的同時,只需給表達式劃分出實際所需的存儲空間即可。本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或計算機程序產品。因此,本發明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。
權利要求
1.一種指令解析方法,應用于智能卡內,其特征在于,所述方法包括接收kl個數據幀,所述kl個數據幀為組成一條操作命令的η個數據幀中的kl個, kl 彡 1,kl < η ;解析所述kl個數據幀,并根據解析的內容執行相應的操作。
2.根據權利要求1所述的方法,其特征在于,所述方法還包括保存所述kl個數據幀中的關聯數據;所述關聯數據為解析所述kl個數據幀時,未解析出的數據;將所述關聯數據與后續接收到的k2個數據幀結合后進行解析,并根據解析的內容執行相應的操作;所述k2個數據幀為組成所述一條操作命令的η個數據幀中的k2個,k2>l, kl+k2 彡 η。
3.根據權利要求2所述的方法,其特征在于kl= k2。
4.根據權利要求1-3任一所述的方法,其特征在于,還包括通過以下方法解析條件表達式接收到第一段條件表達式al后,根據所述第一段條件表達式al中各個結點的優先級, 構建表達式子樹Rl ;所述第一段條件表達式al包括至少兩個節點;接收到下一段表達式a2后,將所述表達式a2中的各個結點按照接收的先后順序,依次添加到所述表達式子樹Rl中,得到表達式子樹R2 ;重復執行,直至接收到最后一段表達式 am后,將表達式am中的各個結點按照接收的先后順序,依次添加到表達式子樹Rm-I中,得到表達樹Rm ;條件表達式包括m段。
5.根據權利要求4所述的方法,其特征在于,所述將所述表達式a2中的各個結點按照接收的先后順序,依次添加到所述表達式子樹Rl中,得到表達式子樹R2,包括根據表達式a2中第1個結點的優先級,將所述第1個結點添加到表達式子樹Rl中,調整表達式子樹Rl,得到表達式子樹Rll ;根據表達式a2中第2個結點的優先級,將所述第2個結點添加到表達式子樹Rll中, 調整表達式子樹R11,得到表達式子樹R12 ;重復執行,直至根據表達式a2中第s個結點的優先級,將所述第s個結點添加到表達式子樹Rls-I中,得到表達式子樹R2 ;其中,所述表達式a2包括s個節點。
6.一種指令解析裝置,包含于智能卡中,其特征在于,所述裝置包括接收單元,用于接收kl個數據幀,所述kl個數據幀為組成一條操作命令的η個數據幀中的kl個,kl彡1,kl < η ;解析單元,用于解析所述kl個數據幀,并根據解析的內容執行相應的操作。
7.如權利要求6所述的裝置,其特征在于,所述裝置還包括保存單元,用于保存所述kl個數據幀中的關聯數據;所述關聯數據為解析所述kl個數據幀時,未解析出的數據;操作單元,用于將所述關聯數據與后續接收到的k2個數據幀結合后進行解析,并根據解析的內容執行相應的操作;所述k2個數據幀為組成所述一條操作命令的η個數據幀中的 k2 個,k2 彡 1,kl+k2 ^ η。
8.如權利要求6或7所述的裝置,其特征在于,所述裝置還包括用于解析條件表達式的執行單元;所述執行單元包括第一子單元,用于接收到第一段條件表達式al后,根據所述第一段條件表達式al中各個結點的優先級,構建表達式子樹Rl ;所述第一段條件表達式al包括至少兩個節點;第二子單元,用于接收到下一段表達式a2后,將所述表達式a2中的各個結點按照接收的先后順序,依次添加到所述表達式子樹Rl中,得到表達式子樹R2 ;重復執行,直至接收到最后一段表達式am后,將表達式am中的各個結點按照接收的先后順序,依次添加到表達式子樹Rm-I中,得到表達樹Rm;條件表達式包括m段。
9.如權利求8所述的裝置,其特征在于,所述第二子單元具體用于接收到下一段表達式a2后,根據表達式a2中第1個結點的優先級,將所述第1個結點添加到表達式子樹Rl中,調整表達式子樹R1,得到表達式子樹Rll ;根據表達式a2中第2 個結點的優先級,將所述第2個結點添加到表達式子樹Rl 1中,調整表達式子樹Rl 1,得到表達式子樹R12 ;重復執行,直至根據表達式a2中第s個結點的優先級,將所述第s個結點添加到表達式子樹Rls-I中,得到表達式子樹R2;其中,所述表達式a2包括s個節點;重復執行,直至接收到最后一段表達式am后,將表達式am中的各個結點按照接收的先后順序,依次添加到表達式子樹Rm-I中,得到表達樹Rm ;條件表達式包括m段。
10.一種智能卡,其特征在于,包括如權利要求6-9任一所述的指令解析裝置。
全文摘要
本發明涉及通信技術領域,尤其涉及一種指令解析方法、裝置及智能卡,用于解決現有技術中執行操作命令時需要大量的存儲空間的問題。該方法包括接收k1個數據幀,所述k1個數據幀為組成一條操作命令的n個數據幀中的k1個,k1≥1,k1<n;解析所述k1個數據幀,并根據解析的內容執行相應的操作。可見,該方法可節省存儲空間。
文檔編號G06F9/30GK102566971SQ201110460438
公開日2012年7月11日 申請日期2011年12月31日 優先權日2011年12月31日
發明者王亞秀, 郭雁斌 申請人:北京握奇數據系統有限公司
網友(you)詢問留(liu)言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1