安裝ADS (ver 1.2) 後, 可以進入AXD,在options下 "Configure Target"為 ARMUL, 就可以設定ARM Emulator 環境, 開始去學習ARM 組語與了解ARM 架構。
按F8 可以Step In單步執行, 看見程式執行時ARM Register r0~r15及CPSR的變化, 並可看到不同運作模式下 FIQ, IRQ,SVC等的Register值變化。也可以看記憶體的變化。
反組譯
該如何從Assembly 跳到C
在進入C之前, 尚須了解一個object code的結構,如 Code Section (.text), RW section, ZI section(.bss)等。接著了解Linker的功能及Linker script 的意義及包含 Load Address (LMA)及Run address (VMA)的不同。一個程式的啓動順序, 包含copy from Load address to Run address), 配置程式執行記憶體空間 及初始化 .bss 區塊為零。最後執行Branch 指令跳到 C 函式, 此函式即為C的進入點。
待續...
沒有留言 :
張貼留言