找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1452|回复: 5
打印 上一主题 下一主题
收起左侧

关于MPLAB X IDE 反编译的问题

[复制链接]
跳转到指定楼层
楼主
ID:399501 发表于 2021-7-20 18:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教一下各位大佬,我使用MPLAB X IDE反编译了PIC16F636的代码,我大概看了一下,除了一些寄存器不在BANK0中,反编译出来的寄存器变到了BANK0相对应地址的寄存器,其他的逻辑应该正确。但是有一段代码感觉没有被调用到,就有些疑惑。首先,MPLAB X IDE反编译的正确率如何?其次,hex文件中会包含无效代码吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:401564 发表于 2021-7-21 00:13 | 只看该作者
STATUS 寄存器的 RP<1:0> 为存储区选择位:这个很重要的!
它决定了你操作的是哪个BANK,并不是你看到操作了06H它就是操作了PORTB 的,它还要看两个RP位才能知道它操作的是哪个BANK的
回复

使用道具 举报

板凳
ID:399501 发表于 2021-7-21 08:36 | 只看该作者
是的,我知道,因为用X IDE编译出来的直接是个寄存器而不是一个地址。所以我才说有点错误,不然地址还是相对应的
回复

使用道具 举报

地板
ID:399501 发表于 2021-7-21 11:08 | 只看该作者
使用反编译的代码,添加了几句不被调用的代码,编译后再次反编译,不被调用的代码依旧存在,代码与原代码基本一致
回复

使用道具 举报

5#
ID:401564 发表于 2021-7-21 17:21 | 只看该作者
HISAUC 发表于 2021-7-21 11:08
使用反编译的代码,添加了几句不被调用的代码,编译后再次反编译,不被调用的代码依旧存在,代码与原代码基 ...

编译器把C编译成汇编,有时候是会一些无用的代码,要不然,就不会有"C的效率"这一说法了,所以,有的外部器件会在数据手册中推荐用汇编写读写程序,
像Keil C51中的位移,实际上并没有位移,它是通过加法实现的
有的人会觉得a=a<<8要比a=a*256好,实际上它们是一样的,都是通过加法实现的

但是,编译器不会有错误的,或者是说极少极少,特别是PIC16F系列,几乎是不会有错误的,PIC16F没有自家的编译器,都是其它厂商做的编译器,以前有比较多,最后就剩下那几效率高的,不行的,基本被淘汰了

你想学反汇编,汇编一定要玩得6,一定不能仿真!没有烧录个上千次的,你PIC汇编是玩不好的
回复

使用道具 举报

6#
ID:123289 发表于 2021-7-22 09:44 | 只看该作者
赞同5#的说法。
要想反编译,你的汇编必需强。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表