[發明專利]一種嵌入式系統上下文的分析方法有效
| 申請號: | 201410218381.0 | 申請日: | 2014-05-22 |
| 公開(公告)號: | CN104035765B | 公開(公告)日: | 2017-03-15 |
| 發明(設計)人: | 劉應江;劉昊 | 申請(專利權)人: | 烽火通信科技股份有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 北京捷誠信通專利事務所(普通合伙)11221 | 代理人: | 魏殿紳,龐炳良 |
| 地址: | 430074 湖北省武*** | 國省代碼: | 湖北;42 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 嵌入式 系統 上下文 分析 方法 | ||
1.一種嵌入式系統上下文的分析方法,其特征在于,包括以下步驟:
步驟S1:從當前指令位置開始,在預設的指令掃描區間內遞減分析指令,記錄由堆棧指針調整指令和返回地址壓棧指令組成的指令對,并對指令對中的兩種指令的地址各定義一個指令對數組;
步驟S2:分析所述指令對,排除含有虛假信息的指令對,記錄有效指令對;在預設的指令掃描區間內,所述堆棧指針調整指令的地址增加后的指令,為堆棧指針調整指令的匹配指令的前提下,若所述匹配指令的前一條指令是函數返回指令,且該匹配指令的地址增加后的指令不是堆棧指針調整指令,則記錄當前指令對有效;
步驟S3:分析所述有效指令對,根據有效指令對及CPU的指令體系,得出正確的返回地址和上一級函數的堆棧指針。
2.如權利要求1所述的嵌入式系統上下文的分析方法,其特征在于:步驟S1中,按照函數調用規范遞減分析指令。
3.如權利要求1所述的嵌入式系統上下文的分析方法,其特征在于:所述指令對中的每個指令,是根據其固定的函數頭確定的。
4.如權利要求1所述的嵌入式系統上下文的分析方法,其特征在于:步驟S1中,還包括以下步驟:
步驟S101:初始化指令對數組變量,并設置相關標志位變量;
步驟S102:設置記錄當前指令的地址的臨時變量為下一條要分析指令的地址;分析當前指令是否為函數返回指令,若是,跳轉至步驟S103,若否,跳轉至步驟S104;
步驟S103:跳過當前指令后的為零的填充指令,分析函數返回指令的地址增加后的指令是否為堆棧指針調整指令,若否,跳轉至步驟S104;若是,結束分析;
步驟S104:判斷當前指令是否為返回地址壓棧指令,若是,跳轉至步驟S105;若否,跳轉至步驟S106;
步驟S105:在用于記錄返回地址壓棧指令的地址的指令對數組變量中,記錄當前指令的地址,并修改發現返回地址壓棧指令的標志位變量;
步驟S106:在匯編指令的低地址指令為返回地址壓棧指令的前提下,判斷是否為堆棧指針調整指令,若是,跳轉至步驟S107,若否,跳轉至步驟S108;
步驟S107:在用于記錄堆棧指針調整指令的地址的指令對數組中,記錄相應指令的地址,并修改發現堆棧指針調整指令的標志位變量,跳轉至步驟S108;
步驟S108:判斷是否達到指令掃描區間,若否,跳轉至步驟S202,若是,結束分析。
5.如權利要求4所述的嵌入式系統上下文的分析方法,其特征在于:步驟S101中,初始化指令對數組變量,并設置相關標志位變量;包括獲取當前指令的地址,設置發現返回地址壓棧指令、堆棧指針調整指令的標志位變量,定義當前指令地址的臨時變量。
6.如權利要求1所述的嵌入式系統上下文的分析方法,其特征在于:步驟S2中,還包括以下步驟:
步驟S201:初始化所述指令對,從第一個指令對數組元素開始遍歷分析;
步驟S202:設置臨時指令的地址為當前指令對數組變量的堆棧指針調整指令的地址;設置臨時地址變量為臨時指令的地址;
步驟S203:設置所述臨時地址變量為下一條待分析指令,判斷臨時地址變量是否大于當前指令對數組的堆棧指針調整指令的前一個數組元素,或者大于當前指令的地址,若是,跳轉至步驟S208;若否,則跳轉至步驟S204;
步驟S204:判斷臨時指令的地址對應的匯編指令是否為堆棧指針調整指令的匹配指令,若是,跳轉至步驟S205;若否,跳轉至步驟S203;
步驟S205:判斷堆棧指針調整指令的匹配指令的前一條指令是否為函數返回指令,若是,跳轉到步驟S206;若否,跳轉至步驟S207;
步驟S206:跳過堆棧指針調整指令的匹配指令后為零的填充指令,分析填充指令的地址增加后的指令,是否為堆棧指針調整指令,若是,跳轉至步驟S207;若否,跳轉至步驟S203;
步驟S207:設置當前指令對數組變量的記錄無效;
步驟S208:判斷是否掃描完整個指令對數組,若否,跳轉至步驟S202;若是,結束本階段分析。
7.如權利要求1所述的嵌入式系統上下文的分析方法,其特征在于:步驟S3中,還包括以下步驟:
步驟S301:初始化所述有效指令對,從第一個指令對數組元素開始遍歷分析;
步驟S302:判斷當前指令對數組數據是否有效,若是,跳轉至步驟S304;若否,跳轉至步驟S303;
步驟S303:設置當前指令對數組變量為指令對數組的下一個指令對數組元素,判斷掃描有效指令對數組是否完成,若否,跳轉至步驟S302;若是,則結束本階段;
步驟S304:根據CPU的指令體系,記錄返回地址和堆棧大小;
步驟S305:設置當前指令對數組變量為指令對數組的下一個指令對數組元素,然后判斷掃描有效指令對數組是否完成,若是,則結束本階段;若否,跳轉至步驟S306;
步驟S306:判斷當前指令對數組數據是否有效,若是,跳轉至步驟S307;若否,跳轉至步驟S305;
步驟S307:根據CPU的指令體系,將堆棧大小與該條指令分析出來的堆棧大小相加,結束本階段。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于烽火通信科技股份有限公司,未經烽火通信科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410218381.0/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種美白止癢潤膚露
- 下一篇:便攜式電子蒸汽產生裝置和方法





