看板 Soft_Job 關於我們 聯絡資訊
反組譯器並不難寫,反正照spec的規則解譯就好... 不過有一個問題,ARM的指令有32bits跟16bits THUMB兩種, 而且混雜...我在讀取的時候有辦法正確決定該用何種方式去解譯嗎? 還是說如果要正確分別該用何種方式解譯,就需要運行模擬計算了? 目前階段是想先弄解譯器而已.. 我跑模擬器解譯分成ARM.THUMB跟auto三種選項, 不知道它的auto機制是啥? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.70.79.227
akasan:elf symbol address 最低 bit 如果是 1 就是 thumb 04/14 01:26
akasan:ref: ELF for the ARM Architecture 4.5.3 04/14 01:28
我有看到那個阿... 只是如此一來該怎麼解讀 不就是runtime期間才能決定了?? 所以模擬器的auto實際上是真的跑下去動態解釋嗎? ※ 編輯: erspicu 來自: 61.70.79.227 (04/14 01:40)
akasan:就直接讀 elf 的 symbol table 啦 04/14 01:43
看來應該真的是沒辦法了 我讀的不是elf 是gba的bios dump檔 我讀到的資料是寫說 if bit0 of Rn = 1 是 thumb , = 0 是 ARM 但是Rn暫存器內容跑到那行時候多少 似乎是執行期間才能決定的 ※ 編輯: erspicu 來自: 61.70.79.227 (04/14 01:48)
eva19452002:你好強哦,可以寫模擬器出來 04/14 09:25
八字沒一撇,只是想先寫個disassembler出來而已,驗證無誤後,再往後發展... 網路上其實很多sources可以參考..但是一些東西想自己去慢慢搞懂,慢慢弄出來, 而不是改port別人的東西. ※ 編輯: erspicu 來自: 61.70.79.227 (04/14 12:25)