ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
ARM 优化 C/C++ 编译器用户指南 说明如何使用下列德州仪器 (TI) 代码生成编译器工具:
TI 编译器支持符合国际标准化组织 (ISO) 这些语言标准的 C 和 C++ 代码。编译器支持 1989、1999 和 2011 版本的C语言以及2014 版本的C++语言。
本用户指南讨论了 TI C/C++ 编译器的特性。本手册假设您已了解如何编写 C/C++ 程序。由 Brian W. Kernighan 和 Dennis M. Ritchie 所著的 C 程序设计语言(第二版)介绍了基于 ISO C 标准的 C 语言。您可以使用 Kernighan 和 Ritchie(以下简称为 K&R)一书作为本手册的补充。本手册中对 K&R C(相对于 ISO C)的引用是指由 Kernighan 和 Ritchie 所著的 C 程序设计语言 第一版中定义的 C 语言。
本文档使用以下规则:
特殊字体
显示。交互式显示采用粗体形式的特殊字体来区分输入的命令与系统显示的项目(如提示符、命令输出、错误消息等)。C 代码示例如下所示: #include <stdio.h>
main()
{ printf("Hello World\n");
}
armcl [options] [filenames] [--run_linker [link_options] [object files]] |
armcl --run_linker {--rom_model | --ram_model} filenames [--output_file= name.out] | |
--library= libraryname |
symbol .usect "section name", size in bytes[, alignment] |
以下书籍可以作为本用户指南的补充:
ANSI X3.159-1989, Programming Language - C (Alternate version of the 1989 C Standard), American National Standards Institute
ISO/IEC 9899:1989, International Standard - Programming Languages - C (The 1989 C Standard), International Organization for Standardization
ISO/IEC 9899:1999, International Standard - Programming Languages - C (The 1999 C Standard), International Organization for Standardization
ISO/IEC 9899:2011, International Standard - Programming Languages - C (The 2011 C Standard), International Organization for Standardization
ISO/IEC 14882-2014, International Standard - Programming Languages - C++ (The 2014 C++ Standard), International Organization for Standardization
The C Programming Language (second edition), by Brian W. Kernighan and Dennis M. Ritchie, published by Prentice-Hall, Englewood Cliffs, New Jersey, 1988
The Annotated C++ Reference Manual, Margaret A. Ellis and Bjarne Stroustrup, published by Addison-Wesley Publishing Company, Reading, Massachusetts, 1990
C:A Reference Manual (fourth edition), by Samuel P. Harbison, and Guy L. Steele Jr., published by Prentice Hall, Englewood Cliffs, New Jersey
Programming Embedded Systems in C and C++, by Michael Barr, Andy Oram (Editor), published by O'Reilly & Associates; ISBN: 1565923545, February 1999
Programming in C, Steve G. Kochan, Hayden Book Company
The C++ Programming Language (second edition), Bjarne Stroustrup, published by Addison-Wesley Publishing Company, Reading, Massachusetts, 1990
Tool Interface Standards (TIS) DWARF Debugging Information Format Specification Version 2.0, TIS Committee, 1995
DWARF Debugging Information Format Version 3, DWARF Debugging Information Format Workgroup, Free Standards Group, 2005 (http://dwarfstd.org)
DWARF Debugging Information Format Version 4, DWARF Debugging Information Format Workgroup, Free Standards Group, 2010 (http://dwarfstd.org)
System V ABI specification (http://www.sco.com/developers/gabi/)
ARM C Language Extensions (ACLE) specification (ACLE Version ACLE Q2 2017)
有关 TI 代码生成工具的更多信息,请参阅以下资源:
以下文档可作为对本用户指南的补充:
Code Composer Studio™is a TM ofTexas Instruments.
ARM®is a reg TM ofARM Limited.
Other TMs
ARM® 由一套软件开发工具支持,其中包括优化 C/C++ 编译器、汇编器、链接器以及各种实用程序。
本章概述了这些工具,并介绍了优化 C/C++ 编译器的特性。在 ARM 汇编语言工具用户指南 中详细论述了汇编器和链接器。
图 1-1 阐述软件开发流程。图中阴影部分突出了 C 语言程序最常见的软件开发路径。其他部分是增强开发流程的外围功能。
以下列表描述了图 1-1 中显示的工具:
如果编译器和链接器选项需要自定义的库版本,库构建实用程序将自动构建运行时支持库。请参阅节 7.4。C 和 C++ 的标准运行时支持库函数的源代码位于编译器安装目录的 lib\src 子目录中提供。
编译器是名为 armcl 的命令行程序。此程序可以一步编译、优化、汇编和链接程序。在 Code Composer Studio™ 中,编译器自动运行以执行构建项目所需的步骤。
更多有关程序编译的信息,请参阅节 2.1。
编译器具有直接调用约定,因此可以编写相互调用的汇编和 C 函数。更多有关调用约定的信息,请参阅Chapter216。
编译器支持1989、1999 和 2011 版本的C语言以及 2014 版本的 C++ 语言。编译器中的 C 和 C++ 语言特征是按照下述 ISO 标准实现的:
如需了解命令行选项以选择代码所使用的 C 或 C++ 标准,请参阅 节 5.16 。
这些功能是编译器实用程序:
库构建实用程序允许您从源代码中为运行时模型的任何组合自定义构建对象库。有关更多信息,请参阅 节 7.4。
C++ 名称还原器 (armdem) 是一种调试辅助工具,可将在编译器生成的汇编代码、反汇编输出或编译器诊断消息中检测到的每个已改编的名称转换为在 C++ 源代码中找到的原始名称。有关更多信息,请参阅 Chapter344。
对于独立的嵌入式应用程序,编译器能够将所有代码和初始化数据放入 ROM 中,从而允许 C/C++ 代码从复位开始运行。编译器输出的 ELF 文件可以使用十六进制转换实用程序转换为 EPROM 编程器数据文件,如《ARM 汇编语言工具用户指南》所述。
编译器将您的源程序转换成 ARM 可执行的机器语言目标代码。源代码必须经过编译、汇编和链接才能创建可执行文件。所有这些步骤都是通过使用编译器一次性执行的。
编译器可一步完成编译、优化、汇编和选择性链接。编译器在一个或多个源代码模块上执行以下步骤:
可以在单命令中编译 C、C++ 和汇编文件。编译器使用文件扩展名来区分不同的文件类型。有关更多信息,请参阅节 2.3.9。
默认情况下,编译器不会调用链接器。可以使用 --run_linker (-z) 编译器选项调用链接器。有关详细信息,请参阅节 4.1.1。
有关汇编器和链接器的完整说明,请参阅《ARM 汇编语言工具用户指南》。