Hexagon LLVM编译架构介绍(1)
1 简介
1.1 概述
本文档描述了用于 Qualcomm ® HexagonTM 处理器架构的 C 和 C++ 编译器。 编译器基于LLVM编译器框架,统称为LLVM编译器。
LLVM 编译器与 Hexagon 软件开发工具和实用程序协同工作,为开发高性能软件提供完整的编程系统。编译器在 Windows ® 和 Linux ® 平台上运行。
注意:
编译器基于 LLVM 3.3。 有关详细信息,请参阅 http://llvm.org/。
1.2 特点
LLVM 编译器提供以下功能:
■ ISO C 一致性
支持国际标准化组织 (ISO) C 语言标准
■ 兼容性
支持 Hexagon 扩展和大多数 GCC 扩展以简化移植
■ 系统库
支持 C 和 C++ 的标准库
■ 特定于处理器的库
提供针对 Hexagon 架构优化的库例程
■ 内在函数
提供一种可移植的机制,用于在 C 源代码中发出 Hexagon 汇编指令
1.3 语言
LLVM 编译器支持 C、C++ 和这些语言的许多方言:
- C 语言:K&R C、ANSI C89、ISO C90、ISO C94 (C89+AMD1)、
ISO C99(+TC1、TC2、TC3) - C++语言:C++98、C++11
除了这些基本语言及其方言之外,LLVM 编译器还支持多种语言扩展。 提供这些扩展是为了与
GCC、Microsoft 和其他流行的编译器兼容,并通过添加 LLVM 编译器独有的扩展来改进功能。
所有语言扩展都被 LLVM 编译器明确识别,并标有扩展诊断,可以映射到警告、错误或简单地忽略。
1.4 GCC 兼容性
LLVM 编译器驱动程序和语言功能被有意设计为尽可能与 GNU GCC 编译器兼容,从而简化从 GCC 到 LLVM 的迁移。 在大多数情况下,代码“正常工作”。
注意:
Hexagon LLVM 编译器与 GNU 工具链完全兼容。
1.5 运行时系统
Hexagon LLVM 编译器支持独立程序和 RTOS 应用程序的开发。
RTOS 应用程序的构建过程是构建 C/C++ 应用程序的标准过程的超集。
注意
有关详细信息,请参阅 Hexagon QuRT RTOS 应用程序系统构建指南。
1.6 处理器版本
Hexagon LLVM 编译器支持 Hexagon 处理器的 V4 和 V5 版本。
命令选项 -mv4 和 -mv5 用于指定编译器将为其生成输出文件的 Hexagon 处理器版本。 (如果两个选项都没有指定,编译器默认生成 V4 代码。)
有关这些(和相关)命令选项的更多信息,请参阅第 3.4 节。
有关 Hexagon 处理器版本的更多信息,请参阅 Hexagon 程序员参考手册。
1.7 特定于处理器的功能
Hexagon LLVM 编译器包括编译器选项、语言扩展和特定于 Hexagon 处理器的库。
1.8 使用文档
本文档旨在为有经验的 C 语言程序员提供参考。它
描述了 LLVM 编译器和语言实现。
该文件包含以下章节:
■ 第1 章介绍,概述了编译器和文档。
■ 第 2 章,入门,解释如何编译和执行一个简单的 C程序。
■ 第 3 章,使用编译器,描述命令行语法、屏幕消息,以及输入和输出文件。
■ 第 4 章,从 GCC 移植代码,描述了经常遇到的问题同时将 GCC 代码移植到 Hexagon LLVM。
■ 第 5 章,编码实践,描述了推荐的编码实践确保生成高效的目标代码。
■ 第 6 章,语言兼容性,描述编译器如何实现 C语言标准。
■ 第 7 章,库,描述了编译器提供的库,包括 C/C++ 标准库和特定于处理器的库。
C语言参考:
本文档不描述 C 或 C++ 语言。 建议的语言参考是:
■ C 编程语言(第 2 版),Brian Kernighan 和 Dennis Ritchie,Prentice Hall,1988 年。
■ C++ 编程语言(第 3 版),Bjarne Stroustrup,Addison-Wesley,1997。
编译器参考:
本文档不提供 LLVM 执行的代码优化的详细说明。 建议的编译器参考是:
■ 编译器:原则、技术和工具(第 2 版),Alfred Aho、Monica Lam、Ravi Sethi 和 Jeffrey Ullman,Prentice Hall,2006
■ 编译器工程(第 2 版),Keith Cooper 和 Linda Torczon,Morgan Kaufmann,2011 年