ZHCUAV7Z september   1995  – 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 软件开发工具概述
    2. 1.2 工具说明
  3. 目标模块简介
    1. 2.1 目标文件格式规范
    2. 2.2 可执行目标文件
    3. 2.3 段简介
      1. 2.3.1 特殊段名
    4. 2.4 汇编器如何处理段
      1. 2.4.1 未初始化的段
      2. 2.4.2 已初始化段
      3. 2.4.3 用户命名的段
      4. 2.4.4 当前段
      5. 2.4.5 段程序计数器
      6. 2.4.6 子段
      7. 2.4.7 使用 Sections 指令
    5. 2.5 链接器如何处理段
      1. 2.5.1 合并输入段
      2. 2.5.2 放置段
    6. 2.6 符号
      1. 2.6.1 全局(外部)符号
      2. 2.6.2 局部符号
      3. 2.6.3 弱符号
      4. 2.6.4 符号表
    7. 2.7 符号重定位
    8. 2.8 加载程序
  4. 程序加载和运行
    1. 3.1 负载
      1. 3.1.1 加载和运行地址
      2. 3.1.2 引导加载
        1. 3.1.2.1 引导、加载和运行地址
        2. 3.1.2.2 主引导加载程序
        3. 3.1.2.3 次级引导加载程序
        4. 3.1.2.4 引导表
        5. 3.1.2.5 引导加载程序例程
          1. 3.1.2.5.1 次级引导加载程序例程示例
    2. 3.2 入口点
    3. 3.3 运行时初始化
      1. 3.3.1 _c_int00 函数
      2. 3.3.2 RAM 模型与 ROM 模型
        1. 3.3.2.1 在运行时自动初始化变量 (--rom_model)
        2. 3.3.2.2 在加载时初始化变量 (--ram_model)
        3. 3.3.2.3 --rom_model 和 --ram_model 链接器选项
      3. 3.3.3 关于链接器生成的复制表
        1. 3.3.3.1 BINIT
        2. 3.3.3.2 CINIT
    4. 3.4 main 的参数
    5. 3.5 运行时重定位
    6. 3.6 其他信息
  5. 汇编器说明
    1. 4.1  汇编器概述
    2. 4.2  汇编器在软件开发流程中的作用
    3. 4.3  调用汇编器
    4. 4.4  控制应用二进制接口
    5. 4.5  指定用于汇编器输入的备用目录
      1. 4.5.1 使用 --include_path 汇编器选项
      2. 4.5.2 使用 TI_ARM_A_DIR 环境变量
    6. 4.6  源语句格式
      1. 4.6.1 标签字段
      2. 4.6.2 助记符字段
      3. 4.6.3 操作数字段
        1. 4.6.3.1 指令中的操作数语法
        2. 4.6.3.2 立即值作为指令的操作数
      4. 4.6.4 注释字段
    7. 4.7  字面常量
      1. 4.7.1 整数字面量
        1. 4.7.1.1 二进制整数字面量
        2. 4.7.1.2 八进制整数字面量
        3. 4.7.1.3 十进制整数字面量
        4. 4.7.1.4 十六进制整数字面量
        5. 4.7.1.5 字符字面量
      2. 4.7.2 字符串字面量
      3. 4.7.3 浮点字面量
    8. 4.8  汇编器符号
      1. 4.8.1 标识符
      2. 4.8.2 标签
      3. 4.8.3 局部标签
        1. 4.8.3.1 $n 格式的局部标签
        2.       85
        3.       86
      4. 4.8.4 符号常数
      5. 4.8.5 定义符号常量(--asm_define 选项)
      6. 4.8.6 预定义符号常量
      7. 4.8.7 寄存器
      8. 4.8.8 替代符号
    9. 4.9  表达式
      1. 4.9.1 数学和逻辑运算符
      2. 4.9.2 关系运算符和条件表达式
      3. 4.9.3 明确定义的表达式
      4. 4.9.4 可重定位的符号和合法表达式
      5. 4.9.5 表达式示例
    10. 4.10 内置函数和运算符
      1. 4.10.1 内置数学和三角函数
    11. 4.11 统一汇编语言语法支持
    12. 4.12 源程序列表
    13. 4.13 调试汇编源文件
    14. 4.14 交叉引用列表
  6. 汇编器指令
    1. 5.1  指令摘要
    2. 5.2  用于定义段的指令
    3. 5.3  用于更改指令类型的指令
    4. 5.4  用于初始化值的指令
    5. 5.5  执行对齐和保留空间的指令
    6. 5.6  用于设置输出列表格式的指令
    7. 5.7  用于引用其他文件的指令
    8. 5.8  用于启用条件汇编的指令
    9. 5.9  用于定义联合体或结构体类型的指令
    10. 5.10 用于定义枚举类型的指令
    11. 5.11 在汇编时用于定义符号的指令
    12. 5.12 其他命令
    13. 5.13 指令参考
      1.      .align
      2.      .asg/.define/.eval
      3.      .asmfunc/.endasmfunc
      4.      .bits
      5.      .bss
      6.      .byte/.ubyte/.char/.uchar
      7.      .cdecls
      8.      .common
      9.      .copy/.include
      10.      .cstruct/.cunion/.endstruct/.endunion/.tag
      11.      .data
      12.      .double
      13.      .drlist/.drnolist
      14.      .elfsym
      15.      .emsg/.mmsg/.wmsg
      16.      .end
      17.      .fclist/.fcnolist
      18.      .field
      19.      .float
      20.      .global/.def/.ref
      21.      .group/.gmember/.endgroup
      22.      .half/.short/.uhalf/.ushort
      23.      .if/.elseif/.else/.endif
      24.      .int/.unint/.long/.ulong/.word/.uword
      25.      .label
      26.      .length/.width
      27.      .list/.nolist
      28.      .loop/.endloop/.break
      29.      .macro/.endm
      30.      .mlib
      31.      .mlist/.mnolist
      32.      .newblock
      33.      .option
      34.      .page
      35.      .retain/.retainrefs
      36.      .sect
      37.      .set/.equ
      38.      .space/.bes
      39.      .sslist/.ssnolist
      40.      .state16
      41.      .state32/.arm
      42.      .string/.cstring
      43.      .struct/.endstruct/.tag
      44.      .symdepend
      45.      .tab
      46.      .text
      47.      .thumb
      48.      .title
      49.      .unasg/.undefine
      50.      .union/.endunion/.tag
      51.      .usect
      52.      .var
      53.      .weak
  7. 宏语言说明
    1. 6.1  使用宏
    2. 6.2  定义宏
    3. 6.3  宏参数/替代符号
      1. 6.3.1 用于定义替代符号的指令
      2. 6.3.2 内置替代符号函数
      3. 6.3.3 递归替代符号
      4. 6.3.4 强制替代
      5. 6.3.5 访问带下标的替代符号的各个字符
      6. 6.3.6 替代符号作为宏中的局部变量
    4. 6.4  宏库
    5. 6.5  在宏中使用条件汇编
    6. 6.6  在宏中使用标签
    7. 6.7  在宏中生成消息
    8. 6.8  使用指令设置输出列表的格式
    9. 6.9  使用递归和嵌套宏
    10. 6.10 宏指令摘要
  8. 归档器说明
    1. 7.1 归档器概述
    2. 7.2 归档器在软件开发流程中的作用
    3. 7.3 调用归档器
    4. 7.4 归档器示例
    5. 7.5 库信息归档器说明
      1. 7.5.1 调用库信息归档器
      2. 7.5.2 库信息归档器示例
      3. 7.5.3 列出索引库的内容
      4. 7.5.4 要求
  9. 链接器说明
    1. 8.1  链接器概述
    2. 8.2  链接器在软件开发流程中的作用
    3. 8.3  调用链接器
    4. 8.4  链接器选项
      1. 8.4.1  文件、段和符号模式中的通配符
      2. 8.4.2  通过链接器选项指定 C/C++ 符号
      3. 8.4.3  重定位功能(--absolute_exe 和 --relocatable 选项)
        1. 8.4.3.1 生成绝对输出模块(--absolute_exe 选项)
        2. 8.4.3.2 生成可重定位输出模块(--relocatable 选项)
      4. 8.4.4  分配存储器供加载器使用以传递参数(--arg_size 选项)
      5. 8.4.5  更改大端字节序指令的编码
      6. 8.4.6  压缩(--cinit_compression 和 --copy_compression 选项)
      7. 8.4.7  压缩 DWARF 信息(--compress_dwarf 选项)
      8. 8.4.8  控制链接器诊断
      9. 8.4.9  自动选择库(--disable_auto_rts 选项)
      10. 8.4.10 不要删除未使用的段(--unused_section_elimination 选项)
      11. 8.4.11 链接器命令文件预处理(--disable_pp、--define 和 --undefine 选项)
      12. 8.4.12 纠错码测试(--ecc 选项)
      13. 8.4.13 定义入口点(--entry_point 选项)
      14. 8.4.14 设置默认填充值(--fill_value 选项)
      15. 8.4.15 生成死函数列表(--generate_dead_funcs_list 选项)
      16. 8.4.16 定义堆大小(--heap_size 选项)
      17. 8.4.17 隐藏符号
      18. 8.4.18 改变库搜索算法(--library、--search_path 和 TI_ARM_C_DIR)
        1. 8.4.18.1 指定备用库目录(--search_path 选项)
        2. 8.4.18.2 指定备用库目录(TI_ARM_C_DIR 环境变量)
        3. 8.4.18.3 详尽读取和搜索库(--reread_libs 和 --priority 选项)
      19. 8.4.19 更改符号局部化
        1. 8.4.19.1 将所有全局符号设为静态(--make_static 选项)
      20. 8.4.20 创建映射文件(--map_file 选项)
      21. 8.4.21 管理映射文件内容(--mapfile_contents 选项)
      22. 8.4.22 禁用名称还原 (--no_demangle)
      23. 8.4.23 禁止合并符号调试信息(--no_sym_merge 选项)
      24. 8.4.24 去除符号信息(--no_symtable 选项)
      25. 8.4.25 指定输出模块(--output_file 选项)
      26. 8.4.26 确定函数放置优先级(--preferred_order 选项)
      27. 8.4.27 C 语言选项(--ram_model 和 --rom_model 选项)
      28. 8.4.28 保留丢弃的段(--retain 选项)
      29. 8.4.29 创建绝对列表文件(--run_abs 选项)
      30. 8.4.30 扫描所有库中的重复符号定义(--scan_libraries)
      31. 8.4.31 定义栈大小(--stack_size 选项)
      32. 8.4.32 符号映射(--symbol_map 选项)
      33. 8.4.33 生成 Far 调用 Trampoline(--trampolines 选项)
        1. 8.4.33.1 使用 Trampoline 的优缺点
        2. 8.4.33.2 尽量减少所需的 Trampoline 数量(--minimize_trampolines 选项)
        3. 8.4.33.3 使 Trampoline 保留相邻(--trampoline_min_spacing 选项)
        4. 8.4.33.4 将 Trampoline 从加载空间传送到运行空间
      34. 8.4.34 引入未解析的符号(--undef_sym 选项)
      35. 8.4.35 创建未定义的输出段时显示一条消息 (--warn_sections)
      36. 8.4.36 生成 XML 链接信息文件(--xml_link_info 选项)
      37. 8.4.37 零初始化(--zero_init 选项)
    5. 8.5  链接器命令文件
      1. 8.5.1  链接器命令文件中的保留名称
      2. 8.5.2  链接器命令文件中的常量
      3. 8.5.3  从链接器命令文件访问文件和库
      4. 8.5.4  MEMORY 指令
        1. 8.5.4.1 默认存储器型号
        2. 8.5.4.2 MEMORY 指令语法
        3. 8.5.4.3 表达式和地址运算符
        4. 8.5.4.4 ALIAS 语句
      5. 8.5.5  SECTIONS 指令
        1. 8.5.5.1 SECTIONS 指令语法
        2. 8.5.5.2 段分配和放置
          1. 8.5.5.2.1 示例:在 RAM 放置在函数中
          2. 8.5.5.2.2 绑定
          3. 8.5.5.2.3 指定的存储器
          4. 8.5.5.2.4 使用 HIGH 位置说明符来控制放置
            1. 8.5.5.2.4.1 使用 HIGH 说明符进行链接器放置
            2.         267
            3. 8.5.5.2.4.2 在没有 HIGH 说明符的情况下进行链接器放置
          5. 8.5.5.2.5 对齐和分块
          6. 8.5.5.2.6 对齐和填充
        3. 8.5.5.3 指定输入段
          1. 8.5.5.3.1 指定段内容的最常用方法
          2.        273
        4. 8.5.5.4 使用多级子段
        5. 8.5.5.5 指定库或存档成员作为输出段的输入
          1. 8.5.5.5.1 将成员存档至输出段
          2.        277
        6. 8.5.5.6 使用多个存储器范围进行分配
        7. 8.5.5.7 在非连续存储器范围之间自动拆分输出段
      6. 8.5.6  在不同的加载和运行地址放置段
        1. 8.5.6.1 指定加载和运行地址
        2.       282
        3. 8.5.6.2 使用 .label 指令引用加载地址
      7. 8.5.7  使用 GROUP 和 UNION 语句
        1. 8.5.7.1 将输出段一同进行分组
        2. 8.5.7.2 利用 UNION 语句叠加段
        3. 8.5.7.3 将存储器用于多种用途
        4. 8.5.7.4 嵌套 UNION 和 GROUP
        5. 8.5.7.5 检查分配器的一致性
        6. 8.5.7.6 为 UNION 和 GROUP 命名
      8. 8.5.8  特殊段类型(DSECT、COPY、NOLOAD 和 NOINIT)
      9. 8.5.9  使用链接器配置纠错码 (ECC)
        1. 8.5.9.1 在存储器映射中使用 ECC 说明符
        2. 8.5.9.2 使用 ECC 指令
        3. 8.5.9.3 在存储器映射中使用 VFILL 限定符
      10. 8.5.10 在链接时分配符号
        1. 8.5.10.1 赋值语句的语法
        2. 8.5.10.2 向符号分配 SPC
        3. 8.5.10.3 赋值表达式
        4. 8.5.10.4 由链接器自动定义的符号
        5. 8.5.10.5 向符号分配一个段的确切开始值、结束值和大小值
        6. 8.5.10.6 为什么点运算符有时不起作用
        7. 8.5.10.7 地址和维度运算符
          1. 8.5.10.7.1 输入项
          2. 8.5.10.7.2 输出段
          3. 8.5.10.7.3 GROUP
          4. 8.5.10.7.4 UNION
        8. 8.5.10.8 LAST 运算符
      11. 8.5.11 创建和填充孔洞
        1. 8.5.11.1 已初始化和未初始化的段
        2. 8.5.11.2 创建空洞
        3. 8.5.11.3 填充孔洞
        4. 8.5.11.4 对未初始化的段进行显式初始化
    6. 8.6  链接器符号
      1. 8.6.1 链接器定义的函数和数组
      2. 8.6.2 链接器定义的整数值
      3. 8.6.3 链接器定义的地址
      4. 8.6.4 有关 _symval 运算符的更多信息
      5. 8.6.5 弱符号
        1. 8.6.5.1 弱符号引用
        2. 8.6.5.2 弱符号定义
      6. 8.6.6 利用对象库解析符号
    7. 8.7  默认放置算法
      1. 8.7.1 分配算法如何创建输出段
      2. 8.7.2 减少存储器碎片
    8. 8.8  使用由链接器生成的复制表
      1. 8.8.1 使用复制表进行引导加载
      2. 8.8.2 在复制表中使用内置链接运算符
      3. 8.8.3 重叠管理示例
      4. 8.8.4 使用 table() 运算符生成复制表
        1. 8.8.4.1 table() 操作符
        2. 8.8.4.2 启动时复制表
        3. 8.8.4.3 使用 table() 操作符管理目标组件
        4. 8.8.4.4 由链接器生成的复制表段和符号
        5. 8.8.4.5 拆分对象组件和重叠管理
      5. 8.8.5 压缩
        1. 8.8.5.1 压缩的复制表格式
        2. 8.8.5.2 目标文件中的压缩段表示
        3. 8.8.5.3 压缩的数据布局
        4. 8.8.5.4 运行时解压缩
        5. 8.8.5.5 压缩算法
        6.       342
      6. 8.8.6 复制表内容
      7. 8.8.7 通用复制例程
    9. 8.9  由链接器生成的 CRC 表
      1. 8.9.1 在 SECTIONS 指令中使用 crc_table() 运算符
        1. 8.9.1.1 使用 crc_table() 运算符时的限制
        2. 8.9.1.2 示例
          1. 8.9.1.2.1 使用 crc_table() 操作符计算 .text 数据的 CRC 值
          2.        350
          3. 8.9.1.2.2 在 crc_table() 操作符中指定算法
          4.        352
          5. 8.9.1.2.3 多个段使用单一表
          6.        354
          7. 8.9.1.2.4 将 crc_table() 运算符应用于 GROUP 或 UNION
          8.        356
        3. 8.9.1.3 使用 crc_table() 运算符时的接口
          1. 8.9.1.3.1 CRC 表头,crc_tbl.h
          2. 8.9.1.3.2 通用 CRC 校验例程
      2. 8.9.2 关于 TMS570_CRC64_ISO 算法的注意事项
    10. 8.10 部分(增量)链接
    11. 8.11 链接 C/C++ 代码
      1. 8.11.1 运行时初始化
      2. 8.11.2 对象库和运行时支持
      3. 8.11.3 设置堆栈段的大小
      4. 8.11.4 在运行时初始化和自动初始化变量
      5. 8.11.5 Cinit 的初始化和看门狗计时器保持
    12. 8.12 链接器示例
  10. 绝对列表器说明
    1. 9.1 生成绝对列表
    2. 9.2 调用绝对列表器
    3. 9.3 绝对列表器示例
  11. 10交叉参考列表器说明
    1. 10.1 生成交叉参考列表
    2. 10.2 调用交叉参考列表器
    3. 10.3 交叉参考列表示例
  12. 11目标文件实用程序
    1. 11.1 调用目标文件显示实用程序
    2. 11.2 调用反汇编器
      1. 11.2.1 目标文件 memcpy32.asm
      2.      381
      3. 11.2.2 从 memcpy32.asm 进行反汇编
      4.      383
      5. 11.2.3 具有不同加载和运行地址的部分复制记录输出
    3. 11.3 调用名称实用程序
    4. 11.4 调用符号去除实用程序
  13. 12十六进制转换实用程序说明
    1. 12.1  软件开发流程中十六进制转换实用程序的作用
    2. 12.2  调用十六进制转换实用程序
      1. 12.2.1 从命令行调用十六进制转换实用程序
      2. 12.2.2 使用命令文件调用十六进制转换实用程序
    3. 12.3  理解存储器宽度
      1. 12.3.1 目标宽度
      2. 12.3.2 指定存储器宽度
      3. 12.3.3 将数据分入输出文件
    4. 12.4  ROMS 指令
      1. 12.4.1 何时使用 ROMS 指令
      2. 12.4.2 ROMS 指令的示例
    5. 12.5  SECTIONS 指令
    6. 12.6  加载映像格式(--load_image 选项)
      1. 12.6.1 加载映像段形成
      2. 12.6.2 加载映像特性
    7. 12.7  排除指定段
    8. 12.8  分配输出文件名
    9. 12.9  映像模式和 --fill 选项
      1. 12.9.1 生成存储器映像
      2. 12.9.2 指定填充值
      3. 12.9.3 使用映像模式的步骤
    10. 12.10 数组输出格式
    11. 12.11 为片上引导加载程序编译引导表
      1. 12.11.1 引导表说明
      2. 12.11.2 引导表格式
      3. 12.11.3 如何构建引导表
        1. 12.11.3.1 构建引导表
        2. 12.11.3.2 为引导表留出空间
      4. 12.11.4 从器件外设进行引导
      5. 12.11.5 设置引导表的进入点
      6. 12.11.6 使用 ARM 引导加载程序
        1. 12.11.6.1 从 8 位 SPI Boot 引导的示例命令文件
        2.       420
        3. 12.11.6.2 ARM 16 位并行引导 GP I/O 的示例命令文件
        4.       422
    12. 12.12 在 TMS320F2838x 器件上使用安全闪存引导功能
    13. 12.13 控制 ROM 器件地址
    14. 12.14 控制十六进制转换实用程序诊断
    15. 12.15 目标格式说明
      1. 12.15.1 ASCII 十六进制对象格式(--ascii 选项)
      2. 12.15.2 Intel MCS-86 目标格式(--intel 选项)
      3. 12.15.3 Motorola Exorciser 对象格式(--motorola 选项)
      4. 12.15.4 扩展的 Tektronix 目标格式(--tektronix 选项)
      5. 12.15.5 德州仪器 (TI) SDSMAC (TI-Tagged) 目标格式(--ti_tagged 选项)
      6. 12.15.6 TI-TXT 十六进制格式(--ti_txt 选项)
        1. 12.15.6.1 TI-TXT 目标格式
  14. 13与汇编源代码共享 C/C++ 头文件
    1. 13.1 .cdecls 指令概述
    2. 13.2 C/C++ 转换注意事项
      1. 13.2.1  说明
      2. 13.2.2  条件编译(#if/#else/#ifdef/等)
      3. 13.2.3  Pragma
      4. 13.2.4  #error 和 #warning 指令
      5. 13.2.5  预定义符号 __ASM_HEADER__
      6. 13.2.6  在 C/C++ asm( ) 语句中的用法
      7. 13.2.7  #include 指令
      8. 13.2.8  转换 #define 宏
      9. 13.2.9  #undef 指令
      10. 13.2.10 枚举
      11. 13.2.11 C 字符串
      12. 13.2.12 C/C++ 内置函数
      13. 13.2.13 结构体和联合体
      14. 13.2.14 函数/变量原型
      15. 13.2.15 C 常量后缀
      16. 13.2.16 基本 C/C++ 类型
    3. 13.3 C++ 专有转换注意事项
      1. 13.3.1 名称改编
      2. 13.3.2 衍生类
      3. 13.3.3 模板
      4. 13.3.4 虚拟函数
    4. 13.4 汇编器特殊支持
      1. 13.4.1 枚举 (.enum/.emember/.endenum)
      2. 13.4.2 .define 指令
      3. 13.4.3 .undefine/.unasg 指令
      4. 13.4.4 $$defined( ) 内置函数
      5. 13.4.5 $$sizeof 内置函数
      6. 13.4.6 结构体/联合体对齐和 $$alignof( )
      7. 13.4.7 .cstring 指令
  15.   A 符号调试指令
    1.     A.1 DWARF 调试格式
    2.     A.2 调试指令语法
  16.   B XML 链接信息文件说明
    1.     B.1 XML 信息文件元素类型
    2.     B.2 文档元素
      1.      B.2.1 标头元素
      2.      B.2.2 输入文件列表
      3.      B.2.3 对象组件列表
      4.      B.2.4 逻辑组列表
      5.      B.2.5 放置映射
      6.      B.2.6 Far Call Trampoline 列表
      7.      B.2.7 符号表
  17.   C 十六进制转换实用程序示例
    1.     C.1 场景 1 -- 为单个 8 位 EPROM 构建十六进制转换命令文件
      1.      C.1.1 场景 1 的链接器命令文件和链接映射
      2.      482
      3.      C.1.2 场景 1 的十六进制转换命令文件
      4.      484
      5.      C.1.3 十六进制映射文件 example1.mxp 的内容
    2.     C.2 场景 2 -- 为 16-BIS 代码构建十六进制转换命令文件
      1.      C.2.1 场景 2 的链接器命令文件
      2.      488
      3.      C.2.2 场景 2 的十六进制转换命令文件
      4.      490
      5.      C.2.3 十六进制映射文件 example2.mxp 的内容
    3.     C.3 场景 3 -- 为两个 8 位 EPROM 构建十六进制转换命令文件
      1.      C.3.1 场景 3 的链接器命令文件
      2.      494
      3.      C.3.2 场景 3 的十六进制转换命令文件
      4.      496
      5.      C.3.3 十六进制映射文件 example3.mxp 的内容
      6.      498
  18.   D 术语表
    1.     D.1 术语
  19.   E 修订历史记录
  20.   E 早期修订版本

术语

    ABI

    应用程序二进制接口。

    绝对地址[absolute address]

    ARM 存储器位置永久分配的地址。

    绝对常量表达式[absolute constant expression]

    不引用任何外部符号、寄存器或存储器的表达式。该表达式的值在汇编时必须是可知的。

    绝对列表器[absolute lister]

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

    地址常量表达式[absolute constant expression]

    一个符号,其值为地址加上加数,是具有整数值的绝对常量表达式。

    对齐[alignment]

    链接器将输出段置于 n 字节边界(其中 n 是 2 的幂)内地址的过程。您可以使用 SECTIONS 链接器指令来指定对齐。

    分配[allocation]

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

    ANSI

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

    存档库[archive library]

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

    归档器[archiver]

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

    ASCII

    美国信息交换标准码;一种用于表示和交换字母数字信息的计算机标准代码。

    汇编器[assembler]

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

    汇编时常量[assembly-time constant]

    利用 .set 指令来指定常量值的符号。

    大端字节序[big endian]

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

    绑定[binding]

    为输出段或符号指定明确地址的过程。

    BIS

    位指令集。

    块[block]

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

    .bss 段[.bss section]

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

    字节[byte]

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

    C/C++ 编译器[C/C++ compiler]

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

    命令文件[command file]

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

    注释[comment]

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

    编译器程序[compiler program]

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

    条件处理[conditional processing]

    根据对指定表达式的评估,处理一个源代码块或一个源代码替代块的方法。

    配置的存储器[configured memory]

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

    常量[constant]

    值不能改变的类型。

    常量表达式[constant expression]

    不以任何方式引用寄存器或存储器的表达式。

    交叉参考列表器[cross-reference lister]

    一种可生成输出文件的实用程序,其中列出了定义的符号、定义符号的文件、符号的引用类型、定义符号的行、引用符号的行以及符号汇编器和链接器的最终值。交叉参考列表器使用链接的目标文件作为输入。

    交叉参考列表[cross-reference listing]

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

    .data 段[.data section]

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

    指令[directives]

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

    DWARF

    一种标准化调试数据格式,最初是与 ELF 共同设计的,但它可独立于目标文件格式。

    EABI

    一种嵌入式应用二进制接口 (ABI),可为文件格式、数据类型等提供标准。

    ELF

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

    仿真器[emulator]

    用于复制 ARM 运行情况的硬件开发系统。

    入口点[entry point]

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

    环境变量[environment variable]

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

    收尾程序[epilog]

    函数中代码的一部分,用于恢复栈并返回。

    可执行模块[executable module]

    可在目标系统中执行的已链接目标文件。

    表达式[expression]

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

    外部符号[external symbol]

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

    字段[field]

    对于 ARM,一种可由软件配置、将长度编程为 1-32 位范围内任意值的数据类型。

    全局符号[global symbol]

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

    GROUP

    SECTIONS 指令的一个选项,可强制连续分配指定的输出段(作为一个组)。

    十六进制转换实用程序[hex conversion utility]

    一种可将目标文件转换为一种标准 ASCII 十六进制格式、适合加载到 EPROM 编程器中的实用程序。

    高级语言调试[high-level language debugging]

    编译器为调试工具保留符号和高级语言信息(如类型和函数定义)的能力。

    空洞[hole]

    两个输入段之间、会形成无代码输出段的区域。

    标识符[identifier]

    用作标签、寄存器和符号的名称。

    立即操作数[immediate operand]

    一个值必须为常量表达式的操作数。

    增量链接[incremental linking]

    采用多通路的链接文件。增量链接对于大型应用程序十分有用,用户可以对应用程序进行分区,分别链接各个部分,然后将所有部分链接在一起。

    加载时初始化[initialization at load time]

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

    已初始化段[initialized section]

    目标文件中将链接到可执行模块中的段。

    输入段[input section]

    目标文件中将链接到可执行模块中的段。

    ISO

    国际标准化组织;一个由国家标准机构组成的全球联合会,负责建立行业自愿遵循的国际标准。

    标签[label]

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

    链接器[linker]

    一种软件程序,用于组合目标文件来组成可分配到系统存储器并由器件执行的目标模块。

    列表文件[listing file]

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

    字面常量[literal constant]

    表示其本身的值。也被称为字面量直接值

    小端字节序[little endian]

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

    加载器[loader]

    将可执行模块放入系统存储器的器件。

    宏[macro]

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

    宏调用[macro call]

    调用一个宏的过程。

    宏定义[macro definition]

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

    宏扩展[macro expansion]

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

    宏库[macro library]

    由宏组成的存档库。库中的每个文件必须包含一个宏;其名称必须与其定义的宏名称一致,且必须具有 .asm 扩展名。

    映射文件[map file]

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

    成员[member]

    结构体、联合体、存档或枚举的元素或变量。

    存储器映射[memory map]

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

    存储器引用操作数[memory reference operand]

    使用特定目标语法引用存储器中某个位置的操作数。

    助记符[mnemonic]

    一个可让汇编器转换为机器代码的指令名。

    模型语句[model statement]

    每次调用宏时,在宏定义中进行汇编的指令或汇编器指令。

    命名段[named section]

    由 .sect 指令定义的已初始化段。

    目标文件[object file]

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

    对象库[object library]

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

    目标模块[object module]

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

    操作数[operand]

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

    优化器[optimizer]

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

    选项[options]

    在调用软件工具时使用户能够请求其他或特定函数的命令行参数。

    输出模块[output module]

    在目标系统上下载和执行的已链接可执行对象文件。

    输出段[output section]

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

    局部链接[partial linking]

    采用多通路的链接文件。增量链接对于大型应用程序很有用,因为可以对应用程序分区,分别链接各个部分,然后将所有部分链接在一起。

    无声运行[quiet run]

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

    原始数据[raw data]

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

    寄存器操作数[register operand]

    一个表示 CPU 寄存器的特殊预定义符号。

    可重定位的常量表达式[relocatable constant expression]

    至少引用一个外部符号、寄存器或存储器位置的表达式。该表达式的值直到链接时才能知道。

    重定位[relocation]

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

    ROM 宽度[ROM width]

    每个输出文件的宽度(以位为单位),更具体地说,是十六进制转换实用程序文件中单个数据值的宽度。ROM 宽度决定实用程序如何将数据分入输出文件。目标字映射到存储器字后,存储器字将分解为一个或多个输出文件。输出文件的数目由 ROM 宽度决定。

    运行地址[run address]

    段运行的地址。

    运行时支持库[run-time-support library]

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

    段[section]

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

    段程序计数器 (SPC)[section program counter (SPC)]

    可持续跟踪段中当前位置的元素;每个段都自带 SPC。

    符号扩展[sign extend]

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

    模拟器[simulator]

    用于仿真 ARM 运行情况的软件开发系统。

    源文件[source file]

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

    静态变量[static variable]

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

    存储类[storage class]

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

    字符串表[string table]

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

    结构[structure]

    拥有统一名称的一个或者多个变量的集合。

    子段[subsection]

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

    符号[symbol]

    表示一个地址或值的名称。

    符号常量[symbolic constant]

    值为绝对常量表达式的符号。

    符号调试[symbolic debugging]

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

    标签[tag]

    可分配给结构体、联合体或枚举的可选类型 名称。

    目标存储器[target memory]

    系统中加载可执行目标代码的物理存储器。

    .text 段[.text section]

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

    未配置的存储器[unconfigured memory]

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

    未初始化段[uninitialized section]

    在存储器映射中保留空间但不包含实际内容的目标文件段。这些段由 .bss 和 .usect 指令创建。

    UNION

    能使链接器将同一地址分配给多个段的 SECTIONS 指令选项。

    联合体[union]

    可以保存不同类型和大小的对象的变量。

    无符号值[unsigned value]

    无论实际符号是什么都会当作非负数的值。

    变量[variable]

    表示可假设为任何一组值的数量的符号。

    胶合代码[veneer]

    在需要状态变化的情况下作为例程的备用进入点的指令序列。

    定义明确的表达式[well-defined expression]

    仅包含符号或汇编时常量的一个术语或一组术语,提前定义后才能出现在表达式中。

    字[word]

    目标存储器中的 32 位可寻址位置