Wind River Diab Compiler
Diab Compiler: 25 Years of Innovation
Wind River Diab Compiler (C/C++)는 임베디드 RISC와 CISC 응용프로그램을 위한 우수표준 제품입니다.
본 컴파일러의 모듈 구조, 우수한 최적화 기술 그리고 검증된 신뢰성 등으로, 최소한의 코드 사이즈, 최대한의 프로그램 수행 그리고 최적화된 컴파일러 컨트롤이 요구되는 응용프로그램들을 위한 최고의 선택이 될 것입니다.
매우 빠르고 간결하며 고품질인 코드를 위한 우수한 최적화 기술
디자인의 극도한 제약 사항들을 완화 시키는 검증된 신뢰성과 탄력성
툴의 최대 연동성을 위한 표준 (ANSI 와 EABI)
Run-time error checker 와 visual profiler를 포함한 Run-Time Analysis 툴
다른 주소지정 모드들을 선택하기 위한 특별한 프로그램을 포함한 코드와 데이터 메모리 할당 및 완벽한 제어
기존 데이터 타입을 압축하기 위한 옵션들과 통합 시키기 위한 byte-swap 구조들
메모리 위치에 독립적인 코드(PIC) 와 데이터 (PID) 지원
포괄적인 문서화된 자료
다양한 디자인, 디버그, 개발 등의 환경에 검증된 성능
Value to our Customers
Experience in safety-critical projects: Diab Compiler is a key component of the Wind River VxWorks Cert Platform and countless successful deployments of safety-critical projects in industrial, medical, avionics, and automotive industries.
Certification bodies: Our relationships with certification bodies such as TUV, the FAA, and third parties including Validas and Verocel form a valuable ecosystem for environments that require safety certification such as DO-178B, IEC 61508, and ISO 26262.
Transparent defect reporting: All compilers have defects, but only Wind River shares them transparently. Our customers are made aware of possible threats to safety though Wind River pro-active alerts, so they can quickly investigate and jointly resolve issues together with Wind River before deployment.
Speed vs. size switches
For situations that call for trade-offs between execution speed and code density, Wind River Diab Compiler features numerous compiler switches to optimize for maximum speed, minimal size, or a balance of both.
Ability to mix C/C++ and assembly code
Mix C/C++ and assembly code using a number of methods. Use ASM Macros to inline sections of assembly code that can be invoked as a function. ASM Strings provide a simple way to embed assembly instructions. Wind River Diab Compiler includes a number of additional macros that improve compiler optimization.
Whole program optimization
Optimize calls between functions in different source files to improve execution efficiency by allowing function inlining across different modules.
Profile-driven, application-specific optimizations
These optimizations require two-staged compilation:
- Stage one: The code is instrumented and then executed on the target or in a simulation environment on a typical dataset. The instrumented code collects profile information, which is then fed back into the compiler for the second stage of the compilation.
- Stage two: The compiler uses the profile information to further improve optimizations such as loop-unrolling, inlining, basic block reorganization, register allocation, and branch prediction. Because a typical dataset is supplied during the first phase of the compilation, these optimizations will be highly tuned for the given application.
Easy interrupt handling
Wind River Diab Compiler's interrupt keywords and interrupt pragmas make it easy to handle interrupt processing for embedded systems. For instance, it provides the ability to design an interrupt vector table at C level without using any assembly language.
Multiple debugging options
Flexible controls for generating debuggable code provide control of trade-offs between the amount of debug information vs. the speed of debugging, and performance optimizations vs. the ease of debugging.
Position-independent code (PIC) and data (PID)
Generate code and data that can be loaded at any address. This is useful in devices that dynamically load/unload modules.
Volatile keyword, or all memory is volatile
Mark areas of code as volatile to prevent Wind River Diab Compiler from optimizing away data accesses. This feature is useful for accessing memory-mapped device I/O.
Control structure formats
Reduce footprint by packing structures and ensuring that all padding is removed. Create byte-swapped structures in which it swaps the byte order for data structures as they
are stored in memory, allowing the communication of information in a byte order different than the device's native byte order. This capability helps optimize performance when sharing data between big and little endian processors.
Extensive link command language for memory mapping
Every embedded device has a unique memory layout, with various types of memory available, such as fast RAM, flash, and shared memory. The link command language provides users fine-grain control to lay out code and data in memory in the optimal way.
Absolute addressing from C and assembler
Variables and functions can be assigned to specific memory addresses. This is useful for accessing memory-mapped device I/O and for setting up interrupt vectors.
Ability to generate PROMable code
Generate code that can be burned into ROM and can access memory that is moved into RAM at startup time.
Support for multiple object module formats
Diab Compiler supports ELF, COFF, IEEE-695, and S-Records and can generate object modules in multiple formats.
Link-time lint checker
The lint facility is a powerful tool for finding common C programming mistakes at compile time and at link time, including unused variables and functions, missing return statements, constants out of range, and function call mismatches. Link-time checking finds inconsistencies across modules, which is impossible to do at compile time.
Run-time error checker
The run-time error checker quickly identifies the root cause of software errors during program development. Detect memory leaks, stack overflows, improper use of pointers, and memory allocation errors. This powerful tool can save time and enhance code quality prior to integration and quality assurance (QA) activities.
Instruction set simulator
The instruction set simulator (ISS) is a simulator for executables and
a disassembler for object files and executables. The ISS accurately simulates the instructions of the target architecture, allowing developers to write and debug applications without the need for target hardware.
DIAB COMPILER FOR SAFETY-COMPLIANT CODE
In the automotive, avionics, and industrial markets, it is critical that software conforms to industry standards for functional safety. Diab Compiler has been a reliable code-generation tool for
avionic products certified for DO-178B and industrial products certified to IEC 61508, and is now
qualified for use in automotive applications certified to ISO 26262. It’s exhaustively tested, using
both industry-standard test suites and a library of in-house test cases to reduce the risk of vulnerability in your safety-critical software. Wind River maintains a unique policy to transparently
disclose Diab Compiler issues that might compromise the safety compliance of your project.
In these cases you’ll work closely with Wind River’s award-winning support team to proactively
resolve the issue before deploying your product.
Supported Processor Architectures
Supported Host Operating Systems
• Microsoft Windows XP Professional (Service Pack 2 or 3), x86-32
• Microsoft Windows Vista Business, x86-32
• Microsoft Windows 7, x86-32/64
• Red Hat Enterprise Linux Workstation 4,5,6 32/64-bit.
• Red Hat 9 - 17 32/64-bit.
• Novell SUSE Linux openSUSE 11,12 32/64-bit.
• Novell SUSE Linux Enterprise 11,12 32/64-bit.
• Ubuntu 8-12 32/64-bit.