General Information

Current release

The currently released version of the optimizer is 2.0.24 - this may be verified by issuing the following command:
dco -about

Supported optimization targets

Current release of the optimizer capable of processing assembly files and generating assembly output for targets supporting

Supported execution targets

Currently the optimizer is provided as a 64-bit executable for a x86 Linux OS; the experimental version of the product for x86 64-bit Windows OS is also provided.

Intended targets of optimization

dco is designed to work with gcc C and Fortran compilers on Linux or port of the gcc C and Fortran compilers on Windows ( e.g. mingw-w64 ); these compilers generate an assembly output of the compiled code - the way it is achieved is by specifying -S option during compilation.
While in 64-bit mode on Linux, dco was verified to work with the clang compiler version 9.0.1 - in the current version of the dco we provide support for the clang as "experimental".
gcc versions 6 and later are recommended for use with the current version of dco.

Current release of the optimizer is capable to optimize only programs to be linked in the lower 2GB of the address space; this corresponds to gcc compiler options -mcmodel=small or -mcmodel=medium. Programs that don't satisfy this requirement ( e.g. compiled with the -mcmodel=large compiler option ) shall not be optimized by dco.

Documentation

dco's users manual can be found here.
See this on how to incorporate the optimizer with a compiler.

Technical Assistance

Contact us to get assistance with questions related to the installation or usage of dco.

Software Installation and Setup

The product is provided only for a x86 Linux OS and x86 64 bit Windows OS.
  1. Download the product dco.zip
  2. Uncompress the package with the following command:
    unzip dco.zip
    the files extracted are:
    dco
    dcoas
    dco.exe
    dcoas.exe
  3. Move the ( extracted ) files - dco and dcoas on Linux, dco.exe and dcoas.exe on Windows - into a location(s) accessible for execution - part of the PATH environment variable - e.g. /usr/local/bin on Linux. Ensure that they have permission to be executed.
Optimizer uses temporary files stored in the directory specified by the following environment variable ( in the order listed ):
TMPDIR
TMP
TEMP
If none of this environment variables is specified, the temporary files are stored in the directory from where the optimizer was invoked. Ensure that you have write/read access to the directory where the temporary files will be stored.

The version of the optimizer for the x86 64 bit Windows OS requires certain environment ( e.g. DLL's ) to be present. Installing mingw-w64 provides all what is necessary ( although there are other ways to satisfy these requirements ).

Unistalling the optimizer

To uninstall the product, remove installed files from the locations they were copied to.

Getting Started

Locating the documentation

The dco's users manual is installed here.
See this on how to incorporated the optimizer with a compiler.

You can read a summary of optimizers options from the command line by invoking the optimizer with the -h option:

dco -h

Using the optimizer

The following is an example on how to use the optimizer.

To generated the dco optimized object file source_file.o from a C language source file source_file.c, use the following commands:

gcc -S -O2 -fomit-frame-pointer -fno-dwarf2-cfi-asm -fno-asynchronous-unwind-tables \
 -ffast-math -march=x86-64 -m64 -mfpmath=sse -msse2 -msse3 \
 -fno-optimize-sibling-calls -freorder-blocks-algorithm=simple \
  source_file.c

dco -i source_file.s -o osource_file.s
gcc -c -o source_file.o osource_file.s
rm osource_file.s source_file.s

Disclaimer and Legal Information

We assume no responsibility or liability for any errors or inaccuracies that may appear in this document or any software that may be provided in association with this document.

WE ASSUME NO LIABILITY WHATSOEVER, AND DISCLAIM ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF OUR PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Our products are not intended for use in medical, life saving, life sustaining, critical control or safety systems, or in nuclear facility applications.

The software described in this document may contain software defects which may cause it to deviate from expected behaviour.

Copyright © 1992-2020, Dalsoft.