Sign in



Don't have an account?

Signing up is free and easy
Home -> Our Services -> Programming Tools BU -> C Compilers

C Compilers

We provide the following services related to compiler:

  • Development of optimizing "C / C++" compiler

    We have developed compilers for 8-bit RISC micro-controller, 16-bit RISC micro-controller, 32-bit MIPS processor with 16 & 32 bit modes and 16-bit fixed point DSP. We posses the skills required to develop compilers for complex processor architectures. The compilers we develop are tailor-made to customer requirements. We support a variety of command-line options, support architecture specific functionalities like pragmas and interrupts, mixed language programming (assembly with C/C++), listing files as required, intermediate language listing, standard and architecture specific optimizations.

    We have a streamlined development process which helps to identify defects in early stages of development. Our development process and emphasis on documentation ensures that the code is easy to maintain. We have a vast and effective test base apart from the standard test suites (like Perenial & Plum hall) which ensures quality validation of the compilers. We also use QA tools like Numega Dev Partner Studio & QAC.

  • Porting compilers to another architecture / platform

    We can port compilers for one architecture to architecture. Such requirements usually involve adding additional targets to the compiler. Our compiler development expertise helps us understand the existing implementation and port the compilers.

    We can also port compilers developed for one platform to another platform. (e.g.) We can port a compiler developed for Windows to Linux. Since we had done porting of the compilers we had developed, we understand how to identify non-portable fragments of code that could result is difference in behavior across different platforms.

  • Upgrade / Maintenance of compilers

    We provide services on upgrade or maintenance of compilers. Maintaining legacy code is quite a challenging task and we have pick up these skills through the compiler projects we had done. Typical compiler upgrade / maintenance work we take up includes the following:

    1. Implementation of additional features
    2. Implementation of new optimizations (code size reduction)
    3. Defect identification & rectification
    4. Source code refinement
  • Validation of compilers

    We understand the finer details of compiler validation through the compiler projects we had done. We have a proprietary compiler regression system, which runs the compiler tests simultaneously on multiple machines. Our test base includes the following tests:

    1. acmet generated test programs - This includes
      1. Test programs to test each feature / optimization
      2. Test programs developed to validate fix to defects
      3. Application programs developed at acmet
    2. Standard test suites
      1. Perennial
      2. Plum hall
    3. GCC test vectors

    The typical validation tasks we take up include the following:

    1. Identifying defects in compiler & defect reporting. Both black box and white box tests
    2. Test case generation
    3. Evaluation of optimizations
    4. Analysis of assembly generate by compilers to identify code improvements / to identify defects
    5. Our in-depth understanding of compiler internals makes our compiler validation more effective
  • Benchmarking of compilers

    We can perform benchmarking of compilers against the specified performance goal. Typical approaches for benchmarking compilers are:

    • Comparing the code generated by compiler under evaluation against the code generated by a reference(benchmark) compiler.
    • Analyzing the code generated by compiler under evaluation for a set of benchmark programs.
    • Analyzing the execution speed of code generated by compiler under evaluation for a set of benchmark programs using profiling.
  • Development / optimization of emulation libraries

    We can develop emulation libraries for float / double / long for compilers in case the architecture does not support these data types. Emulation libraries have stringent code size, execution performance and precision requirements. We had developed emulation libraries for different architectures. We understand floating point formats, optimal method of implementing floating point operations and testing of emulation libraries. We have effective test base to test emulation libraries.

  • Evaluation of libraries for code size and performance

    We can take up evaluation of libraries for code size and performance. Such an evaluation is usually done before a library is deployed as a part of a compiler package. Since the performance of libraries directly affect the performance of target applications, it is important for libraries to be optimal. We can perform evaluation of library functions with different range of inputs to identify performance bottlenecks.

We can also take up other specific requirements related to compilers.

Related Topics:

Compiler related projects we had done so far are the following:

1 Development of 'C' compiler for 32-bit MCU
2 Development of 'EC++' compiler for 32-bit MCU
3 Development of 'DSP C' compiler 16-bit fixed point DSP
4 Maintenance of 'C' compiler for 8-bit MCU
5 Validation of a compiler for 32-bit MCU
6 Development of emulation libraries
7 Evaluation of standard libraries