[請益] ARM反組譯器撰寫

看板Soft_Job (軟體人)作者 (.)時間13年前 (2013/04/14 01:00), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
反組譯器並不難寫,反正照spec的規則解譯就好... 不過有一個問題,ARM的指令有32bits跟16bits THUMB兩種, 而且混雜...我在讀取的時候有辦法正確決定該用何種方式去解譯嗎? 還是說如果要正確分別該用何種方式解譯,就需要運行模擬計算了? 目前階段是想先弄解譯器而已.. 我跑模擬器解譯分成ARM.THUMB跟auto三種選項, 不知道它的auto機制是啥? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.70.79.227

04/14 01:26, , 1F
elf symbol address 最低 bit 如果是 1 就是 thumb
04/14 01:26, 1F

04/14 01:28, , 2F
ref: ELF for the ARM Architecture 4.5.3
04/14 01:28, 2F
我有看到那個阿... 只是如此一來該怎麼解讀 不就是runtime期間才能決定了?? 所以模擬器的auto實際上是真的跑下去動態解釋嗎? ※ 編輯: erspicu 來自: 61.70.79.227 (04/14 01:40)

04/14 01:43, , 3F
就直接讀 elf 的 symbol table 啦
04/14 01:43, 3F
看來應該真的是沒辦法了 我讀的不是elf 是gba的bios dump檔 我讀到的資料是寫說 if bit0 of Rn = 1 是 thumb , = 0 是 ARM 但是Rn暫存器內容跑到那行時候多少 似乎是執行期間才能決定的 ※ 編輯: erspicu 來自: 61.70.79.227 (04/14 01:48)

04/14 09:25, , 4F
你好強哦,可以寫模擬器出來
04/14 09:25, 4F
八字沒一撇,只是想先寫個disassembler出來而已,驗證無誤後,再往後發展... 網路上其實很多sources可以參考..但是一些東西想自己去慢慢搞懂,慢慢弄出來, 而不是改port別人的東西. ※ 編輯: erspicu 來自: 61.70.79.227 (04/14 12:25)
文章代碼(AID): #1HQOyZoQ (Soft_Job)
文章代碼(AID): #1HQOyZoQ (Soft_Job)