c55xC语言具有哪些基本特点,[工学]第6章C语言程序设计.ppt

[工学]第6章C语言程序设计

第6章 C/C++语言程序设计 C55x C/C++语言概述 C55x C/C++语言编程基础 C55x C/C++编译器的使用 TMS320C55x的C代码优化 6.1 C55x C/C++语言概述 C/C++语言概况 C55x C/C++语言概况 汇编语言依赖于计算机硬件,程序的可读性和可移植性比较差。一般高级语言具有很好的可移植性,但是难以实现汇编语言的某些功能(如对内存地址的操作、位操作等)。 C/C++语言作为一种高级语言,既可以访问物理地址又可以进行位操作,能直接对硬件进行操作,适合用作DSP开发语言。 C/C++语言具有如下基本特点: 语言简洁、紧凑,使用方便、灵活 运算符丰富,表达式类型多样化 数据结构类型丰富 具有结构化的控制语句 语法限制不太严格,程序设计自由度大 C/C++语言允许访问物理地址,能进行位操作,能实现汇编语言的大部分功能,能直接对硬件进行操作 6.1.2 C55x C/C++语言概况 C55x C/C++编译器全面支持ANSI C/C++语言标准,能够把按照标准ANSI C/C++规范编写的源程序进行全面优化,编译成C55x 汇编语言源程序。 C55x C/C++编译器工具拥有完整的实时运行库,所有的库函数均符合ANSI库标准。 C55x C/C++编译器输出文件的特性。 6.2 C55x C/C++语言编程基础 C55x C/C++编译器全面支持ANSI C/C++语言标准 本节介绍反映C55x C语言基本特性的有关编程基础知识 本节主要内容 数据类型 关键字 寄存器变量和参数 asm指令 Pragma指令 标准ANSIC语言模式的改变(-pk,-pr和-ps选项) 存储器模式 存储器分配 中断处理 运行时间支持算法及转换程序 系统初始化 6.2.1 数据类型 C55x C语言支持的数据类型: 定义各种数据类型时应注意如下规则: 避免设int和long为相同大小 对定点算法(特别是是乘法)尽量使用int数据类型。用long类型作乘法操作数会导致调用运行时间库(run-time library)的程序 使用int或unsigned int类型而非long类型来循环计数 避免设char为8位或long为64位 当所写代码用于多DSP目标系统中时,宜定义genetic类型。比如,一个人可以对16位整数和32位整数分别使用int16和int32。当对C55x DSP进行编译时,这些类型会分别被定义成int和long 最好使用int类型作循环指数变量和其它位数不太重要时的整型变量,因为int是对目标系统操作最高效的整数类型而不管芯片结构如何 6.2.2 关键字 1. const C55x C编译器支持标准C语言的const关键字。 将这个关键字使用到对任意变量或数组的定义上可以确保它们的值不改变。 如果定义一个对象为const,那么const段就会为该对象分配存储空间。使用const关键字可以定义大常数表并将它们分配到系统ROM中。 2. ioport C55x C编译器对标准C语言进行了扩展,增加了ioport关键字来支持I/O寻址模式 ioport类型限定词可以和标准类型(数组、结构体、共用体和枚举)一起使用 可以和const及volatile一起使用。当和数组一起使用时,ioport限制的是数组单元而非数组类型本身。ioport可以单独使用,这种情况下int限定词就是默认的 ioport类型限定词只能用于全局或静态变量。局部变量不能用ioport限制,除非变量是个指针 例6-1,ioport关键字的使用。 ioport int k ; /*正确* / void foo(void) { ioport int i ; /*错误* / ioport int *j ; /*正确* / } 3. interrupt C55x C编译器对标准C语言进行了扩展,增加了interrupt关键字,来指定某个函数为中断函数。 4. onchip Onchip关键字声明一个特殊指针,该指针所指向的数据可用作双MAC指令的操作数。在链接时这些数据必须被链接到DSP片上存储器,否则会导致总线错误。 例, onchip int x[100]; /* 数组声明 */ onchip int *p; /* 指针声明 */ 5. volatile 在任何情况下,优化器会通过分析数据流来避免存储器访问。 如果程序依靠存储器访问,则必须使用volatile关键字来指明这些访问。 编译器将不会优化任何对volatile变量的引用 6.2.3 寄存器变量和参数 寄存器变量就是用register关键字声明的变量。 根据是否使用优化器,C编译器对寄存器变量采用不同的处理方式。 编译器会尽

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值