MSP430应用技巧1:COFF ABI与EABI

ELF是英文Executable and linking format的缩写,翻译成中文的意思是“执行链接格式”,它是TI今后将持续支持的文件格式,,编程语言的新的特性将不断的被加入,例如最近才出现的关于C++语言的template instantiation(模板实体化)和exporting inline functions(出口内联函数)都已被支持。 C、如何决定映像文件输出格式 映像文件的输出格式由选择的ABI决定,原文如下:The object files created by the assembler and linker conform to either the ELF or COFF binary formats, depending on the ABI selected when building your program. When using the EABI mode, the ELF format is used. For the older COFF ABI mode, the legacy COFF format is used.(汇编和连接将按照ELF和COFF两种格式中的一种建立对象文件,它依赖于我们在生成应用程序时所选择的ABI接口。当我们选择EABI接口时,ELF格式将被使用。当我们选择旧的COFF ABI接口时,遗留的COFF格式将被使用。) 2、ABI概述 ABI是英文Application Binary Interface的缩写,翻译成中文的意思是“应用程序二进制接口”,它定义了对象文件(如果只针对于MSP430系统,我们也可以将其称为目标文件)之间的底层接口。ABI允许符合ABI接口的对象文件链接在一起,而不需要考虑它们的源文件,而且它允许已存在的符合ABI接口的可执行文件运行在任何支持ABI接口的系统中。

遵从不同ABI接口的对象文件是不能链接在一起的,当前MSP430的编译器支持两种ABI:COFF ABI和EABI。我们可以使用“–abi”链接选项进行选择COFF ABI (–abi=coffabi)和MSP430 EABI (–abi=eabi)。下图指明了当前系统中使用的ABI接口是EABI。

ABI接口到底起到什么作用呢,我们可以看一下以下原文:An ABI defines how functions that are compiled or assembled separately can work together. This involves standardizing the data type representation, register conventions, and function structure and calling conventions. It defines linkname generation from C symbol names. It defines the object file format and the debug format. It defines how the system is initialized. In the case of C++ it defines C++ name mangling and exception handling support.(ABI接口定义了不同编译器编译或汇编器汇编的函数是如何工作在一起的。这些包括数据类型表现的标准化,寄存器的使用规范,以及函数结构和调用的规范。它定义了由C语言符号名产生的链接名、目标文件格式、调试文件格式以及系统如何被初始化等等。以C++语言为例来说,ABI接口定义了C++名字的压缩方式以及对异常处理的支持。) 总结:MSP430能够输出两种映像文件格式,分别为:legacy COFF和eabi(ELF),这实际上是对应的两种ABI接口,分别为COFF ABI和EABI。ABI的作用是使符合ABI接口的不同的目标文件(哪怕是不同编译器编译出来的)能够很好的链接在一起进行工作(不需要程序的源文件)TI虽然继续支持COFF ABI,但不会再将编程语言的新的特性添加进来。我们现在应当把注意力放在EABI上,它是TI公司将持续进行功能延伸。下编日志就将对EABI进行深入探讨。

积极的人在每一次忧患中都看到一个机会,而消极的人则在每个机会都看到某种忧患。

MSP430应用技巧1:COFF ABI与EABI

相关文章:

你感兴趣的文章:

标签云: