c语言程序设计 摘要,第讲C语言程序设计摘要.ppt

第讲C语言程序设计摘要

第6章 C55x C/C++ 语言程序设计(第9讲) 6.1 C55x C/C++语言概述 6.2 C55x C/C++语言编程基础 6.3 C55x C/C++编译器的使用 6.4 C55x 的C代码优化 6.5 C55x C和汇编语言混合编程 6.1 C55x C/C++语言概述 C/C++语言基本特点 语言简洁、紧凑,使用方便、灵活 运算符丰富,表达式类型多样化 数据结构类型丰富 具有结构化的控制语句 语法限制不太严格,程序设计自由度大 C/C++语言允许访问物理地址,能进行位操作,能实现汇编语言的大部分功能,能直接对硬件进行操作 C55x C/C++语言概况 编译器 全面支持ANSI C/C++语言标准 特点 生成的汇编语言便于查看,使用户能够看到产生自C/C++源程序的代码 允许用户在链接时定义自己的系统存储器配置 COFF文件支持源程序级的调试 6.2 C55x C/C++语言编程基础 6.2.1 数据类型 6.2.2 关键字 6.2.3 寄存器变量和参数 6.2.4 asm指令 6.2.5 Pragma指令 6.2.6 标准ANSIC语言模式的改变 6.2.7 存储器模式 6.2.8 存储器分配 6.2.9 中断处理 6.2.10 运行时间支持算法及转换程序 6.2.11 系统初始化 6.2.1 数据类型 6.2.2 关键字 const ioport interrupt onchip volatile 1. const 确保变量或数组等的值不改变 可以定义大常数表并将它们分配到系统ROM中 2. ioport 支持I/O寻址模式 可以和标准类型(数组、结构体struct、共用体uinon和枚举enum)一起使用 可以和const及volatile一起使用 当和数组一起使用时,ioport限制的是数组单元而非数组类型本身 单独使用时,默认为int 只能用于全局或静态变量,局部变量不能用ioport限制,除非变量是个指针 例 ioport int k; /*正确*/ void foo(void) { ioport int i; /*错误* / ioport int *j;/*正确* / } 3. interrupt 指定某个函数为中断函数 例 interrupt void int_handler() { unsigned int flags; ... } 4. onchip 声明一个特殊指针,该指针所指向的数据可用作双MAC指令的操作数。 a pointer points to data that may be used as an operand to a dual MAC instruction. 在链接时这些数据必须被链接到DSP片上存储器Data passed to a function with onchip parameters or data must be linked into on-chip memory (not external memory) ,否则会导致总线错误Failure to link the data appropriately can result in a reference to external memory through the BB data bus, which will generate a bus error. 例 onchip int x[100]; /* 数组声明 */ onchip int *p; /* 指针声明 */ 5. volatile 优化器 通过分析数据流来避免存储器访问 如果程序依靠存储器访问,则必须使用volatile关键字来指明这些访问,编译器将不会优化任何对volatile变量的引用 C/C++程序 优化的结果 6.2.3 寄存器变量和参数 寄存器变量 用register声明的变量 C编译器对寄存器变量的处理方式 使用优化器 忽略任何寄存器声明 通过一种能够最有效地使用寄存器的代价算法,把寄存器分配给变量和临时量 不使用优化器 将使用register关键字的变量分配到寄存器中 注意 编译器会尽量分配好所声明的寄存器变量 当用完了CPU寄存器或定义了太多的寄存器变量 将通过移动寄存器内容到存储器来释放寄存器 可以声明为寄存器的变量类型 整型、浮点型和指针类型 6.2.4 asm指令 将C55x汇编语言指令嵌入到编译器的汇编语言输出中 例 asm (“nop”); 插入一条汇编指令nop 注意 插入的代码必须是合法的汇编语言指令 使用asm指令存在的问题 它容易破坏C环境 因为C编译器检查或分析嵌入的汇编语句 优化器时 优化器

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值