位置:51电子网 » 技术资料 » EDA/PLD

C/C++语言的编译器操作概述

发布时间:2009/1/9 0:00:00 访问次数:1052

  1.集成的预处理器(integrated preprocessor)

  c/c++的预处理器集成在分析器工具中,可以提高代码的编译速度。用户可以只进行预处理也可以将预处理列表 保存在文件中。tms320x28xx的c/c++编译器包含杯准的预处理功能,这些功能主要完成下列预处理任务:

  ●宏定义和扩展;

  ● #include 文件处理

  ●条件编译处理;

  ●其他硕处理标识(在原代码文件中以#字符开始的特定的代码段)。

  2.代码优化

  编译器采用先进的优化技术对c/c++源代码进行优化,如图1所示,从而减小代码的尺寸,提高代码的效率和运行 速度。c28x优化器充分利用c28x的结构特点对其代码进行优化,生成更高效率的代码。优化器是位于分析器和代码 产生器中间的优化工具,最简单的方法就是使用clzooo—v2s shell程序,并通过-o选项确定优化级别。


 图1 带有优化的编译操作

  优化器总计有4个优化级别,分别对应不同的优化程序。

  (1) -o0

  ●简化控制流图(control flow graph);

  ●将变量分配到寄存器;

  ●完成循环旋转(loop rotation);

  ●删除未使用的代码;

  ●简化表达式和语句;

  ●内联声明未inline的函数。

  (2) -o1

  ●完成所有00的优化操作;

  ●运行局部复制/常数传递;

  ●删除未使用的赋值语句;

  ●删除局部公共表达式(local common expression)。

  (3) -o2

  ●完成所有-ol的优化操作;

  ●完成循环优化;

  ●删除全局公共子表达式(global common expression);

  ●删除全局未使用的赋值语句;

  ●如果使用o优化但不标注优化的级别,则系统默认为-o2优化。

  (4)-o3

  ●完成所有-o2的优化操作;

  ●删除未使用的函数;

  ●当函数的返回值没有用到时,简化函数的返回形式;

  ●内联小的函数;

  ●记录函数声明以便当优化调用时知道调用函数的属性;

  ●当所有调用都传递一个相同的参数时,把这个参数直接放在函数体中,不通过寄存器/存储器的方式传递这个参数;

  ●识别文件级变量特性。

  上述各级别的优化都是通过优化器来实现的,此外代码生成器也要运行其他优化,尤其是和处理器相关的优化。而代码生成器的优化操作总会被运行,与是否运行优化器没有关系。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



  1.集成的预处理器(integrated preprocessor)

  c/c++的预处理器集成在分析器工具中,可以提高代码的编译速度。用户可以只进行预处理也可以将预处理列表 保存在文件中。tms320x28xx的c/c++编译器包含杯准的预处理功能,这些功能主要完成下列预处理任务:

  ●宏定义和扩展;

  ● #include 文件处理

  ●条件编译处理;

  ●其他硕处理标识(在原代码文件中以#字符开始的特定的代码段)。

  2.代码优化

  编译器采用先进的优化技术对c/c++源代码进行优化,如图1所示,从而减小代码的尺寸,提高代码的效率和运行 速度。c28x优化器充分利用c28x的结构特点对其代码进行优化,生成更高效率的代码。优化器是位于分析器和代码 产生器中间的优化工具,最简单的方法就是使用clzooo—v2s shell程序,并通过-o选项确定优化级别。


 图1 带有优化的编译操作

  优化器总计有4个优化级别,分别对应不同的优化程序。

  (1) -o0

  ●简化控制流图(control flow graph);

  ●将变量分配到寄存器;

  ●完成循环旋转(loop rotation);

  ●删除未使用的代码;

  ●简化表达式和语句;

  ●内联声明未inline的函数。

  (2) -o1

  ●完成所有00的优化操作;

  ●运行局部复制/常数传递;

  ●删除未使用的赋值语句;

  ●删除局部公共表达式(local common expression)。

  (3) -o2

  ●完成所有-ol的优化操作;

  ●完成循环优化;

  ●删除全局公共子表达式(global common expression);

  ●删除全局未使用的赋值语句;

  ●如果使用o优化但不标注优化的级别,则系统默认为-o2优化。

  (4)-o3

  ●完成所有-o2的优化操作;

  ●删除未使用的函数;

  ●当函数的返回值没有用到时,简化函数的返回形式;

  ●内联小的函数;

  ●记录函数声明以便当优化调用时知道调用函数的属性;

  ●当所有调用都传递一个相同的参数时,把这个参数直接放在函数体中,不通过寄存器/存储器的方式传递这个参数;

  ●识别文件级变量特性。

  上述各级别的优化都是通过优化器来实现的,此外代码生成器也要运行其他优化,尤其是和处理器相关的优化。而代码生成器的优化操作总会被运行,与是否运行优化器没有关系。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



相关IC型号

热门点击

 

推荐技术资料

声道前级设计特点
    与通常的Hi-Fi前级不同,EP9307-CRZ这台分... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!