感悟网 导航

二进制文件简介

作者&投稿:寇杭 (若有异议请与网页底部的电邮联系)
~


深入探索二进制文件:编译器与链接器的艺术


在软件开发的旅程中,*.o、*.elf、*.axf和*.bin这些看似神秘的文件类型,其实蕴含着机器码的奥秘。它们不仅是编译器和链接器的杰作,更是程序员与硬件沟通的桥梁。让我们一起解开这些文件的面纱,揭示它们的结构和功能。


首先,让我们聚焦于目标文件的三大类别:*.o、*.elf和*.axf。*.o,作为编译器的产物,采用ELF(Executable and Linkable Format)格式,承载着可重定位的机器代码。编译器将源代码转化为这些中间文件,它们的节区头虽然初始位置为0x00000000,但通过链接器(如MDK的armlink)的整合,*.axf文件诞生,其中的节区头如ER_IROM1(0x08000000)和RW_IRAM1(0x20000000)都赋予了具体地址。


使用强大的工具fromelf,我们可以洞察这些文件的细节。例如,通过fromelf --text -v can.o > can_o_fromelf_v.txt,我们可以查看到符号表、字符串表以及调试信息,而fromelf --text -c can.o则揭示了节区主体和反汇编代码,展示了编译和链接过程中的指令和跳转。


对比*.o与*.axf,后者是链接的最终产物,不仅包含了程序头,明确地记录了内存地址和空间大小,而且节区头有了明确的定位。我们注意到,例如在HAL_GPIO_Init和HAL_NVIC_SetPriority的标号上,*.o中的地址“f7fffffe”在*.axf中变成了0x80011e8和0x8000ef4,代码也从“f000f9f3”和“f000f87e”,这生动展示了链接器如何将不同模块的代码无缝融合的过程。


hex文件,如MDK的输出,以易于下载器读取的形式呈现机器码或数据。它的每个条目由长度、地址、类型和校验和构成,对于直接下载到硬件来说更为便捷。而bin文件则更为原始,直接记录二进制映像,需要特定辅助文件才能下载,其结构更为紧密。


最后,让我们总结一下:*.axf文件作为编译和链接的综合结果,包含了代码和工程信息,是这几种文件中体积最大的。它不仅是编译器艺术的体现,更是连接源码与硬件执行的关键桥梁。理解这些文件的结构和行为,将有助于我们更好地调试和优化软件,使之在硬件世界中如鱼得水。




《什么是二进制文件什么是二进制》
答:什么是二进制文件,什么是二进制很多朋友还不知道,现在让我们一起看看吧!1、二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。2、当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是...

《可执行的二进制文件是什么》
答:简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICOD E编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么 意思(这样一个过程,可以看作是自定义编码)。从上面可以看出文本文件基本上是定长编码的,基于字符嘛,每个字符在具体编 码中是固定的,ASCII码...

《什么是binary文件?》
答:binary 是二进制文件。计算机上所有的文件都是二进制文件\x0d\x0aFtp:binary\x0d\x0a将文件传输类型设置为二进制。\x0d\x0a\x0d\x0a注释\x0d\x0a• Ftp 同时支持 ASCII 和二进制图像文件传输类型。在传输可执行文件时应该使用二进制。在二进制模式下,文件以一字节为单位进行传输...

《二进制文件的定义》
答:广义的二进制文件即指文件,由文件在外部设备的存放形式为二进制而得名。狭义的二进制文件即除文本文件以外的文件。文本文件是一种由很多行字符构成的计算机文件。文本文件存在于计算机系统中,通常在文本文件最后一行放置文件结束标志。文本文件的编码基于字符定长,译码相对要容易一些;二进制文件编码是变长...

《二进制报文格式除了ASN1还有哪些?》
答:1. 二进制文件是计算机中存储数据的基本格式,它以二进制代码的形式表示信息。这种文件格式通常用于存储操作系统、应用程序和各种数据。2. 二进制文件的后缀名通常是".bin",这个后缀名仅仅表明文件是以二进制格式存储的,并不代表文件与特定的应用程序有直接关联。3. 二进制文件可以包含机器代码,也就是...

《什么是2进制文件》
答:二进制文件是按机器(即电脑)能够阅读的格式(只有0和1)进行存储的文件.所有文件的存储其实质都是二进制的,二进制文件往往由两部分组成,一部分是文件头另一部分存放了文件的内容。文件头通常存放与文件格式有关的信息,以BMP等图象文件为例,它们的文件头中存放了是何种图形格式、图象大小、调色板等...

《源文件是什么格式》
答:源文件格式通常为文本格式或二进制格式。源文件是指存储在计算机中的文件,可以是文本文件或二进制文件。不同的文件类型具有不同的格式。下面详细介绍这两种格式:文本格式:这是最常见的源文件格式之一。文本文件是以纯文本形式存储的文件,通常使用简单的文本编辑器进行创建和编辑。文本格式的文件内容可以...

《请问什么是二进制文件 什么是ASCII 什么是文本文件 它们之间有什么区别...》
答:ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:5 6 7 8 二进制文件是按二进制的编码方式来存放文件的。 例如, 数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示, 但其内容无法读懂。

《进制文件是什么意思?》
答:内容以机器码存储的文件,不能直接阅读、识别的数据文件可统称为二进制文件。二进制文件是相对对文本文件而言的,文本文件中存储的内容,我们可以直接阅读识别,而二进制文件是按字节存放的数据,人不能直接识别 没有十六进制文件一说 一般对于一个文件内容,我们可采用十六进制格式,即每四位(4bits)显示...

《文本文件和2进制文件有什么区别,一个文本文件是TXT,把这个文件压缩成RA...》
答:首先说明一下 txt和rar都可以称作2进制文件 因为计算机上所有数据都是2进制的 txt规范 除去文件头外所有数据以每8/16位数据组成一个字符代码 比如 00011101000111010001110100011101(2)按ascii文本打开就是 aaaa rar属于未公开格式 不知道其格式 就不知到如何解释比如 还是上面那段数据 如果我的格式规范为最...

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网