2019-07-20 19:29发布
特朗姆斯 发表于 2016-10-14 11:52 uV4自带优化功能 在Options里面选择C/C++,然后把Optimization的级别根据你的需求提高就行了。
czdspeed 发表于 2016-10-14 12:00 谢谢,我其实不是问这个系统自带O2,O3优化。这个是最基本的 ccs编译器也是这样,我知道O2 O3一般会开的 ...
特朗姆斯 发表于 2016-10-14 13:43 类似的用过编译器提供的#pragma pack(n)来设定变量以n字节对齐方式。 你后面列举的循环展开优化的功能 ...
最多设置5个标签!
在Options里面选择C/C++,然后把Optimization的级别根据你的需求提高就行了。
当然,如果你的代码写的不够严谨的话,提高优化级别会出现意想不到的结果
谢谢,我其实不是问这个系统自带O2,O3优化。这个是最基本的 ccs编译器也是这样,我知道O2 O3一般会开的比较慎重。我发帖子的意思是说有没有一些伪指令操作利于优化的。举个例子我写一段DSP代码:
“//进行转秩运算必须按照双子节对齐 且转秩的阶次必须是2的偶次方个
#pragma DATA_ALIGN(Ux1, 128)
void DSP_vec(const short * restrict x, int * restrict y,const int m,
int nr)
{
int i = 0;
_nassert(((int)x & 7) ==0);
_nassert(((int)y & 7) ==0);
_nassert(nr % 8 == 0);
#pragma MUST_ITERATE(2,4096,2);
#pragma UNROLL(16);
for(i=0;i<nr;i++)
{
*(y+i) += m * *(x+i);
}
}
”_nassert()
#pragma MUST_ITERATE(2,4096,2);
#pragma UNROLL(16);
这些都是dsp提供的伪指令告诉编译器 循环的范围和需要手动展开的次数和内存对齐之类。keil有没有类似的伪指令。
类似的用过编译器提供的#pragma pack(n)来设定变量以n字节对齐方式。
你后面列举的循环展开优化的功能在ARM上没有看到过,帮你呼叫一下原子哥
恩,谢谢了。这个优化确实要很花功夫,我用O3就碰过莫名其妙的问题,需要把变量加vu来防止优化。
一周热门 更多>