trans386(1)

NAME
trans386 - Translator for 80386, 80486 and Pentium

SYNOPSIS
trans386 [ options ] input-file output-file

DESCRIPTION
The code production portion of the TDF compiler is under the control of a TDF translator, which translates a TDF capsule into an assembly source file. There are separate TDF translators for each target architecture. This manual page describes the installer for the 80x86 architecture.

The basic action of the TDF translator, trans386, is to translate a TDF capsule, input-file, into an assembly source file, output-file.

It is recommended that trans386 should not be invoked directly, but via the user interface tcc(1). The option -opt can be passed to trans386 by passing the option -Wt, -opt to tcc(1).

OPTIONS
The options denoted by a capital letter are common to the TDF installers for all the architectures. The options denoted by a lower case letter are specific to the 80x86. switch stands for either 0, to switch an option off, or 1, to switch it on. The default states described here may be different on other translators.

-Aswitch
    This option determines whether trans386 should inline calls to alloca. This is done by default.

-Bswitch
    This option determines whether trans386 should report floating point constants which exceed their range. This is always done by default. If this option is switched off such constants are replaced by infinity.

-Cswitch
    This option determines whether trans386 should apply the "constants out of loops" optimisation. This optimisation is performed by default.

-Dswitch
    This option determines whether trans386 should produce Position Independent Code (PIC). This is not done by default. This option is not supported on the SCO or FreeBSD platforms, and on the Linux platform it is supported only for ELF binary format.

-E  This option disables trans386's constant overflow checks.

-Fswitch
    This option determines whether trans386 should apply the "strength reduction" optimisation. This optimisation is performed by default.

-H  This option causes trans386 to output debugging information in its output file. This will only work if the input TDF capsule contains debugging information. On the SCO platform the format used by dbxtra and codeview is supported. On the SVR4.2 platform Dwarf 1 is supported, which is used by debug. On the Solaris, FreeBSD, and Linux platforms, stabs is supported. The GNU debugger gdb may be used on all platforms.

-Iswitch
    This option determines whether trans386 should apply the "inlining" optimisation. This optimisation is performed by default.

-Kstr
    Causes trans386 to optimise its code for a particular processor model, determined by str. The available values of str are 3 for the 80386, 4 for the 80486 and 5 for the Pentium (the default). So -K3 means optimise for the 80386 etc.

-Mswitch
    If this option is on, trans386 preserves division by a floating point number rather than replacing it by multiplication by the reciprocal of the number. While the latter produces faster code, it may lead to rounding errors. By default, division by constants is preserved.

-P  This option causes trans386 to output profiling information suitable for use with prof(1) or a similar tool (see individual manual pages for details). This option is currently not supported on the Solaris platform.

-Q  This option causes trans386 to quit before processing its input files. This is particularly useful in conjunction with -V.

-Rswitch
    This option determines whether trans386 should immediately round every floating point operation to its appropriate range. This produces slower code, but is necessary for strict IEEE conformance. The default is not to round after every operation.

-Uswitch
    This option determines whether trans386 should apply the "loop unrolling" optimisation. This optimisation is performed by default.

-V  This option causes trans386 to print its version number and the version of the TDF specification it supports.

-Wswitch
    This option determines whether trans386 should make string literals writable. At present the C producer does not make use of this facility, so strings are writable.

-X  This option disables all optimisations. All trans386's optimisations are believed to be valid, so that any error in optimisation is a genuine bug.

-Z  This option causes trans386 to print the version number of all the TDF capsules it decodes.

-a  Always use a frame pointer. The default is to avoid using a frame pointer whenever possible. The default results in better performance, but in special cases where the stack is to be processed it may be necessary to enforce the use of a frame pointer.

-h  Do not use the .bss segment, always put data into the .data segment even if it is zero. This should very rarely be needed. The default is to use the .bss segment.

-kswitch
    This option is applicable to Linux platforms only. If this option is on, trans386 will produce output for an ELF binary format assembler, otherwise a.out binary format is assumed. By default this option is on, as appropriate for later versions of Linux.

SEE ALSO
as(1),prof(1), tcc(1).