专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
只有hex文件可以弄出c程序吗
2019-03-24 16:55
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
3980
12
1472
只有hex文件可以弄出c程序吗 此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
wsmysyn
2019-03-25 09:38
本帖最后由 wsmysyn 于 2018-12-27 10:55 编辑
hex其实和烧到flash里边的程序已经差不多了。
intel hex-80格式,我记得大概就是地址偏移量,然后是长度,然后是sram中存储的二进制程序代码,最后是一个校验码
通过工具可以将实际写入到sram中的数据提取出来。。
然后提取出来的数据,可以用反汇编工具,将二进制代码转成汇编的形式。
(如果经验够得话,可以根据MCS51指令集,根据程序入口地址,以及中断向量入口地址,自己手工计算代码的执行过程也是可以的)
经验比较足的话,可以根据汇编的代码,反向成C语言。
缺点:
1、从上面描述你也看到,从hex转成C语言有这个可能,但是你要是用hex转成人家原始C文件,绝对不可能。
2、反汇编工具是否智能,因为编译链接生成的代码,不一定都是在连续空间存储的,反编译工具如果识别不出来,很可能把不连续区也当做代码部分进行反汇编,可能会造成反汇编错误,影响分析。
但是通过hex生成的binary文件,可以人工干预,手算偏移地址,在指定偏移地址处开始反汇编
3、比较明显的汇编语句,转成C比较容易些,比如90E6017480F0 直接就可以写成C语言句式:IFCONFIG = 0x80;
但是原始C语言比较复杂的语法,从汇编程序上比较难看出来。还有就是一些函数传参等等,需要仔细阅读汇编的代码,确定传了一些什么参数。
4、综上,从hex转C,以上步骤不能少,能不能转C?答案是有可能。难度多大?看代码长度,估计一下源代码复杂度,还有自身的知识储备。
不过有那分析的时间,还不如去自己写了。。
优点:
1、你通过分析,掌握了MCS-51指令集,可以根据二进制代码手算CPU的执行过程。
2、通过手算CPU的执行过程,你掌握了8051的固件工作过程,二进制级别
3、你了解了c语言的语句对应的机器指令是如何实现的。
4、没了。。。
加载中...
查看其它12个回答
一周热门
更多
>
相关问题
相关文章
基于51单片机的计算器设计
0个评论
51单片机300个proteus仿真实例下载
0个评论
51单片机 蜂鸣器
0个评论
51单片机驱动RC522模块
0个评论
基于51单片机的指纹密码锁
0个评论
AT89C51单片机制作简易密码锁
0个评论
51单片机汇编语言计数器
0个评论
51单片机精确延时设计
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
hex其实和烧到flash里边的程序已经差不多了。
intel hex-80格式,我记得大概就是地址偏移量,然后是长度,然后是sram中存储的二进制程序代码,最后是一个校验码
通过工具可以将实际写入到sram中的数据提取出来。。
然后提取出来的数据,可以用反汇编工具,将二进制代码转成汇编的形式。
(如果经验够得话,可以根据MCS51指令集,根据程序入口地址,以及中断向量入口地址,自己手工计算代码的执行过程也是可以的)
经验比较足的话,可以根据汇编的代码,反向成C语言。
缺点:
1、从上面描述你也看到,从hex转成C语言有这个可能,但是你要是用hex转成人家原始C文件,绝对不可能。
2、反汇编工具是否智能,因为编译链接生成的代码,不一定都是在连续空间存储的,反编译工具如果识别不出来,很可能把不连续区也当做代码部分进行反汇编,可能会造成反汇编错误,影响分析。
但是通过hex生成的binary文件,可以人工干预,手算偏移地址,在指定偏移地址处开始反汇编
3、比较明显的汇编语句,转成C比较容易些,比如90E6017480F0 直接就可以写成C语言句式:IFCONFIG = 0x80;
但是原始C语言比较复杂的语法,从汇编程序上比较难看出来。还有就是一些函数传参等等,需要仔细阅读汇编的代码,确定传了一些什么参数。
4、综上,从hex转C,以上步骤不能少,能不能转C?答案是有可能。难度多大?看代码长度,估计一下源代码复杂度,还有自身的知识储备。
不过有那分析的时间,还不如去自己写了。。
优点:
1、你通过分析,掌握了MCS-51指令集,可以根据二进制代码手算CPU的执行过程。
2、通过手算CPU的执行过程,你掌握了8051的固件工作过程,二进制级别
3、你了解了c语言的语句对应的机器指令是如何实现的。
4、没了。。。
一周热门 更多>