gcc各等级优化的性质】的更多相关文章

查查gcc手册就知道了,每个编译选项都控制着不同的优化选项 下面从网络上copy过来的,真要用到这些还是推荐查阅手册 -O设置一共有五种:-O0.-O1.-O2.-O3和-Os. 除了-O0以外,每一个-O设置都会多启用几个选项,请查阅gcc手册的优化选项章节,以便了解每个-O等级启用了哪些选项及它们有何作用. 让我们来逐一考察各个优化等级: -O0:这个等级(字母"O"后面跟个零)关闭所有优化选项,也是CFLAGS或CXXFLAGS中没有设置-O等级时的默认等级.这样就不会优化代码,…
gdb跟踪剖发现free_area_init中一段优化错了,如下:    memset(mem_map, 0, start_mem - (unsigned long) mem_map);    do {        __asm__ __volatile__("":::"memory"); //gcc请不要优化        --p;        p->flags = (1 << PG_DMA) | (1 << PG_reserved…
GCC提供了大量的警告选项,对代码中可能存在的问题提出警告,通常可以使用-Wall来开启以下警告: -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration -Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding) -Wmissing…
restrict是C99标准中新添加的关键字,对于从C89标准开始起步学习C语言的同学来说(包括我),第一次看到restrict还是相当陌生的.Wikipedia给出的解释如下: In the C programming language, as of the C99 standard, restrict is a keyword that can be used in pointer declarations. The restrict keyword is a declaration of…
restrict是C99标准中新添加的关键字,对于从C89标准开始起步学习C语言的同学来说(包括我),第一次看到restrict还是相当陌生的.Wikipedia给出的解释如下: In the C programming language, as of the C99 standard, restrict is a keyword that can be used in pointer declarations. The restrict keyword is a declaration of…
#define likely(x) __builtin_expect(!!(x),1)#define unlikely(x) __builtin_expect(!!(x),0) 用于优化在做分支判断的时候CPU流水线问题 likely()用于分支判断的时候很有可能执行的指令,而unlikely()则相反…
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; ms…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下设置代码编译优化等级的几种方法. 最近公司芯片设计团队正在开发一款全新的基于 Cortex-M33 内核的芯片,为了保证芯片性能达标,验证团队将 coremark 基准测试程序也当作了一个测试用例,而在 RTL 环境里指定的 C 编译器是标准 GCC,验证团队发现跑出来的 coremark 程序测试结果与 Arm 给的 Cortex-M33 参考值 4.02 CoreMark/MHz 有一定差距,痞子衡…
原文地址http://blog.csdn.net/abc78400123/article/details/6779108 在用gdb调试,使用s 或n单步执行程序时,发现程序不是按顺序运行的,有时莫名其妙的执行到前面的语句去了,有时又执行到后面的语句,有时一次执行几条语句.后来查了下资料.原来这是编译时的优化问题所导致的. 因为内核的编译是使用make命令的,所以要更改优化等级的话,只能修改makefile文件了. 在makefile中,找到CFLAGS   然后在这加上-O0选项即可. 当然这…
<Linux GCC常用命令> Makefile有三个非常有用的变量.分别是$@,$^,$<代表的意义分别是: $@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件.  同时使用动态/静态库 GCC默认的链接库形式是动态的:如果要采用静态连接需要添加static参数,但是会导致整个GCC连接都是用静态连接方式. 这是可以使用-Wl,-Bstatic XXX -Wl,-Bdynamic XXX来指定需要静态连接和动态链接的库. 比如:-Wl,-Bstatic -lsqli…