第6章C/C++语言程序设计 ■6.1C55xC/C++语言概述 ■6.2C55xC/C++语言编程基础 ■6.3C55xC/C++编译器的使用 ■6.4TMS320C55x的C代码优化 6.5C55xC和汇编语言混合编程 8
第6章 C/C++语言程序设计 8 ◼6.1 C55x C/C++语言概述 ◼6.2 C55x C/C++语言编程基础 ◼6.3 C55x C/C++编译器的使用 ◼6.4 TMS320C55x的C代码优化 ◼6.5 C55x C和汇编语言混合编程
6.2C55xC/C++语言编程基础 ■ 6.2.1数据类型 ■6.2.2关键字 ■6.2.3寄存器变量和参数 ■6.2.4asm指令 ■6.2.5 Pragma指令 ■6.2.6标准ANSIC语言模式的改变(-pk,-pr和-ps选项) 6.2.7存储器模式 ■6.2.8存储器分配 ■6.2.9中断处理 ■6.2.10运行时间支持算法及转换程序 ■6.2.11系统初始化 10
◼ 6.2.1 数据类型 ◼ 6.2.2 关键字 ◼ 6.2.3 寄存器变量和参数 ◼ 6.2.4 asm指令 ◼ 6.2.5 Pragma指令 ◼ 6.2.6标准ANSIC语言模式的改变(-pk,-pr和-ps选项) ◼ 6.2.7 存储器模式 ◼ 6.2.8 存储器分配 ◼ 6.2.9 中断处理 ◼ 6.2.10 运行时间支持算法及转换程序 ◼ 6.2.11 系统初始化 6.2 C55x C/C++语言编程基础 10
6.2.1数据类型 C55xC语言支持的数据类型: -215~215-1 类型 长度(位) 内容 最小值 最大值 带符号)字符型(signed)char 16 ASCⅡ码 -32768 32767 无符号字符型unsigned char 16 ASCⅡ码 0 65535 带符号)短整型(signed)short 16 2补码 -32768 32767 无符号短整型unsigned short 16 二进制数 0 65535 带符号)整型(signed)int 16 2补码 -32768 32767 无符号整型unsigned int 16 二进制数 0 65535 带符号)长整型(signed)long 2补码 -2147 2147 32 483648 483647 二进制数 4294 无符号长整型unsigned long 32 0 967295 -231~231-1 11
6.2.1 数据类型 ⚫ C55x C语言支持的数据类型: 类型 长度(位) 内容 最小值 最大值 (带符号)字符型(signed) char 16 ASCII码 -32 768 32 767 无符号字符型unsigned char 16 ASCII码 0 65 535 (带符号)短整型(signed) short 16 2补码 -32 768 32 767 无符号短整型unsigned short 16 二进制数 0 65 535 (带符号)整型(signed) int 16 2补码 -32 768 32 767 无符号整型unsigned int 16 二进制数 0 65 535 (带符号)长整型(signed) long 32 2补码 -2 147 483 648 2 147 483 647 无符号长整型unsigned long 32 二进制数 0 4 294 967 295 11 -2 15 ~ 215 -1 -2 31 ~ 231 -1
C55xC语言支持的数据类型: 239239-1 类型 长度(位) 内容 最小值 最大值 带符号特长整型long long 40 2补码 -549755 549755 813888 813888 无符号特长整型 1099511 unsigned long long 40 二进制数 627775 枚举enum 16 2补码 -32768 32767 浮点float 32 正数的 32位EEE 1.18E-38 3.40E+38 双精度double 表示范围32 32位EEE 1.18E-38 3.40E+38 长双精度long double 32 32位EEE 1.18E-38 3.40E+38 数据指针(小存储器模式) 16 二进制数 0 0xFFFF 数据指针(大存储器模式) 23 二进制数 0 0x7FFFFF 程序指针pointers(function 24 二 进制数 0 OxFFFFFF 3130 2322 0 二进制小数 S 阶码E 尾数M ←-32位浮点数真值:x=(-1)×(1.M)×2(B-12) 实际上2的指数值取-126八127(数范围2126≈2*2127),保留的特殊指数值-127和 128用来表示非数NaN,±0,士o∞等特殊值。 1.11111111111111111111111≈2 12
类型 长度(位) 内容 最小值 最大值 带符号特长整型long long 40 2补码 −549 755 813 888 549 755 813 888 无符号特长整型 unsigned long long 40 二进制数 0 1 099 511 627 775 枚举enum 16 2补码 -32 768 32 767 浮点float 32 32位IEEE 1.18E-38 3.40E+38 双精度 double 32 32位IEEE 1.18E-38 3.40E+38 长双精度long double 32 32位IEEE 1.18E-38 3.40E+38 数据指针(小存储器模式) 16 二进制数 0 0xFFFF 数据指针(大存储器模式) 23 二进制数 0 0x7FFFFF 程序指针pointers (function) 24 二进制数 0 0xFFFFFF 12 ⚫ C55x C语言支持的数据类型: -2 39 ~ 239 -1 S 阶码E 尾数 M 31 30 23 22 0 ←32位浮点数真值: x = (-1) s (1.M) 2 (E-127) 二进制小数 正数的 表示范围 实际上2的指数值取-126~127 (数范围2 -126 ~ 2*2 127 ), 保留的特殊指数值-127和 128用来表示非数NaN, ±0,±∞等特殊值。 1.11111111111111111111111≈2
6.2.1数据类型 定义各种数据类型时应注意如下规则: ◆避免设int和long为相同大小; ◆定点算法(特别乘法)尽量用int类型。用Iong类型作乘 法操作数会调用运行时间库(run-time library)程序; ◆用int或unsigned int类型而非long类型来循环计数; ◆最好使用it类型作循环指数变量和其它位数不太重要 时的整型变量,因为it是对目标系统操作最高效的整 数类型而不管芯片结构如何。 ◆避免设char为8位或long为64位, 13
⚫定义各种数据类型时应注意如下规则: ◆避免设int和long为相同大小; ◆定点算法(特别乘法)尽量用int类型。用long类型作乘 法操作数会调用运行时间库(run-time library)程序; ◆用int或unsigned int类型而非long类型来循环计数; ◆最好使用int类型作循环指数变量和其它位数不太重要 时的整型变量, 因为int是对目标系统操作最高效的整 数类型而不管芯片结构如何。 ◆避免设char为8位或long为64位; 13 6.2.1 数据类型