新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM指令機器碼學習

        ARM指令機器碼學習

        作者: 時間:2016-11-09 來源:網絡 收藏
        以前,死活看不懂這個DLL文件的16進制(其實是二進制,為了好看,以16進制ASCII碼顯示),對一些高手使用IDA反匯編流口水,今天終于輪到俺上場了。
        現在來看看這個指令通常的編碼格式


        ——————————————————————————————————————————————————————
        這個貌似和英文原版不一樣,現在來看看ARM Architecture Reference Manual里面的格式


        ——————————————————————————————————————————————————
        還是以這個為準安全點。現在看看這個最高四位的con到底是怎么決定的。


        ————————————————————————————————————————————————


        ————————————————————————————————————————————————————
        上面這些條件都是可選的,ARM都有固定的指令。下面看看無條件指令。


        ——————在ARMv4架構中任何帶條件域0b1111的都是不可預測的。
        看了那么多,現在來舉個例子吧。
        ——————————————以branch指令為例子——————————————
        引用驅動調試助手作者的成果,并解釋驗證
        ———————————————————

        Foxit Reader V1.1 for WinCE6.0

        今天終于整理清了PXA270上的WinCE6.0,為了方便給客戶演示WinCE6.0的強大,定制了一個增強型的操作系統。但WinCE6.0中已經不支持PDF等閱讀器了。于是從網站上找了一個PPC版的Foxit Reader,把它放到WinCE6.0的設備上面運行,竟然提示OS不支持,只能在PPC上面跑。看到這個提示有些失望,但也有一絲希望。這個提示似乎是Foxit Reader運行時的提示框,與一般的“不是有效的Windows CE應用程序”是不一樣的。既然這樣,那說明程序還是運行起來了,只是檢測OS時出錯,所以才會出現如下圖所示的提示。

        想一想,如果讓程序跳過檢測OS,是不是就可以正常運行呢。滿懷著希望,用IDA反匯編了這個程序,并找到了對應的函數調用。

        顯而易見,0x000182b4處是有條件的調用,如果改成絕對調用loc_0_182D0,按理就不會出現那個提示框了,修改方法就是將BEQ改為B。

        用UltraEdit將上面的0A改為EA,即將BEQ改成B,再拷貝到設備上面去,果然可以運行
        ——————————————————————————————————————————————————————
        現在我們解釋這個B和BEQ機器碼指令

        這個本來這BEQ,這個con由EQ決定,按照上面的知識,應該是0b0000,所以高八位為0x0A,現在改成B——絕對跳轉,這樣con就變成了0b1110,所以0xEA 就是由此而來。OK完工。
        ———————————————————————
        這個指令機器碼對驅動開發人員非常有幫助,有時候畫錯電路圖,如果不能反匯編修改代碼就會無計可施了,如果可以就可以輕松為企業節省時間和成本。
        其實每個指令的機器碼都有差異,不過有規律,查閱手冊即可。我準備過段時間把eboot反匯編,把以前一些編譯疑惑全部解決。
        參考書籍:ARM System Developers Guide: Designing and Optimizing System Software
        ——ARM System Developers Guide: Designing and Optimizing System Software——ARM嵌入式系統開發:軟件設計與優化的英文原版——我個人感覺這是國內翻譯ARM書籍最好的一本之一,比杜XX的ARM體系結構與編程好千倍。 本書雖然說軟件設計與優化,但是講的硬件也很多,比如MMU和cache等,講的精彩紛呈
        下載地址:http://download.csdn.net/source/904273

        ARM920T Technical Reference Manual——不多說了,想了解2440等的bootloader的人一定要看這個東西了,一些協處理器指令講的很詳細
        下載地址:http://download.csdn.net/source/903240

        ARM Architecture Reference Manual(2nd Edition) ——比較有價值的英文ARM書籍
        下載地址http://download.csdn.net/source/901433


        關鍵詞: ARM指令機器

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 鄯善县| 阳山县| 教育| 汝州市| 孟州市| 都兰县| 南靖县| 甘谷县| 南丰县| 丹凤县| 曲麻莱县| 西丰县| 冕宁县| 社会| 和顺县| 广河县| 纳雍县| 雷波县| 淮滨县| 巴林左旗| 松桃| 浦县| 彭泽县| 长治市| 深泽县| 万州区| 嘉祥县| 和政县| 新蔡县| 文化| 卢氏县| 大姚县| 宁河县| 临海市| 库车县| 克什克腾旗| 固阳县| 绥芬河市| 莱阳市| 商水县| 石城县|