x86 Native Embedded Software Solutions
Real-time operating systems
- INTEGRITY RTOS
For totally reliable and absolutely secure applications
Software development tools
- MULTI & AdaMULTI development
Quickly develop, debug, test, and optimize embedded and real-time applications
- Green Hills optimizing compilers
Generating the smallest and fastest code from C, C++, and Ada
x86 Windows native optimizing compilers
The Green Hills Optimizing Compiler for x86/Pentium utilizes a common code generator with architecture-specific optimizations. Each supported x86/Pentium model has its own particular pipeline and instruction set characteristics. These are accommodated in the code generator to produce code best suited for the target processor. The following x86/Pentium-specific features are supported:
- Processor - One option for each supported x86/Pentium model. This setting determines the instructions permitted, as well as the pipeline optimization strategy used.
- fprecise - Stores all floating point calculations in memory to ensure precise truncation. Fully compatible with the GNU convention for handling floating point comparisons, including comparisons that involve NANs.
- ffunctions - Enables the compiler to use the 387 hardware instructions for certain floating point functions instead of calling them in the library.
- Long Long Support - Fully supports 64-bit data types, constants, and expressions through the long long data type.
- Calling Convention Compatibility - Fully compatible with both Microsoft standard and C calling conventions.
- Hardware Coprocessor—In hardware floating-point (HFP) mode, the compiler uses floating-point registers to hold floating-point data and to perform floatingpoint operations.
- Floating-Point Built-Ins—Controls the use of floating-point intrinsics, such as FABS, FSQRT, and FSIN.
- Placement of Zero-Initialized Data—Controls the allocation of variables and arrays explicitly initialized to zero. Allocating such objects to an uninitialized section will generally reduce the size of the executable ROM image.
A comprehensive suite of error-checking libraries for C, C++, EC++, and Ada are included in the corresponding compiler distributions for each language. Some checks include reading, writing, or freeing unallocated memory; accessing an element beyond the bounds of a declared array; and NULL pointer dereferencing. Customization of error-checking libraries allows programmers to access this functionality through the MULTI IDE, or through a command line interface.
Compliance with Industry Standards
Green Hills C/C++ Compilers fully conform to ANSI/ISO industry standards, and include optional enforcement of MISRA C programming guidelines.
Common Tools for Native and Embedded Configurations
MULTI offers flexibility in native and embedded configurations using x86/Pentium processors while maintaining a common interface for project creation and debug. All of the advanced features of MULTI for native development seamlessly transfer to embedded development. This enables users to prototype embedded applications early in the development cycle when silicon is unavailable.
No time is wasted in learning a new development environment or rewriting code when switching between embedded and native configurations. The language front ends of the Green Hills compilers are the same for both native and embedded development, guaranteeing absolute language compatibility when you recompile programs developed on your host for your embedded target.