MAN page from Mandrake 10.X dev86-0.16.3-2mdk.i586.rpm
Section: User Commands (1)
Updated: Nov, 1997Index
bcc - Bruce's C compiler
is a simple C compiler that produces 8086 assembler, in addition compilercompile time options allow 80386 or 6809 versions. The compiler understandstraditional K&R C with just the restriction that bit fields are mapped toone of the other integer types.
The default operation is to produce an 8086 executable calleda.outfrom the source file.
- Pass the C source throughunprotoizeafter preprocessing and before code generation. This will allowsomeansi C to be compiled but it is definitlyNOTa true ansi-C compiler.
- 8086 target (works on 80386 host, but not 6809)
- 80386 target (may work on 8086 host, but not 6809)
- pass remainder of option to assembler (e.g. -A-l -Alistfile for a listing)
- prefix for executable search path (as usual; the search order is all pathsspecified using-B,in order, then the path given in the environment variableBCC_EXEC_PREFIXif that is set, then the compiled-in defaults(something like /usr/lib/bcc/ followed by /usr/bin/)
- pass remainder of option to bcc-cc1, see code generation options.
- preprocessor define
- produce preprocessor output to standard out.
- produce GCC objects (only useful for i386 code)
- include search 'xyz' path
- don't add default include to search list
- add directory name 'xyz' to the head of the list of library directories searched
- don't add default library to search list
- alters the arguments for all passes to produce MSDOS executable COM files.These are small model executables, use-ito get tiny model.
- sets bcc to pass the-cand-farguments to the code generator for smaller faster code. Note this code isnot compatible with the standard calling conventions so a different versionof the C library is linked too.
- sets bcc to pass the-cargument to the code generator for smaller faster code. Note the standardlibc is normally transparent to this, but there are exceptions.
- alters the arguments for all passes and selects C-libraryto produce standalone Linux-86 executables
- switches to i386-Linux code generator and library.This configuration accepts the-zflag to generate QMAGIC a.out files instead of the normal OMAGIC.
- makes the linker produce a native a.out file (Linux OMAGIC) if combinedwith -3 the executable will run under Linux-i386.
- optimize, callcopt(1)to optimize 8086 code. Specifiers to choose which rules coptshould use can be appended to the-Oand the option can be repeated.
- produce preprocessor output with no line numbers to standard output.
- pass full option to c386 (Only for c386 version)
- produce assembler file
- temporary directory (overrides previous value and default; default isfrom the environment variable TMPDIR if that is set, otherwise /tmp)
- preprocessor undefine
- print names of files being compiled
- pass remainder of option to linker (e.g. -X-Ofile is passed to the linkeras -Ofile)
- produce object file
- run the preprocess pass separately. This takes less memory, and may helpor harm by giving more traditional semantics like token pasting with /**/.
- error (float emulation not supported)
- produce debugging info (does nothing)
- output file name follows (assembler, object or executable) (as usual)
- error (profiling not supported)
- pass to the assembler to renumber the text segment for multi-segment programs.
- print names and args of subprocesses being run. Two or more -v's printnames of files being unlinked. Three or more -v's print names of pathsbeing searched.
- Supress any warning diagnostics.
- Turnonassembler warning messages.
- don't include crt0.o in the link.
- don't pass-ito the linker so that it will create an impure executable.Other options are passed to the linker, in particular -lx, -M, -m, -s, -H.
CODE GENERATOR OPTIONS
These are all options that the code generator passbcc-cc1
understands, only some will be useful for the-C
option of bcc. The code generator is normally used as a combined C preprocessorand generator but the-e
options of bcc split the operation.
- 8086 target (works even on 80386 host, not on 6809)
- 80386 target (may work even on 8086 host, not on 6809)
- define (as usual)
- produce preprocessor output (as usual)
- include search path (as usual)
- produce preprocessor output with no line numbers (as usual)
- produce code with caller saving regs before function calls
- print debugging information in assembly output
- produce code with 1st argument passed in a register (AX, EAX or X)
- produce code for 2 3 1 0 long byte order (only works in 16-bit code),a special library of compiler helper functions is needed for this mode.
- assembler output file name follows
- produce (almost) position-independent code (only for the 6809)
- print source code in assembly output
- print what cc1 thinks is the location counter in assembly outputAll the options except -D, -I and -o may be turned off by following theoption letter by a '-'. Options are processed left to right so the lastsetting has precedence.
The preprocessor has a number of manifest constants.
- __BCC__ 1
- The compiler identifier, normally used to avoid compiler limitations.
- stringized name of current input file
- current line number
- __MSDOS__ 1
- compiler is configured for generating MSDOS executable COM files.
- __STANDALONE__ 1
- compiler is configured for generating standalone executables.
- __AS386_16__ 1
- compiler is generating 16 bit 8086 assembler and the#asmkeyword is available for including 8086 code.
- __AS386_32__ 1
- compiler is generating 32 bit 80386 assembler and the#asmkeyword is available for including 80386 code.
- __CALLER_SAVES__ 1
- compiler calling conventions are altered so the calling function must save theSIandDIregisters if they are in use (ESI and EDI on the 80386)
- __FIRST_ARG_IN_AX__ 1
- compiler calling conventions are altered so the calling function is passingthe first argument to the function in theAX(orEAX)register.
- __LONG_BIG_ENDIAN__ 1
- alters the word order of code generated by the 8086 compiler.These defines only occur in the 6809 version of the compiler.
- __AS09__ 1
- compiler is generating 6809 code
- __FIRST_ARG_IN_X__ 1
- the first argument to functions is passed in theXregister.
- __POS_INDEPENDENT__ 1
- the code generated is (almost) position independent.
- default directory to seach for compiler passes
- directory to place temporary files (default /tmp)
All the include, library and compiler components are stored under the/usr/bcc
directory under Linux-i386, this is laid out the same as a/usr
filesystem and if bcc is to be the primary compiler on a system it shouldbe moved there. The configuration for this is in thebcc.c
source file only, all other executables are independent of location.
The library installation also creates the file/usr/lib/liberror.txt,this path is hardcoded into the C library.
The bccexecutable itself,as86andld86are in /usr/bin.
The bcc.c compiler driver source is very untidy.
The linker, ld86, produces a broken a.out object file if given one input andthe-roption this is so it is compatible with pre-dev86 versions.
- CODE GENERATOR OPTIONS
- PREPROCESSOR DEFINES
- SEE ALSO
This document was created byman2html,using the manual pages.