这篇文章给大家介绍如何理解Wind River Diab,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
重要的编译器特性和扩展
■大量编译器控件和选项,使编译器操作和代码生成更加灵活
■大量针对嵌入式设备开发者的功能和扩展
■针对x86系列的每种处理器分别定制的优化和功能
■广泛的编译时检查,以检测可疑和不可移植的结构
■强大的分析能力,定位代码瓶颈。分析信息还可以自动用作对编译器的反馈,从而实现更积极的优化
■C++模板、异常和运行时类型信息
高性能优化
各种各样的优化,其中一些是Diab编译器独有的,可以产生更加快速紧凑的代码。特殊的优化包括出色的过程间寄存器分配、内联和可达性分析。优化分为三类:局部、函数级和程序级
■代码块内的局部优化
常量折叠 Constant folding
整除优化 Integer divide optimization
局部公共子表达式消元 Local common sub-expression elimination
局部强度折减 Local strength reduction
轻微转换 Minor transformations
窥孔优化 Peep-hole optimizations
Switch优化 Switch optimizations
■函数内的全局优化
自动递增/递减优化 Auto increment/decrement optimizations
自动寄存器分配 Automatic register allocation
复杂分支优化 Complex branch optimization
条件代码优化 Condition code optimization
常量传播 Constant propagation
死码消除 Dead code elimination
延迟分支优化 Delayed branches optimization
延迟寄存器保存 Delayed register saving
出入口代码消除 Entry/exit code removal
扩展优化 Extend optimization
全局公共子表达式消元 Global common sub-expression elimination
全局变量存储延迟 Global variable store delay
生存周期分析(着色) Lifetime analysis (coloring)
链接寄存器优化 Link register optimization
循环倒计时优化 Loop count-down optimization
循环不变量代码移动 Loop invariant code motion
循环静态变量优化 Loop statics optimization
循环强度缩小 Loop strength reduction
循环展开 Loop unrolling
内存读写优化 Memory read/write optimizations
重新排序代码调度 Reordering code scheduling
重启优化 Restart optimization
支链优化 Branch-chain optimization
空间优化 Space optimization
拆分优化 Split optimization
寄存器的结构体和位域成员 Structure and bit-field member to registers
尾递归 Tail recursion
尾部挑战优化 Tail jump optimization
未定义变量传播 Undefined variable propagation
未使用赋值删除 Unused assignment deletion
变量位置优化 Variable location optimization
变量传播 Variable propagation
■ 函数间全局优化
参数地址优化 Argument address optimization
函数内联 Function inlining
粘合函数优化 Glue function optimization
程序间优化 Interprocedural optimizations
文字合成优化 Literal synthesis optimization
局部数据区优化 Local data area optimization
分析反馈优化 Profiling feedback optimization
移植性
■编译器实现了ANSI C++标准(ISO/IEC FDIS 14882),包括异常、模板和运行时类型信息(RTTI)
■对于C模块,编译器完全符合ANSI X3.159-1989标准(即ANSI C),并带有与其它编译器兼容的扩展,以简化Legacy代码的移植
■标准C程序可以用严格的ANSI选项编译,该选项关闭扩展并将语言简化为标准核心。或者,可以根据需要使用扩展来逐步升级程序
■产生完全相同的二进制输出,与Host平台无关
关于如何理解Wind River Diab就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。