找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2395|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

關(guān)于MPLAB X IDE 反編譯的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:399501 發(fā)表于 2021-7-20 18:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請教一下各位大佬,我使用MPLAB X IDE反編譯了PIC16F636的代碼,我大概看了一下,除了一些寄存器不在BANK0中,反編譯出來的寄存器變到了BANK0相對應(yīng)地址的寄存器,其他的邏輯應(yīng)該正確。但是有一段代碼感覺沒有被調(diào)用到,就有些疑惑。首先,MPLAB X IDE反編譯的正確率如何?其次,hex文件中會包含無效代碼嗎?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:401564 發(fā)表于 2021-7-21 00:13 | 只看該作者
STATUS 寄存器的 RP<1:0> 為存儲區(qū)選擇位:這個很重要的!
它決定了你操作的是哪個BANK,并不是你看到操作了06H它就是操作了PORTB 的,它還要看兩個RP位才能知道它操作的是哪個BANK的
回復(fù)

使用道具 舉報

板凳
ID:399501 發(fā)表于 2021-7-21 08:36 | 只看該作者
是的,我知道,因為用X IDE編譯出來的直接是個寄存器而不是一個地址。所以我才說有點錯誤,不然地址還是相對應(yīng)的
回復(fù)

使用道具 舉報

地板
ID:399501 發(fā)表于 2021-7-21 11:08 | 只看該作者
使用反編譯的代碼,添加了幾句不被調(diào)用的代碼,編譯后再次反編譯,不被調(diào)用的代碼依舊存在,代碼與原代碼基本一致
回復(fù)

使用道具 舉報

5#
ID:401564 發(fā)表于 2021-7-21 17:21 | 只看該作者
HISAUC 發(fā)表于 2021-7-21 11:08
使用反編譯的代碼,添加了幾句不被調(diào)用的代碼,編譯后再次反編譯,不被調(diào)用的代碼依舊存在,代碼與原代碼基 ...

編譯器把C編譯成匯編,有時候是會一些無用的代碼,要不然,就不會有"C的效率"這一說法了,所以,有的外部器件會在數(shù)據(jù)手冊中推薦用匯編寫讀寫程序,
像Keil C51中的位移,實際上并沒有位移,它是通過加法實現(xiàn)的
有的人會覺得a=a<<8要比a=a*256好,實際上它們是一樣的,都是通過加法實現(xiàn)的

但是,編譯器不會有錯誤的,或者是說極少極少,特別是PIC16F系列,幾乎是不會有錯誤的,PIC16F沒有自家的編譯器,都是其它廠商做的編譯器,以前有比較多,最后就剩下那幾效率高的,不行的,基本被淘汰了

你想學(xué)反匯編,匯編一定要玩得6,一定不能仿真!沒有燒錄個上千次的,你PIC匯編是玩不好的
回復(fù)

使用道具 舉報

6#
ID:123289 發(fā)表于 2021-7-22 09:44 | 只看該作者
贊同5#的說法。
要想反編譯,你的匯編必需強。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表