温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何理解Wind River Diab

发布时间:2021-11-23 14:25:58 来源:亿速云 阅读:291 作者:柒染 栏目:互联网科技

这篇文章给大家介绍如何理解Wind River Diab,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Wind River Diab编译器是一款不依赖于操作系统的工具套件,内含C/C++编译器(compiler)、汇编器(assembler)、链接器(linker)、指令集模拟器(instruction-set simulator)以及ANSI C和C++函数库(library)等。Wind River Diab编译器基于DIAB编译器技术设计,这种技术被普遍运用于各种要求极为严格、负责执行关键任务的应用上,在工业自动化、国防航空、汽车内部控制等相关系统中有着大量的应用实例。  

Diab编译器套件包含了高性能的C和C++工具,可以提供最先进的优化技术,可以快速创建更可靠的代码。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就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI