A world leader in embedded and mobile software.
Wind River Diab Compiler
Bookmark and Share
Home : Products : Wind River Workbench : Wind River Diab Compiler
Diab Compiler Toolchain Architecture | Click to enlarge

Diab Compiler: 25 Years of Innovation

Boost application performance, reduce memory footprint, and produce high-quality, standards-compliant object code for embedded systems with Wind River Diab Compiler.

Big Performance. Tiny Footprint.

Our unique optimization technology generates extremely fast, high-quality object code in the smallest possible footprint. More

The Latest Industry Standards

Wind River Diab Compiler conforms to the most recent ANSI/ISO C and C++ compiler standards, including C89, C99, and EC++. More

Reliable Quality

Mission-critical applications across the globe rely on Wind River Diab Compiler's 25 years of field and lab testing, as do hundreds of millions of successful deployed devices in certified applications for the automotive, aerospace, industrial, and medical industries. More

Meet Safety Requirements

We're pleased that Wind River Diab Compiler has been used in projects validated by TÜV NORD for automotive functional safety, and proud of the millions of successful deployed products in safety-critical markets such as industrial, medical, avionics, and automotive. More

Award-Winning Global Support

Wind River Diab Compiler is supported by an award-winning and Service Capability and Performance (SCP)-certified organization and Wind River's Online Support (OLS) website. Wind River has more than 150 support engineers in sites all over the globe offering support in your local language. More

 

Key Features

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.

 

 




History of the Wind River Diab Compiler

Wind River Diab Compiler has a rich history, resulting in the development of a stable and mature product for use in mission-critical products. Tomas Evensen created the compiler in the 1980s while at a Swedish computer and manufacturing firm, Dataindustrier AB. The product was then known as Diab Compiler and was quickly adopted for use in embedded devices. The Diab Compiler technology was acquired in 2000 by Wind River. Tomas Evensen is currently Wind River's Chief Technology Officer. The Diab product was renamed Wind River Diab Compiler and has been continuously maintained, improved, and enhanced. Today, Wind River Diab Compiler is renowned for its ability to generate highly optimized code that has a small memory footprint and runs extremely fast. Wind River Diab Compiler is an essential component for companies designing and building advanced mission-critical products.