ZHCUAV8W january   1998  – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , C346BA02 , C348A01 , CS241C01-Q1 , CS241C05-Q1 , CS246C01-Q1 , CS348C02-Q1 , OMAP-L132 , OMAP-L137 , OMAP-L138 , S470AV336LYSQRB , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768

 

  1.   请先阅读
    1.     关于本手册
    2.     标记规则
    3.     相关文档
    4.     德州仪器 (TI) 提供的相关文档
    5.     商标
  2. 1软件开发工具简介
    1. 1.1 软件开发工具概述
    2. 1.2 编译器接口
    3. 1.3 ANSI/ISO 标准
    4. 1.4 输出文件
    5. 1.5 实用程序
  3. 2使用 C/C++ 编译器
    1. 2.1  关于编译器
    2. 2.2  调用 C/C++ 编译器
    3. 2.3  使用选项更改编译器的行为
      1. 2.3.1  链接器选项
      2. 2.3.2  常用选项
      3. 2.3.3  其他有用的选项
      4. 2.3.4  运行时模型选项
      5. 2.3.5  符号调试和分析选项
      6. 2.3.6  指定文件名
      7. 2.3.7  更改编译器解释文件名的方式
      8. 2.3.8  更改编译器处理 C 文件的方式
      9. 2.3.9  更改编译器解释和命名扩展名的方式
      10. 2.3.10 指定目录
      11. 2.3.11 汇编器选项
      12. 2.3.12 已弃用的选项
    4. 2.4  通过环境变量控制编译器
      1. 2.4.1 设置默认编译器选项 (TI_ARM_C_OPTION)
      2. 2.4.2 命名一个或多个备用目录 (TI_ARM_C_DIR)
    5. 2.5  控制预处理器
      1. 2.5.1  预先定义的宏名称
      2. 2.5.2  #include 文件的搜索路径
        1. 2.5.2.1 在 #include 文件搜索路径(--include_path 选项)中新增目录
      3. 2.5.3  支持#warning 和 #warn 指令
      4. 2.5.4  生成预处理列表文件(--preproc_only 选项)
      5. 2.5.5  预处理后继续编译(--preproc_with_compile 选项)
      6. 2.5.6  生成带有注释的预处理列表文件(--preproc_with_comment 选项)
      7. 2.5.7  生成带有行控制详细信息的预处理列表(--preproc_with_line 选项)
      8. 2.5.8  为 Make 实用程序生成预处理输出(--preproc_dependency 选项)
      9. 2.5.9  生成包含#include在内的文件列表(--preproc_includes 选项)
      10. 2.5.10 在文件中生成宏列表(--preproc_macros 选项)
    6. 2.6  将参数传递给 main()
    7. 2.7  了解诊断消息
      1. 2.7.1 控制诊断消息
      2. 2.7.2 如何使用诊断抑制选项
    8. 2.8  其他消息
    9. 2.9  生成交叉参考列表信息(--gen_cross_reference_listing 选项)
    10. 2.10 生成原始列表文件(--gen_preprocessor_listing 选项)
    11. 2.11 使用内联函数扩展
      1. 2.11.1 内联内在函数运算符
      2. 2.11.2 内联限制
    12. 2.12 使用交叉列出功能
    13. 2.13 控制应用程序二进制接口
    14. 2.14 VFP 支持
    15. 2.15 启用入口挂钩和出口挂钩函数
  4. 3优化您的代码
    1. 3.1  调用优化
    2. 3.2  控制代码大小与速度
    3. 3.3  执行文件级优化(--opt_level=3 选项)
      1. 3.3.1 创建优化信息文件(--gen_opt_info 选项)
    4. 3.4  程序级优化(--program_level_compile 和 --opt_level=3 选项)
      1. 3.4.1 控制程序级优化(--call_assumptions 选项)
      2. 3.4.2 混合 C/C++ 和汇编代码时的优化注意事项
    5. 3.5  自动内联扩展(--auto_inline 选项)
    6. 3.6  链接时优化(--opt_level=4 选项)
      1. 3.6.1 选项处理
      2. 3.6.2 不兼容的类型
    7. 3.7  使用反馈制导优化
      1. 3.7.1 反馈向导优化
        1. 3.7.1.1 第 1 阶段 - 收集程序分析信息
        2. 3.7.1.2 第 2 阶段 - 使用应用程序分析信息进行优化
        3. 3.7.1.3 生成和使用配置文件信息
        4. 3.7.1.4 反馈制导优化的应用示例
        5. 3.7.1.5 .ppdata 段
        6. 3.7.1.6 反馈制导优化和代码大小调整
        7. 3.7.1.7 检测程序执行开销
        8. 3.7.1.8 无效的分析数据
      2. 3.7.2 分析数据解码器
      3. 3.7.3 反馈制导优化 API
      4. 3.7.4 反馈制导优化总结
    8. 3.8  使用配置文件信息分析代码覆盖率
      1. 3.8.1 代码覆盖
        1. 3.8.1.1 第 1 阶段 - 收集程序分析信息
        2. 3.8.1.2 第 2 阶段 -- 生成代码覆盖信息报告
      2. 3.8.2 相关的特征和功能
        1. 3.8.2.1 路径分析器
        2. 3.8.2.2 分析选项
        3. 3.8.2.3 环境变量
    9. 3.9  访问优化代码中的别名变量
    10. 3.10 在优化代码中谨慎使用 asm 语句
    11. 3.11 通过优化使用交叉列出特性
    12. 3.12 调试和分析优化代码
      1. 3.12.1 分析优化的代码
    13. 3.13 正在执行什么类型的优化?
      1. 3.13.1  基于成本的寄存器分配
      2. 3.13.2  别名消歧
      3. 3.13.3  分支优化和控制流简化
      4. 3.13.4  数据流优化
      5. 3.13.5  表达式简化
      6. 3.13.6  函数的内联扩展
      7. 3.13.7  函数符号别名
      8. 3.13.8  归纳变量和强度降低
      9. 3.13.9  循环不变量代码运动
      10. 3.13.10 循环旋转
      11. 3.13.11 指令排程
      12. 3.13.12 尾部合并
      13. 3.13.13 自动增量寻址
      14. 3.13.14 块条件化
        1. 3.13.14.1 块条件化 C 源代码
        2. 3.13.14.2 的 C/C++ 编译器输出
      15. 3.13.15 结语内联
      16. 3.13.16 删除与零的比较
      17. 3.13.17 用常数除数进行整数除法
      18. 3.13.18 分支链接
  5. 4链接 C/C++ 代码
    1. 4.1 通过编译器调用链接器(-z 选项)
      1. 4.1.1 单独调用链接器
      2. 4.1.2 调用链接器作为编译步骤的一部分
      3. 4.1.3 禁用链接器(--compile_only 编译器选项)
    2. 4.2 链接器代码优化
      1. 4.2.1 生成死函数列表(--generate_dead_funcs_list 选项)
      2. 4.2.2 生成聚合数据子段(--gen_data_subsections 编译器选项)
    3. 4.3 控制链接过程
      1. 4.3.1 包含运行时支持库
        1. 4.3.1.1 自动选择运行时支持库
          1. 4.3.1.1.1 使用 --issue_remarks 选项
        2. 4.3.1.2 手动选择运行时支持库
        3. 4.3.1.3 用于搜索符号的库顺序
      2. 4.3.2 运行时初始化
      3. 4.3.3 Cinit 的初始化和看门狗计时器保持
      4. 4.3.4 全局对象构造函数
      5. 4.3.5 指定全局变量初始化类型
      6. 4.3.6 指定在内存中分配段的位置
      7. 4.3.7 链接器命令文件示例
  6. 5C/C++ 语言实现
    1. 5.1  ARM C 的特征
      1. 5.1.1 实现定义的行为
    2. 5.2  ARM C++ 的特征
    3. 5.3  使用 MISRA C 2004
    4. 5.4  使用 ULP Advisor
    5. 5.5  数据类型
      1. 5.5.1 枚举类型大小
    6. 5.6  文件编码和字符集
    7. 5.7  关键字
      1. 5.7.1 const 关键字
      2. 5.7.2 __interrupt 关键字
      3. 5.7.3 volatile 关键字
    8. 5.8  C++ 异常处理
    9. 5.9  寄存器变量和参数
      1. 5.9.1 本地寄存器变量和参数
      2. 5.9.2 全局寄存器变量
    10. 5.10 __asm 语句
    11. 5.11 pragma 指令
      1. 5.11.1  CALLS Pragma
      2. 5.11.2  CHECK_MISRA Pragma
      3. 5.11.3  CHECK_ULP Pragma
      4. 5.11.4  CODE_SECTION Pragma
      5. 5.11.5  CODE_STATE Pragma
      6. 5.11.6  DATA_ALIGN Pragma
      7. 5.11.7  DATA_SECTION Pragma
        1. 5.11.7.1 使用 DATA_SECTION Pragma C 源文件
        2. 5.11.7.2 使用 DATA_SECTION Pragma C++ 源文件
        3. 5.11.7.3 使用 DATA_SECTION Pragma 汇编源文件
      8. 5.11.8  诊断消息 Pragma
      9. 5.11.9  DUAL_STATE Pragma
      10. 5.11.10 FORCEINLINE Pragma
      11. 5.11.11 FORCEINLINE_RECURSIVE Pragma
      12. 5.11.12 FUNC_ALWAYS_INLINE Pragma
      13. 5.11.13 FUNC_CANNOT_INLINE Pragma
      14. 5.11.14 FUNC_EXT_CALLED Pragma
      15. 5.11.15 FUNCTION_OPTIONS Pragma
      16. 5.11.16 INTERRUPT Pragma
      17. 5.11.17 LOCATION Pragma
      18. 5.11.18 MUST_ITERATE Pragma
        1. 5.11.18.1 MUST_ITERATE Pragma 语法
        2. 5.11.18.2 使用 MUST_ITERATE 扩展编译器对循环的了解
      19. 5.11.19 NOINIT 和 PERSISTENT Pragma
      20. 5.11.20 NOINLINE Pragma
      21. 5.11.21 NO_HOOKS Pragma
      22. 5.11.22 once Pragma
      23. 5.11.23 pack Pragma
      24. 5.11.24 PROB_ITERATE Pragma
      25. 5.11.25 RESET_MISRA Pragma
      26. 5.11.26 RESET_ULP Pragma
      27. 5.11.27 RETAIN Pragma
      28. 5.11.28 SET_CODE_SECTION 和 SET_DATA_SECTION Pragma
      29. 5.11.29 SWI_ALIAS Pragma
      30. 5.11.30 TASK Pragma
      31. 5.11.31 UNROLL Pragma
      32. 5.11.32 WEAK Pragma
    12. 5.12 _Pragma 运算符
    13. 5.13 应用程序二进制接口
    14. 5.14 ARM 指令内在函数
    15. 5.15 目标文件符号命名规则(链接名)
    16. 5.16 更改 ANSI/ISO C/C++ 语言模式
      1. 5.16.1 C99 支持 (--c99)
      2. 5.16.2 C11 支持 (--c11)
      3. 5.16.3 严格 ANSI 模式和宽松 ANSI 模式(--strict_ansi 和 --relaxed_ansi)
    17. 5.17 GNU 、Clang 和 ACLE 语言扩展
      1. 5.17.1 扩展
      2. 5.17.2 函数属性
      3. 5.17.3 For 循环属性
      4. 5.17.4 变量属性
      5. 5.17.5 类型属性
      6. 5.17.6 内置函数
    18. 5.18 AUTOSAR
    19. 5.19 编译器限制
  7. 6运行时环境
    1. 6.1  存储器模型
      1. 6.1.1
      2. 6.1.2 C/C++ 系统堆栈
      3. 6.1.3 动态存储器分配
    2. 6.2  对象表示
      1. 6.2.1 数据类型存储
        1. 6.2.1.1 char 和 short 数据类型(有符号和无符号)
        2. 6.2.1.2 float、int 和 long 数据类型(有符号和无符号)
        3. 6.2.1.3 double、long double 和 long long 数据类型(有符号和无符号)
        4. 6.2.1.4 指向数据成员类型的指针
        5. 6.2.1.5 指向成员函数类型的指针
        6. 6.2.1.6 结构和数组对齐
      2. 6.2.2 位字段
      3. 6.2.3 字符串常量
    3. 6.3  寄存器惯例
    4. 6.4  函数结构和调用惯例
      1. 6.4.1 函数如何进行调用
      2. 6.4.2 被调用函数如何响应
      3. 6.4.3 C 异常处理程序调用惯例
      4. 6.4.4 访问参数和局部变量
    5. 6.5  访问 C 和 C++ 中的链接器符号
    6. 6.6  将 C 和 C++ 与汇编语言相连
      1. 6.6.1 使用汇编语言模块与 C/C++ 代码
      2. 6.6.2 从 C/C++ 访问汇编语言函数
        1. 6.6.2.1 从 C/C++ 程序调用汇编语言函数
        2. 6.6.2.2 由 调用的汇编语言程序
        3.       237
      3. 6.6.3 从 C/C++ 访问汇编语言变量
        1. 6.6.3.1 访问汇编语言全局变量
          1. 6.6.3.1.1 汇编语言变量程序
          2. 6.6.3.1.2 C 程序从 中访问汇编语言
        2.       242
        3. 6.6.3.2 访问汇编语言常量
          1. 6.6.3.2.1 从 C 语言访问汇编语言常量
          2. 6.6.3.2.2 的汇编语言程序
          3.        246
      4. 6.6.4 与汇编源代码共享 C/C++ 头文件
      5. 6.6.5 使用内联汇编语言
      6. 6.6.6 修改编译器输出
    7. 6.7  中断处理
      1. 6.7.1 在中断期间保存寄存器
      2. 6.7.2 使用 C/C++ 中断例程
      3. 6.7.3 使用汇编语言中断例程
      4. 6.7.4 如何将中断例程映射到中断向量
        1. 6.7.4.1 intvecs.asm 文件示例
      5. 6.7.5 使用软件中断功能
      6. 6.7.6 其他中断信息
    8. 6.8  固有运行时支持算术和转换例程
      1. 6.8.1 CPSR 寄存器和中断内在函数
    9. 6.9  内置函数
    10. 6.10 系统初始化
      1. 6.10.1 用于系统预初始化的引导挂钩函数
      2. 6.10.2 运行时栈
      3. 6.10.3 变量的自动初始化
        1. 6.10.3.1 零初始化变量
        2. 6.10.3.2 的直接初始化
        3. 6.10.3.3 运行时变量自动初始化
        4. 6.10.3.4 的自动初始化表
          1. 6.10.3.4.1 数据格式遵循的长度
          2. 6.10.3.4.2 零初始化格式
          3. 6.10.3.4.3 行程编码 (RLE) 格式
          4. 6.10.3.4.4 Lempel-Ziv-Storer-Szymanski 压缩 (LZSS) 格式
          5. 6.10.3.4.5 用于处理 C 自动初始化表的 C 代码示例
        5. 6.10.3.5 在加载时初始化变量
        6. 6.10.3.6 全局构造函数
      4. 6.10.4 初始化表
    11. 6.11 TIABI 下的双状态交互工作(已弃用)
      1. 6.11.1 双状态支持级别
      2. 6.11.2 实现
        1. 6.11.2.1 入口点的命名规则
        2. 6.11.2.2 间接调用
          1. 6.11.2.2.1 针对 16-BIS 状态编译的 C 代码:sum( )
          2. 6.11.2.2.2 的 16 位汇编语言程序
          3. 6.11.2.2.3 针对 32-BIS 状态编译的 C 代码:sum( )
          4. 6.11.2.2.4 的 32 位汇编语言程序
          5.        286
  8. 7使用运行时支持函数并构建库
    1. 7.1 C 和 C++ 运行时支持库
      1. 7.1.1 将代码与对象库链接
      2. 7.1.2 头文件
      3. 7.1.3 修改库函数
      4. 7.1.4 支持字符串处理
      5. 7.1.5 极少支持国际化
      6. 7.1.6 时间和时钟函数支持
      7. 7.1.7 允许打开的文件数量
      8. 7.1.8 源码树中的非标准头文件
      9. 7.1.9 库命名规则
    2. 7.2 C I/O 函数
      1. 7.2.1 高级别 I/O 函数
        1. 7.2.1.1 格式化和格式转换缓冲区
      2. 7.2.2 低级 I/O 实现概述
        1.       open
        2.       close
        3.       read
        4.       write
        5.       lseek
        6.       unlink
        7.       rename
      3. 7.2.3 器件驱动程序级别 I/O 函数
        1.       DEV_open
        2.       DEV_close
        3.       DEV_read
        4.       DEV_write
        5.       DEV_lseek
        6.       DEV_unlink
        7.       DEV_rename
      4. 7.2.4 为 C I/O 添加用户定义的器件驱动程序
        1. 7.2.4.1 将默认流映射到器件
      5. 7.2.5 器件前缀
        1.       add_device
        2.       321
        3. 7.2.5.1 为 C I/O 器件编程
    3. 7.3 处理可重入性(_register_lock() 和 _register_unlock() 函数)
    4. 7.4 库构建流程
      1. 7.4.1 所需的非德州仪器 (TI) 软件
      2. 7.4.2 使用库构建流程
        1. 7.4.2.1 通过链接器自动重建标准库
        2. 7.4.2.2 手动调用 mklib
          1. 7.4.2.2.1 构建标准库
          2. 7.4.2.2.2 共享或只读库目录
          3. 7.4.2.2.3 使用自定义选项构建库
          4. 7.4.2.2.4 mklib 程序选项摘要
      3. 7.4.3 扩展 mklib
        1. 7.4.3.1 底层机制
        2. 7.4.3.2 来自其他供应商的库
  9. 8C++ 名称还原器
    1. 8.1 调用 C++ 名称还原器
    2. 8.2 C++ 名称还原器的示例用法
  10.   A 术语表
    1.     A.1 术语
  11.   B 修订历史记录
  12.   B 早期修订版本

术语

    绝对列表器

    一种调试工具,允许创建包含绝对地址的汇编器列表。

    别名消歧

    一种决定两个指针表达式何时不能指向同一位置的技术,从而允许编译器自由地优化此类表达式。

    别名使用

    以多种方式访问单个对象的能力,例如当两个指针指向单个对象时。其会破坏优化,这是因为任何间接引用都可能引用任何其它对象。

    分配

    链接器计算输出段最终存储器地址的过程。

    ANSI

    美国国家标准协会;一个建立行业自愿遵循的标准的组织。

    应用程序二进制接口 (ABI)

    一项指定两个目标模块之间接口的标准。ABI 规定了如何调用函数以及如何将信息从一个程序组件传递到另一个程序组件。

    存档库

    由归档器将单独文件组合成单个文件的集合。

    归档器

    将多个单独文件集合成一个单个文件(称为存档库)的软件程序。借助归档器,可以添加、删除、提取或替换存档库的成员。

    汇编器

    根据包含汇编语言指令、指示和宏定义的源文件创建机器语言程序的软件程序。汇编器将绝对操作码替换为符号操作码,并将绝对地址或可重定位地址替换为符号地址。

    赋值语句

    用值来初始化变量的语句。

    自动初始化

    在程序开始执行之前,初始化全局 C 变量(包含在 .cinit 段中)的过程。

    运行时的自动初始化

    链接器在链接 C 代码时使用的自动初始化方法。在使用 --rom_model 链接选项调用链接器时,链接器会使用此方法。链接器将数据表的 .cinit 段加载到内存中,并在运行时初始化变量。

    大端

    一种寻址协议,字中的字节从左至右进行编号。字中较高的有效字节存放在低地址处。字节序视硬件而定,并在复位时确定。另请参阅小端

    BIS

    位指令集。

    一组在大括号内组合在一起并被视为实体的语句。

    .bss 段[.bss section]

    默认的目标文件段之一。使用汇编器 .bss 指令在存储器映射中保留指定量的空间,以便稍后用于存储数据。.bss 段未被初始化。

    字节

    根据 ANSI/ISO C,可容纳一个字符的最小可寻址单元。

    C/C++ 编译器

    一种将 C 源语句转换成汇编语言源语句的软件程序。

    代码生成器

    一种编译器工具,采用解析器和优化器生成的文件并生成汇编语言源文件。

    COFF

    通用目标文件格式;根据 AT&T 开发的标准配置的目标文件系统。不再支持该 ABI。

    命令文件

    包含链接器或十六进制转换实用程序的选项、文件名、指令或命令的文件。

    注释

    用于记录或提高源文件可读性的源语句(或源语句的一部分)。不对注释进行编译、汇编或链接;不会影响对象文件。

    编译器程序

    一种实用工具,可以一步完成编辑、汇编和选择性链接操作。通过编译器(包括解析器、优化器和代码生成器)、汇编器和链接器,编译器可以运行一个或多个源代码模块。

    配置内存

    链接器指定用于分配的存储器。

    常量

    其值不能改变的类型。

    交叉引用列表

    由汇编器创建的输出文件,其中列出了定义的符号、定义符号的行、引用符号的行以及符号的最终值。

    .data 段[.data section]

    默认的目标文件段之一。.data 段是包含初始化数据的初始化段。可以使用 .data 指令将代码汇编到 .data 段中。

    直接调用

    一种函数调用,其中一个函数使用函数名称调用另一函数。

    指令

    用于控制软件工具操作和功能的专用命令(与用于控制器件操作的汇编语言指令相反)。

    消歧

    请参阅别名消歧

    动态内存分配

    几个函数(如 malloc,calloc 和 realloc)在运行时为变量动态分配内存所使用的技术。这是通过定义较大的内存池(堆)并使用函数分配堆中的内存来实现。

    ELF

    可执行和可链接格式;根据系统V 应用程序二进制接口规范配置的目标文件系统。

    仿真器

    复制 ARM 运行的硬件开发系统。

    入口点

    目标存储器中的执行起点。

    环境变量

    由用户定义并分配给字符串的系统符号。环境变量通常包含在 Windows 批处理文件或 UNIX shell 脚本(例如 .cshrc 或 .profile)中。

    收尾程序

    函数中恢复堆栈并返回的代码部分。

    可执行目标文件

    在目标系统上下载并执行的可执行链接目标文件。

    表达式

    一个常量、一个符号或由算术运算符分隔的一系列常量和符号。

    外部符号

    一种在当前程序模块中使用但在其他程序模块中定义或声明的符号。

    文件级优化

    一种优化级别,编译程序使用其具有的有关整个文件的信息来优化代码(与程序级优化相反,编译程序使用其具有的有关整个程序的信息来优化代码)。

    函数内联

    在调用点为函数插入代码的过程。这节省了函数调用的开销,并允许优化器在周围代码的上下文中优化函数。

    全局符号

    一种在当前模块中定义并在另一模块中访问或者在当前模块中访问但在另一模块中定义的符号。

    高级别语言调试

    编译程序保留符号和高级别语言信息(如类型和函数定义)的能力,这样调试工具就可以使用此类信息。

    间接调用

    一种函数调用,其中一个函数通过给出被调用函数的地址来调用另一个函数。

    加载时初始化

    链接 C/C++ 代码时由链接器使用的自动初始化方法。在使用 --ram_model 链接选项调用时,链接器会使用此方法。此方法在加载时而不是运行时初始化变量。

    初始化段

    从目标文件中链接到可执行目标文件中的段。

    输入段

    从目标文件中链接到可执行目标文件中的段。

    集成预处理器

    与解析器合并的C/C++ 预处理器,以允许更快的编译。也可以使用独立的预处理或已预处理的列表。

    交叠特征

    一种将原始 C/C++ 源语句作为注释插入到汇编器的汇编语言输出中的特征。C/C++ 语句被会插入到等效汇编指令的旁边。

    内联函数

    像函数一样使用的运算符,可生成在 C 中无法表达或者需要更多时间和精力才能编写代码的汇编语言代码。

    ISO

    国际标准化组织;一个由国家标准机构组成的全球联合会,其制定了行业自愿遵循的国际标准。

    K&R C

    Kernighan 和 Ritchie C,在C 程序设计语言 (K&R) 第一版中定义的事实标准。大多数为早期非 ISO C 编译器编写的 K&R C 程序应该无需修改即可正确编译和运行。

    标签

    从汇编器源语句第 1 列开始并与该语句的地址相对应的符号。标签是唯一可以从第 1 列开始的汇编器语句。

    链接器

    一种将目标文件组合成可执行目标文件的软件程序,该文件可分配到系统内存中并由器件执行。

    列表文件

    由汇编器创建的输出文件,其中列出源语句、源语句的行号以及源语句对段程序计数器 (SPC) 的影响。

    小端

    一种寻址协议,字中的字节从右至左进行编号。字中较高的有效字节存放在高地址处。字节序视硬件而定,并在复位时确定。另请参阅大端字节序

    加载器

    一种将可执行目标文件放入系统内存的器件。

    循环展开

    一种扩展小循环的优化,使循环的每次迭代出现在代码中。虽然循环展开会增大代码大小,但可以提高代码性能。

    可用作指令的用户定义例程。

    宏调用

    调用宏的过程。

    宏定义

    定义组成宏的名称和代码的源语句块。

    宏扩展

    在代码中插入源语句以代替宏调用的过程。

    映射文件

    由链接器创建的输出文件,其中显示内存配置、段组成、段分配、符号定义以及为程序定义符号的地址。

    内存映射

    被划分为功能块的目标系统内存空间的映射。

    名称改编

    编译器专用特征,其使用有关函数参数返回类型的信息对函数名称进行编码。

    目标文件

    包含机器语言目标代码的汇编或链接文件。

    对象库

    由单个目标文件组成的存档库。

    操作数

    汇编语言指令、汇编器指令或宏指令的参数,为由指令或指示执行的操作提供信息。

    优化器

    可提高执行速度并减小 C 程序大小的软件工具。

    选项

    允许您在调用软件工具时请求附加或特定函数的命令行参数。

    输出段

    可执行的已链接模块中的最终分配段。

    解析器

    一种读取源文件、执行预处理函数、检查语法,以及生成中间文件以用作优化器或代码生成器的输入的软件工具。

    分区

    为每条指令分配数据路径的过程。

    pop

    从堆栈中检索数据对象的操作。

    pragma

    一种指示编译器如何处理特殊语句的预处理器指令。

    预处理器

    一种解释宏定义、扩展宏、解释头文件、解释有条件编译以及对预处理器指令起作用的软件工具。

    程序级优化

    一种将所有源文件编译成一个中间文件的积极的优化级别。由于编译器可以看到整个程序,因此在程序级优化中执行了一些很少在文件级优化中应用的优化。

    序言

    函数中设置堆栈的代码部分。

    推入

    将数据对象放在堆栈上以进行临时存储的操作。

    无声运行

    用于抑制正常横幅和进度信息的选项。

    原始数据

    输出段中的可执行代码或初始化数据。

    重定位

    一种当符号的地址改变时由链接器调整对符号的所有引用的过程。

    运行时环境

    程序必须在其中运行的运行时参数。这些参数由内存和寄存器约定、堆栈组织、函数调用约定及系统初始化定义。

    运行时支持函数

    标准的 ISO 函数,执行不属于 C 语言的任务(比如内存分配、字符串转换和字符串搜索等)。

    运行时支持库

    库文件 rts.src,其包含运行时支持函数的源代码。

    一个可重定位的代码块或数据块,最终将与内存映射中的其他段接续。

    符号扩展

    用值的符号位来填充该值未使用的 MSB 的过程。

    模拟器

    一种模拟 ARM 运行的软件开发系统。

    源文件

    一种包含C/C++ 代码或汇编语言代码的文件,该代码经编译或汇编后形成目标文件。

    独立预处理器

    一种将宏、#include 文件和条件编译扩展为独立程序的软件工具。其还执行集成预处理,包括解析指令。

    静态变量

    范围局限在一个函数或程序内的一种变量。当函数或程序退出时,静态变量的值不会被丢弃;当重新输入函数或程序时,将恢复其之前的值。

    存储类

    符号表中指示如何访问符号的条目。

    字符串表

    存储长度超过八个字符的符号名称的表(长度为八个字符或更长的符号名称不能存储在符号表中,而是存储在字符串表中)。符号入口点的名称部分指向字符串表中字符串的位置。

    结构

    一个或者多个变量组合在单个名称下的集合。

    子段

    一个可重定址的代码块或数据块,最终将占用存储器映射中的连续空间。子段为较大段中的小段。子段使用户能够更严格地控制存储器映射。

    符号

    表示地址或值的字母数字字符串。

    符号调试

    软件工具的能力,用于保留可供仿真器或模拟器等调试工具使用的符号信息。

    目标系统

    执行其上开发了目标代码的系统。

    .text 段

    默认的目标文件段之一。.text 段被初始化并包含可执行代码。可以使用 .text 指令将代码汇编到 .text 段中。

    三字符序列

    具有某种含义的3 字符序列(由 ISO 646-1983 不变代码集定义)。这些字符不能在 C 字符集中表示,而是扩展为一个字符。例如,三个字符 ??' 扩展为 ^。

    循环计数

    循环结束前执行的次数。

    未配置的内存

    未定义为存储器映射的一部分,且无法加载代码或数据的存储器。

    未初始化段

    在存储器映射中保留空间但没有实际内容的目标文件段。这些段是使用.bss 和 .usect 指令创建的。

    无符号值

    无论实际符号如何都会被当作非负数的值。

    变量

    表示可以假设一组值中的任何一个数的符号。

    合成

    一种指令序列,当需要改变状态时,其作为例程的备用入口点。

    目标内存中的 32 位可寻址位置。