德泽网德泽网

在下面的代码段中编译器通过程序调

作者:admin日期:阅读:173

分类:德泽网/经济资讯/

  则其中的 Code Optimization 栏就是用来设置C51的优化级别。

  常数折叠:只要有可能,编译器就执行将表达式化为常数数字的计算,其中包括运行地址的计算。

  简单访问优化:对8051系统的内部数据和位地址进行访问优化。

  连接定位器BL51通过对全局数据流的分析,选择可静态覆盖的段。

  “窥孔”优化:将冗余的MOV命令去掉,包括不必要的从存储器装入对象及装入常数的操作。

  扩展入口优化:在适合时对寄存器变量使用DPTR数据指针,指针和数组访问被优化以减小程序代码和提高执行速度。

  采用_at_将变量MAX197定义到外部扩展RAM 指定地址0x8000。

  这些函数和滤波器的实现相对今天的应用比较简单,用汇编语言也容易突出DSP的硬件特性。

  例如,在下面的代码段中,编译器通过程序调用来计算表达式x/y的值。

  这类问题并不是编译器的问题。由于访问内部寄存器比访问RAM速度块,因此编译器在编译类似程序时,会对程序进行优化,除第一次编译变量所在在连续读取一个变量时,编译器为了简化程序,只要有可能就会把第一次读取的值放在ACC或Rx中,在以后的读取该变量的值时就直接使用第一次的读取值。如果该变量的值在此过程中已经被外设(如读取外部设备端口时经常将外设端口看作一外部RAM地址)或其他程序(如中断服务程序)所改变,可能就会出错。为了解决这类问题,常用的方法就是降低编译器的优化级别或者使用volatile关键字。

  可以看这此y,z变量的值是从d的存储区中读取的。这主要是由编译器的优化早成的,而不是编译器的错误。

  整条性能曲线开始在A点,可以把它叫做out-of-box A点,就是程序员或者用户用自己未经优化的C语言程序在DSP上编译和运行能够达到的性能。

  比如,在下面的例子中,用户可能认为进入子程序example1中后,参数x的值保存在寄存器RO中,因而在内嵌的汇编指令中直接使用寄存器RO,最后返回结果。

本文标签:
推荐
  • 在下面的例子中用户可能认为进入子

  • 则其中的 Code Optimization 栏就是用来设置C51的优化级别。 常数折叠:只要有可能,编译器就执行将表达式化为常数数字的计算,其中包括运行地址的计算。 简单访问优化:对8051系统的内

焦点

德泽网