目录
第1部分汇编语言工具
第1章汇编语言工具概述
1.1软件开发工具概述
1.2软件开发工具介绍
第2章通用目标文件格式介绍
2.1COFF文件类型
2.2段
2.3汇编器对段的处理
2.3.1未初始化段
2.3.2已初始化段
2.3.3已命名段
2.3.4子段
2.3.5段程序计数器
2.3.6使用段伪指令的实例
2.4连接器如何处理段
2.4.1默认的存储器分配
2.4.2将段放在存储器映像中
2.5重新定位
2.6运行时重新定位
2.7加载一个程序
2.8COFF文件中的符号
2.8.1外部符号
2.8.2符号表
第3章汇编器
3.1汇编器概述
3.2调用汇编器
3.3C54x汇编器的特点
3.3.1字节/字寻址
3.3.2并行指令规则
3.3.3变长指令长度的确定
3.3.4存储器模式
3.3.5使用MMR地址时的汇编器警告
3.4为汇编器的输入命名备用的文件和路径
3.4.1使用i汇编器选项
3.4.2使用环境变量(C54X_A_DIR和A_DIR)
3.5源程序语句的格式
3.5.1源程序语句的语法
3.5.2标号字段
3.5.3助记符指令字段
3.5.4代数指令字段
3.5.5注释字段
3.6常数
3.6.1二进制整数
3.6.2八进制整数
3.6.3十进制整数
3.6.4十六进制整数
3.6.5字符常数
3.6.6汇编时常数
3.6.7浮点常数
3.7字符串
3.8符号
3.8.1标号
3.8.2符号常数
3.8.3用d选项定义符号常数
3.8.4预定义的符号常数
3.8.5替代符号
3.8.6局部标号
3.9表达式
3.9.1运算符
3.9.2表达式的上溢和下溢
3.9.3完整定义的表达式
3.9.4条件表达式
3.9.5可重新定位符号和合法的表达式
3.10内置函数
3.11源列表
3.12交叉引用列表
第4章汇编伪指令
4.1伪指令概述
4.2与TMS320C1x/C2x/C2xx/C5x汇编器伪指令的兼容性
4.3用于段定义的伪指令
4.4用于初始化常量的伪指令
4.5调整段计数器的伪指令
4.6用于规范输出列表的伪指令
4.7用于调用其他文件的伪指令
4.8条件汇编伪指令
4.9汇编时符号伪指令
4.10其他伪指令
4.11伪指令参考信息
第5章宏语言
5.1宏的使用
5.2定义宏
5.3宏参数/替代符号
5.3.1定义替代符号的伪指令
5.3.2内置的替代符号函数
5.3.3递归替代符号
5.3.4强制替代
5.3.5访问带下标的替代符号中的独立字符
5.3.6替代符号作为宏内的局部变量
5.4宏库
5.5在宏中使用条件汇编
5.6在宏中使用标号
5.7在宏中产生信息
5.8输出列表的格式化
5.9使用递归和嵌套的宏
5.10宏伪指令总结
第6章连接器描述
6.1连接器概述
6.2如何调用连接器
6.3连接器选项
6.3.1重新定位能力(a和r选项)
6.3.2禁止符号调试信息的合并(b选项)
6.3.3C语言选项(c和cr选项)
6.3.4定义程序入口(e global_symbol 选项)
6.3.5设置默认的填充值(f cc 选项)
6.3.6将符号指定为全局符号(g global_symbol 选项)
6.3.7指定所有全局符号为静态(h选项)
6.3.8定义堆的大小(heap constant 选项)
6.3.9改变库搜索算法(l选项、i选项和C54X_C_DIR/C_DIR
环境变量)
6.3.10禁止条件连接(j选项)
6.3.11忽略定位标志(k选项)
6.3.12产生映像文件(m filename选项)
6.3.13命名一个输出模块(o filename选项)
6.3.14指定静态运行(q选项)
6.3.15删除符号信息(s选项)
6.3.16定义堆栈大小(stack constant选项)
6.3.17定义二级堆栈大小(sysstack constant选项)
6.3.18引入一个未确定的符号(u symbol 选项)
6.3.19指定一个COFF格式(v选项)
6.3.20显示输出段的信息(w选项)
6.3.21穷举读库(x和priority选项)
6.4字节寻址/字寻址
6.5连接器命令文件
6.5.1连接器命令文件中的保留名
6.5.2命令文件中的常量
6.6目标库
6.7MEMORY伪指令
6.7.1默认的存储器模型
6.7.2MEMORY伪指令的语法
6.8SECTIONS伪指令
6.8.1SECTIONS 伪指令的语法格式
6.8.2地址分配
6.8.3把存档库的一个成员分配到输出段
6.8.4使用多个存储器区域进行地址分配
6.8.5输出段在非连续存储器区域间的自动分割
6.9指定一个段的加载地址和运行地址
6.9.1指定加载地址和运行地址
6.9.2未初始化段
6.9.3使用.label伪指令引用加载地址
6.10使用UNION(联合段)和GROUP(成组段)语句
6.10.1用UNION语句使段重叠
6.10.2将输出段组合成组
6.10.3嵌套的联合段(UNION)和成组段(GROUP)
6.10.4检查地址分配的一致性
6.11重叠页
6.11.1使用MEMORY伪指令定义重叠页
6.11.2用SECTIONS伪指令定义重叠页
6.11.3页定义的语法格式
6.12默认的地址分配算法
6.12.1地址分配算法
6.12.2输出段的通常规则
6.13特殊的段类型(DSECT、COPY和NOLOAD)
6.14连接时给符号赋值
6.14.1赋值语句的语法
6.14.2将段程序计数器SPC值赋给一个符号
6.14.3赋值表达式
6.14.4连接器定义的符号
6.14.5只有C语言支持的符号定义(c或cr选项)
6.15产生和填充存储器空位
6.15.1已初始化段和未初始化段
6.15.2创建空位
6.15.3填充空位
6.15.4对未初始化段的显式初始化
6.16部分连接
6.17连接C/C++代码
6.17.1运行时的初始化
6.17.2目标库以及运行时的支持
6.17.3设置堆栈和堆的大小
6.17.4自动初始化(ROM和RAM模式)
6.17.5连接器选项c和cr
6.18连接器举例
第7章文档管理器
7.1文档管理器概述
7.2调用文档管理器
7.3文档管理器举例
第8章绝对地址列表器描述
8.1产生绝对地址列表
8.2调用绝对地址列表器
8.3绝对地址列表器用例
第9章交叉引用列表器描述
9.1交叉引用列表的产生
9.2调用交叉引用列表器
9.3交叉引用列表举例
第10章十六进制转换工具
10.1调用十六进制转换工具
10.2命令文件
10.2.1命令文件例子
10.3存储器宽度
10.3.1目标宽度
10.3.2数据宽度
10.3.3存储器宽度
10.3.4ROM宽度
10.3.5一个存储器配置实例
10.3.6指定输出字的顺序
10.4ROMS伪指令
10.4.1何时使用ROMS伪指令
10.4.2ROMS伪指令的一个例子
10.4.3创建ROMS伪指令
10.5SECTIONS伪指令
10.6输出文件名
10.6.1指定输出文件名
10.7映像模式和fill选项
10.7.1image选项
10.7.2指定填充值
10.7.3映像模式的运行步骤
10.8为片内引导加载器创建一个引导表
10.8.1引导表说明
10.8.2引导表的格式
10.8.3怎样创建引导表
10.8.4从器件的外设引导
10.8.5设置引导表的入口
10.8.6使用C54x引导加载器
10.9控制ROM器件的地址
10.9.1控制起始地址
10.9.2控制地址递增索引
10.9.3byte选项
10.9.4处理地址空位
10.10目标格式的描述
10.10.1ASCIIHex目标格式(a选项)
10.10.2Intel MCS86目标格式(i选项)
10.10.3MotorolaS目标格式(m1、m2、m3选项)
10.10.4TITagged目标格式(t选项)
10.10.5扩展的Tektronix目标格式(x选项)
10.11十六进制转换工具的错误提示信息
第11章助记符到代数语言的转换器描述
11.1转换器概述
11.1.1转换器做什么
11.1.2转换器不能做什么
11.2调用转换器
11.3转换器模式
11.3.1文字模式(t选项)
11.3.2关于文字模式中的符号名
11.3.3扩展模式(e选项)
11.4转换器对宏的处理
11.4.1宏中的伪指令
11.4.2宏的局部变量
11.4.3调用宏时定义的标号
第2部分C 编 译 器
第12章C/C++编译器概述
12.1C/C++编译器简介
12.1.1ISO标准
12.1.2输出文件
12.1.3编译器接口
12.1.4编译器的操作
12.1.5辅助工具
12.2编译器与代码生成工具包(CCS)
第13章C/C++编译器的使用
13.1关于编译器
13.2C/C++ 编译器的调用方法
13.3用选项控制编译器的操作
13.3.1常用选项
13.3.2指定文件名
13.3.3改变编译器对文件名的类型识别规则(fa、fc、fg、fo和fp
选项)
13.3.4改变编译器对文件名和扩展名的命名规则(e选项)
13.3.5指定目录
13.3.6控制汇编器的选项
13.4使用环境变量
13.4.1指定路径(C_DIR和C54X_C_DIR)
13.4.2设置默认的编译器选项(C_OPTION和C54X_C_OPTION)
13.5控制预处理器
13.5.1预定义的宏名
13.5.2#include文件的搜索路径
13.5.3产生预处理列表文件(ppo选项)
13.5.4预处理之后的继续编译(ppa选项)
13.5.5产生带有注释的预处理列表文件(ppc选项)
13.5.6产生带有行控制信息的预处理列表文件(ppl选项)
13.5.7为代码生成工具产生预处理输出(ppd 选项)
13.5.8创建包含#include伪指令的文件列表(ppi选项)
13.6理解诊断信息
13.6.1控制诊断信息
13.6.2怎样使用诊断屏蔽选项
13.6.3其他信息
13.7产生交叉引用列表信息(px选项)
13.8创建一个原始的列表文件(pl选项)
13.9使用内联函数展开
13.9.1Intrinsic操作的内联
13.9.2非保护的定义控制内联
13.9.3保护的内联以及_INLINE预处理符号
13.9.4有关内联的限制
13.10使用交互列表
第14章优化代码
14.1优化器的使用
14.2执行文件级优化(用O3选项)
14.2.1控制文件级优化(Ol选项)
14.2.2生成一个优化信息文件(on选项)
14.3执行程序级优化(pm和O3选项)
14.3.1控制程序级的优化(op选项)
14.3.2C与汇编语言混合编程时的优化考虑
14.4关于在优化代码中使用asm语句的警告
14.5在已经优化的代码中访问别名变量
14.6自动内联展开(oi选项)
14.7优化时使用交互列表工具
14.8调试优化后的代码
14.8.1调试优化后的代码(g、gw和o选项)
14.8.2剖析已优化代码(gp和o选项)
14.9哪种优化正在执行
14.9.1基于开销的寄存器分配
14.9.2消除别名的歧义性
14.9.3跳转的优化和控制流的简化
14.9.4数据流的优化
14.9.5表达式的简化
14.9.6函数的内联展开
14.9.7索引变量和效用简化
14.9.8循环中固定代码的移出
14.9.9循环转换
14.9.10向后合并
14.9.11自增型寻址
14.9.12循环执行程序块
14.9.13延时的跳转、调用和返回
14.9.14代数重排、符号简化、常数合并
第15章C54x的C语言
15.1TMS320C54x的C语言特点
15.1.1标识符和常数
15.1.2数据类型
15.1.3类型转换
15.1.4表达式
15.1.5声明
15.1.6预处理器
15.2TMS320C54x的C++语言特点
15.3数据类型
15.4关键字
15.4.1const关键字
15.4.2ioport关键字
15.4.3interrupt关键字
15.4.4near和far关键字
15.4.5volatile关键字
15.5寄存器变量
15.6全局寄存器变量
15.7asm语句
15.8Pragma伪指令
15.8.1CODE_SECTION Pragma
15.8.2DATA_SECTION Pragma
15.8.3FUNC_CANNOT_INLINE Pragma
15.8.4FUNC_EXT_CALLED Pragma
15.8.5FUNC_IS_PURE Pragma
15.8.6FUNC_IS_SYSTEM Pragma
15.8.7FUNC_NEVER_RETURNS Pragma
15.8.8FUNC_NO_GLOBAL_ASG Pragma
15.8.9FUNC_NO_IND_ASG Pragma
15.8.10IDENT Pragma
15.8.11INTERRUPT Pragma
15.8.12NO_INTERRUPT Pragma
15.9创建连接名
15.10初始化静态变量和全局变量
15.10.1用类型限定词const来初始化静态变量和全局变量
15.11改变ISO C语言模式(pk、pr和ps选项)
15.11.1与K&R C的兼容(pk选项)
15.11.2使能严格ISO模式和非严格ISO模式(ps和pr选项)
15.11.3使能嵌入式C++模式(pe选项)
15.12编译器的限制
第16章运行时环境
16.1存储器模式
16.1.1段
16.1.2C/C++系统堆栈
16.1.3在程序存储器中给.const分配空间
16.1.4动态存储器分配
16.1.5变量的初始化
16.1.6给静态变量和全局变量分配存储器
16.1.7位域/结构体的定位
16.2字符串常量
16.3寄存器使用规则
16.3.1状态寄存器
16.3.2寄存器变量
16.4函数结构和调用规则
16.4.1函数如何产生调用
16.4.2被调用函数如何响应
16.4.3参数和局部变量的访问
16.4.4分配帧和使用32位存储器读指令
16.5C/C++与汇编语言的接口
16.5.1在C/C++代码中使用汇编语言模块
16.5.2在C/C++程序中访问汇编语言变量
16.5.3使用内嵌的汇编语言
16.5.4使用内在函数(intrinsics)访问汇编语言语句
16.6中断管理
16.6.1关于中断的几个要点
16.6.2使用C/C++中断服务程序
16.6.3在中断入口处保存运行状态
16.7整数表达式分析
16.7.1运算的上溢和下溢
16.7.2带RTS调用的求值运算
16.7.3用C代码访问16位乘法的高16位
16.8浮点表达式分析
16.9系统初始化
16.9.1变量的自动初始化
16.9.2全局结构
16.9.3初始化表
16.9.4运行时的变量自动初始化
16.9.5加载时变量的自动初始化
第17章运行时支持函数
17.1库
17.1.1rts.src中的非标准头文件
17.1.2修改库函数
17.1.3用不同选项建库
17.2C语言的I/O函数
17.2.1低级I/O操作概述
17.2.2为C语言I/O添加设备
17.3头文件
17.3.1诊断信息(assert.h/cassert)
17.3.2字符分类(charactertyping)和转换(ctype.h/cctype)
17.3.3出错报告(errno.h/cerrno)
17.3.4扩展寻址函数(extaddr.h)
17.3.5低级I/O函数(file.h)
17.3.6取值范围的限制(float.h/cfloat和limits.h/climits)
17.3.7浮点数学(math.h/cmath)
17.3.8非局部跳转(setjmp.h/csetjmp)
17.3.9可变参数(stdarg.h/cstdarg)
17.3.10标准定义(stddef.h/cstddef)
17.3.11输入/输出函数(stdio.h/cstdio)
17.3.12通用工具(stdlib.h/cstdlib)
17.3.13字符串函数(string.h/cstring)
17.3.14时间函数(time.h/ctime)
17.3.15异常处理(exception和stdexcept)
17.3.16动态存储器管理(new)
17.3.17运行时类型信息(typeinfo)
17.4运行时支持函数和宏总结
17.5运行时支持函数和宏的描述
第18章建库工具
18.1调用建库工具
18.2建库工具选项
18.3选项汇总
第19章C++的名称复原
19.1调用C++的名称复原工具
19.2C++名称复原工具选项
19.3C++名称复原工具的用例
第3部分汇编语言指令集
第20章汇编语言指令集概述
20.1指令集符号和缩略语
20.2指令说明的例子
第21章指令集概述
21.1算术操作
21.2逻辑操作
21.3程序控制操作
21.4加载和存储操作
21.5循环执行一条指令
第22章汇编语言指令