DSP C优化2
3.4理解编译器的反馈信息
在编译C代码时,编译器在产生的.asm文件里向程序员反馈了许多信息,理解这些信息,按它的提示修改C代码,对尽快优化代码很有好处。只要用-k令编译器保留.asm文件,就可读到这些信息。
对于C优化,重点就是循环,对于反馈信息,我们主要考察编译器对流水线的编排,编译器编译循环程序要经过3个阶段:
1、 考察这个循环能否使用软件流水;
2、 收集循环需要用到的资源及相关图信息;
3、 对循环做软件流水编排。
编译器反馈的信息绝大部分是上述3个阶段的信息,下面以编译器对例3-1的反馈信息为例作一些说明。
例3-1 求两个数组和
void main()
{
short x[100],y[100],sum[100]; //hfgfhfsdg
int i;
for (i = 0; i < 100; i++)
{
x[i] = y[i] = i;
}
for (i
= 0; i < 100; i++)
{
sum[i] = x[i] + y[i];
}
}
用-k -o3选项进行编译,得到如下反馈信息:
;* SOFTWARE PIPELINE INFORMATION
;*
;* Loop source line : 15
;* Loop
opening brace source line : 16
;* Loop
closing brace source line : 18
;* Loop
Unroll Multiple : 8x
;* Known Minimum Trip Count : 12
;* Known Maximum Trip Count : 12
相关文档:
int main(int argc,char *argv[])
argc(argument count):参数的个数;
argv(argument value):参数值
argv[0] :文件名
argv[1]:第一个参数,argv[2];第二个参数,以此类推。
编译C
1 单源程序到可执行程序
编译 & ......
#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。
#pragma 指令对每个编译器给出了一个方法,在保持与C 和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。
依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。
一、#pragma message
#pragma ......
一、什么是B/S结构和C/S结构。
第一、什么是C/S结构。
C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目 ......
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
double a,b,c;
double delta;
double x1,x2;
cout<<"Please input a,b,c:"<<endl;
cin>>a>>b>>c;
if(cin.fail())
{
cout<< ......
(转)C++中extern “C”含义深层探索
1.引言
C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象&rdquo ......