我最近正在使用AVR单片机,使用AVR studio这个开发工具,同时机器上还安装了AVR gcc,我使用C语言编程,我的问题是使用C语言编写的程序在编程HEX文件之前,是不是先由编译器转换成为汇编指令,然后被转换成为HEX文件的,如果不是,那么真正的过程是怎么样的。谢谢!
楼主研究得真仔细,呵呵.转换过程大概也就是这样的了
Hex文件本身只是一种目标代码的载体,包含了地址信息,并给每条record添加了chksum以便下载时校验;其他形式的目标代码文件还可以是Bin文件(纯粹的数据,无额外信息)。
楼主说的C -> Hex 过程应该就是C的编译过程,大体为:
c源码 -> compile(生成obj) -> link。
一旦源码被编译后即成为了目标机可识别的ASM指令序列,而Hex文件则是一个合集,附加实际存储到rom时所需的地址信息,并予以保存。用这种统一格式存储的好处就是下载器的接口可以标准化。
HEX其实跟bin是一样的,只不过换了一个表示方式。
LZ为什么关心这个问题?没什么意义,实在好奇,用记事本打开HEX文件看看。