📄 c68.txt
字号:
Default: -reg=yes
-separate=yes|no
Determine whether the compiler should allocate
strings and constants in the same segment as the
code, or in a separate data segment.
Default: -separate=no
-stackcheck=yes|no
Specify whether calls should be made to a
support routine to perform stack checks at the
start of each function. To use this option, it
is necessary to have implemented the appropriate
(system dependent) support routine.
Default: -stackcheck=no
-stackopt=safest|minimum|average|maximum
Used to control whether the 'lazy stack
updating' optimisation is to be used. The
meanings of the various values are:
safest Suppress this level of optimisation.
It is advisable to suppress lazy stack
optimisation on routines which are
recursive in nature. Failure to do so
may lead to excessive stack space
being required to successfully run
this program.
minimum A certain amount of optimisation is
done, but nothing that is considered
dangerous. This is the safest mode of
optimisation assuming you allow this
type of optimisation at all.
average Allow optimisation for functions whose
name starts with an underscore.
maximum Allow optimisation for functions whose
name starts with an underscore, or
which are called via a function
variable. This effectively optimises
all function calls.
See the section on optimisation later in this
document for more detail on the implications of
the various settings for this optimisation.
Default: -stackopt=minimum
-trace=yes|no
Control the generation of run-time trace
information. Intended in the future to help
support a source code debugger. However, at the
moment this capability is incomplete. This
option is only available if the compiler was
built with the TRACE configuration option set.
The compiler as normally supplied is not set to
have this option built in.
Default: -trace=no
-trans=yes|no
This option is used if you are working on a
system which can only support symbols names of
limited length. It allows you to make certain
all names in the assembler output are only 8
characters in length (a special algorithm is
used for names that are longer than this). This
is used if the assembler phase cannot handle
long C names. Support for this option is only
included if the TRANSLATE configuration option
was set when the compiler was built. As most
modern systems can support longer symbol names
we normally omit support for this option in
binaries that are put on general distribution.
Default: -trans=no
MOTOROLA 68K OPTIONS
The options listed in this section apply when generating
code for Motorola 68K family of processors. They will
only be available if support for the Motorola 68K
processors was specified at the time the compiler was
built.
-codemode=absolute|small|large
This option is used to tell the compiler what
addressing modes to use for jump instructions.
The meanings of the options are:
absolute Any generated jump instructions use
absolute addressing mode. Typically
this means that runtime relocation of
the generated program needs to be
done.
small Jump instructions will use relative
addressing modes assuming the 'small
model'. This means that all target of
jump instructions are within a 16-bit
displacement of the source. If you
set this and it turns out not to be
true you will almost certainly get
errors when you try and link your
code.
large Jump instructions will use relative
addressing modes assuming the 'large
model' This means that all targets of
jump instructions are within a 32-bit
displacement of the source (which will
always be true).
Note that although the small and large options
generate position independent code, the
resulting program will not be position
independent unless any supplied libraries you
intend to use have also been generated to use
this option, and any variables (that are not
auto variables) are accessed using position
relative addressing.
Default: -codemodel=absolute
-datamodel=absolute|small|large
This option is used to tell the compiler what
addressing modes to use for accessing program
variables. The meanings of the options are:
absolute Variables are accessed using absolute
mode. Typically this means that
runtime relocation of the generated
program needs to be done.
small Variables are accessed using 'small
model' addressing. This means 16-bit
displacements from the register
specified in the -regdata parameter.
If you set this and it turns out not
to be true you will almost certainly
get errors when you try and link your
code.
large Variables are accessed using 'large
model' addressing. This means 32-bit
displacements from the register
specified in the -regdata parameter.
Note that the code generated by the small and
large options requires the address of a specific
external label to be loaded into the register
specified by the -regdata parameter as all
addresses are generated as displacements from
this label. Typically this is done in the
program start-up module.
Only change this option from the default if your
library supplier tells you that you can, or you
are very sure you know what you are doing. Also
there is normally not much to be gained from
using this option unless any supplied libraries
you intend to use have also been generated to
use this option.
Default: -datamodel=absolute
-fpu=yes|no
Specify whether operations involving floating
point variables should generate in-line calls to
a hardware floating point unit, or whether calls
are made instead to library support routines.
Using library support routines allows floating
point operations to be carried out purely in
software.
Default: -fpu=no
-fpureturn=yes|no
This option is used to tell the compiler whether
the library routines are such that floating
point results are returned in the hardware FPU
registers, or in normal registers. Note you
should not normally change this value from the
default unless you have been specifically
advised to do so.
Default: -fpureturn=no
-interrupt=yes|no
This option is used to decide whether functions
should be terminated with a RTS or a RTE
instruction. You would want a RTS in normal
code, and a RTE in an interrupt handler.
The way that you would most likely use this
option is by by using it with an inline #pragma
statement rather than as a command line option.
In otherwords along the lines of:
#pragma interrupt=yes
void special_func()
{
.... code for function
}
#pragma interrupt=no
This would have the effect of only the single
function specified having a RTE instruction to
terminate it with all others having an RTS as
the return instruction.
Default: -interrupt=no
-peep=none|peepopt_list|all
Control the level of peephole optimisation that
should be done. Past experience has shown that
some of the more obscure bugs reported on the
compiler are those where the peephole optimiser
part of the compiler has made an invalid
optimisation. You would therefore use this
option if you suspect that the compiler has
generated incorrect code, and you want to look
at what would be generated if some or all of the
the peephole optimisation was not done.
The meanings of the options are:
none All peephole optimisations are
suppressed.
all All peephole optimisations are
performed.
You can also exercise a finer level of control
by specifying the exact combination of peephole
optimisations that you want from the following
options:
instruction This controls whether instruction
sequences should be replaced by more
effecient combinations.
jumps This controls whether jump
optimisation should be used which
tries to common up re-occurring bits
of code. This normally produces
significant size savings in the
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -