📄 optsumry.gml
字号:
.ixm 'options' 'MF'
.ixm 'default memory model'
(32-bit only)
The "flat" memory model (code and data up to 4 gigabytes) is selected.
The various models supported by &cmpname are described in the chapters
entitled :HDREF refid='mdl86'. and :HDREF refid='mdl386'..
This is the default memory model option.
.*
.note MH
.ixm 'MH option'
.ixm 'options' 'MH'
(16-bit only)
The "huge" memory model (big code, huge data) is selected.
The various models supported by &cmpname are described in the chapters
entitled :HDREF refid='mdl86'. and :HDREF refid='mdl386'..
.*
.note ML
.ixm 'ML option'
.ixm 'options' 'ML'
.ixm 'default memory model'
The "large" memory model (big code, big data) is selected.
The various models supported by &cmpname are described in the chapters
entitled :HDREF refid='mdl86'. and :HDREF refid='mdl386'..
This is the default 16-bit memory model option.
.*
.note MM
.ixm 'MM option'
.ixm 'options' 'MM'
The "medium" memory model (big code, small data) is selected.
The various models supported by &cmpname are described in the chapters
entitled :HDREF refid='mdl86'. and :HDREF refid='mdl386'..
.*
.note MS
.ixm 'MS option'
.ixm 'options' 'MS'
(32-bit only)
The "small" memory model (small code, small data) is selected.
The various models supported by &cmpname are described in the chapters
entitled :HDREF refid='mdl86'. and :HDREF refid='mdl386'..
.*
.do end
.*
.if '&cmpclass' eq 'load-n-go' .do begin
.*
.note [NO]OBject
.ixm 'OBJECT option'
.ixm 'options' 'OBJECT'
:cmt. .ixm 'NOOBJECT option'
:cmt. .ixm 'options' 'NOOBJECT'
This option is used to control the creation of an object file by the
compiler.
When the "object" option is specified, the program is not placed into
execution and a file of type :FNAME.&obj:eFNAME. is created instead.
When the "noobject" option is specified, no object file is created and
the program in memory is executed (provided there were no source
errors).
The data following the DATA directive is ignored but the source input
stream is still terminated.
The default is "noobject".
.*
.do end
.el .do begin
.*
.note OB
.ixm 'OB option'
.ixm 'options' 'OB'
(32-bit only)
This option allows the use of the ESP register as a base register to
reference local variables and subprogram arguments in the generated
code.
This can reduce the size of the prologue/epilogue sequences generated
by the compiler thus improving overall performance.
Note that when this option is specified, the compiler will abort when
there is not enough memory to optimize the subprogram.
By default, the code generator uses more memory-efficient algorithms
when a low-on-memory condition is detected.
.*
.note OBP
.ixm 'OBP option'
.ixm 'options' 'OBP'
This option causes the code generator to try to order the blocks of
code emitted such that the "expected" execution path (as determined by
a set of simple heuristics) will be straight through, with other cases
being handled by jumps to separate blocks of code "out of line".
This will result in better cache utilization on the Pentium.
If the heuristics do not apply to your code, it could result in a
performance decrease.
.*
.note OC
.ixm 'OC option'
.ixm 'options' 'OC'
This option may be used to disable the optimization where a "CALL"
followed by a "RET" (return) is changed into a "JMP" (jump)
instruction.
This option is required if you wish to link an overlayed program using
the Microsoft DOS Overlay Linker.
The Microsoft DOS Overlay Linker will create overlay calls for a
"CALL" instruction only.
This option is not required when using the &lnkname..
This option is not assumed by default.
.*
.note OD
.ixm 'OD option'
.ixm 'options' 'OD'
Non-optimized code sequences are generated.
The resulting code will be much easier to debug when using &dbgname..
By default, &cmpname will select "od" if "d2" is specified.
.*
.note ODO
.ixm 'ODO option'
.ixm 'options' 'ODO'
Optimized DO-loop iteration code is generated.
Caution should be exercised with the use of this option since the case
of an iterating value overflowing is assumed to never occur.
The following example should not be compiled with this option since
the terminal value of
.id IX
wraps from a positive integer to a negative integer.
.exam begin
INTEGER*2 IX
DO IX=32766,32767
.
.
.
ENDDO
.exam end
.np
The values of
.id IX
are 32766, 32767, -32768, -32767, ... since
.id IX
is INTEGER*2 (a 16-bit signed value) and it never exceeds the terminal
value.
.*
.note OF
.ixm 'OF option'
.ixm 'options' 'OF'
This option selects the generation of traceable stack frames for those
functions that contain calls or require stack frame setup.
To use &company's "Dynamic Overlay Manager" (DOS only), you must
compile all modules using the "of" option.
For near functions, the following function prologue sequence is
generated.
.np
.us 16-bit:
.millust begin
push BP
mov BP,SP
.millust end
.np
.us 32-bit:
.millust begin
push EBP
mov EBP,ESP
.millust end
.pc
For far functions, the following function prologue sequence is
generated.
.np
.us 16-bit:
.millust begin
inc BP
push BP
mov BP,SP
.millust end
.np
.us 32-bit:
.millust begin
inc EBP
push EBP
mov EBP,ESP
.millust end
.pc
The BP/EBP value on the stack will be even or odd depending on the
code model.
For 16-bit DOS systems, the Dynamic Overlay Manager uses this
information to determine if the return address on the stack is a short
address (16-bit offset) or long address (32-bit segment:offset).
This option is not assumed by default.
.*
.note OH
.ixm 'OH option'
.ixm 'options' 'OH'
This option enables repeated optimizations (which can result in longer
compiles).
.*
.note OI
.ixm 'OI option'
.ixm 'options' 'OI'
This option causes code for statement functions to be generated in-line.
.*
.note OK
.ixm 'OK option'
.ixm 'options' 'OK'
This option enables flowing of register save (from prologue) down into
the subprogram's flow graph.
.*
.note OL
.ixm 'OL option'
.ixm 'options' 'OL'
Loop optimizations are performed.
This includes moving loop-invariant expressions outside the loops.
This option is not assumed by default.
.*
.note OL+
.ixm 'OL+ option'
.ixm 'options' 'OL+'
Loop optimizations are performed including loop unrolling.
This includes moving loop-invariant expressions outside the loops
and can cause loops to be turned into straight-line code.
This option is not assumed by default.
.*
.note OM
.ixm 'OM option'
.ixm 'options' 'OM'
Generate inline 80x87 code for math functions like sin, cos, tan, etc.
If this option is selected, it is the programmer's responsibility to
make sure that arguments to these functions are within the range
accepted by the
.id fsin, fcos,
etc. instructions since no run-time check is made.
.np
If the "ot" option is also specified, the
.id exp
function is generated inline as well.
This option is not assumed by default.
.*
.note ON
.ixm 'ON option'
.ixm 'options' 'ON'
This option allows the compiler to perform certain numerical calculations in
a more efficient manner.
Consider the following example.
.millust begin
Z1 = X1 / Y
Z2 = X2 / Y
.millust end
.np
If the "on" option is specified, the code generator will generate code that
is equivalent to the following.
.millust begin
T = 1 / Y
Z1 = X1 * T
Z2 = X2 * T
.millust end
.np
Since floating-point multiplication is more efficient that division,
the code generator decided to first compute the reciprocal of Y and
then multiply X1 and X2 by the reciprocal of Y.
.np
Note that this optimization may produce less slightly different
results since some, for certain values, precision is lost when
computing the reciprocal.
By using this option, you are indicating that you are willing to
accept the loss in precision for the gain in performance.
.*
.note OP
.ixm 'OP option'
.ixm 'options' 'OP'
By default, floating-point variables may be cached in 80x87
floating-point registers across statements when compiling with the
"fpi" or "fpi87" options.
Floating-point register temporaries use 64 bits of precision in the
mantissa whereas single and double-precision variables use fewer bits
of precision in the mantissa.
The use of this option will force the result to be stored in memory
after each FORTRAN statement is executed.
This will produce less accurate but more predictable floating-point
results.
The code produced will also be less efficient when the "op" option
is used.
.exam begin
XMAX = X + Y / Z
YMAX = XMAX + Q
.exam end
.np
When the "op" option is used in conjunction with the "fpi" or "fpi87"
option, the compiler's code generator will update
.id XMAX
before proceeding with the second statement.
In the second statement, the compiler will reload
.id XMAX
from memory rather than using the result of the previous statement.
The effect of the "op" option on the resulting code can be seen by the
increased code size statistic as well as through the use of the
&disname..
This option is not assumed by default.
.*
.note OR
.ixm 'OR option'
.ixm 'options' 'OR'
This option enables reordering of instructions (instruction
scheduling) to achieve better performance on pipelined architectures
such as the 486.
Selecting this option will make it slightly more difficult to debug
because the assembly language instructions generated for a source
statement may be intermixed with instructions generated for
surrounding statements.
This option is not assumed by default.
.*
.note OS
.ixm 'OS option'
.ixm 'options' 'OS'
Space is favoured over time when generating code (smaller code but
possibly slower execution).
By default, &cmpname selects a balance between "space" and "time".
.*
.note OT
.ixm 'OT option'
.ixm 'options' 'OT'
Time is favoured over space when generating code (faster execution but
possibly larger code).
By default, &cmpname selects a balance between "space" and "time".
.*
.note OX
.ixm 'OX option'
.ixm 'options' 'OX'
Specifying the "ox" option is equivalent to specifying the
"ob" (32-bit only), "obp", "odo", "oi", "ok", "ol", "om", "or", and
"ot" options.
.*
.do end
.*
.if '&cmpclass' eq 'load-n-go' .do begin
.*
.note Pages=<n>
.ixm 'PAGES=<n> option'
.ixm 'options' 'PAGES=<n>'
This option is used to control the maximum number of pages that will
be produced in the listing file once the program enters the execution
phase.
.us n
must be an unsigned integer constant.
If
.us n
is 0, no limit on the number of pages is imposed.
This is the default.
.*
.note PAGESIze=<n>
.ixm 'PAGESIZE=<n> option'
.ixm 'options' 'PAGESIZE=<n>'
This option is used to specify the number of lines per page that your
printer can produce.
In this way, a listing file can be printed with the appropriate form
feeds.
The default page size is 66.
.*
.do end
.*
.note PRint
.ixm 'PRINT option'
.ixm 'options' 'PRINT'
This option is used to direct the listing file to the printer (device
name "PRN") instead of the disk.
The "print" option will override any previously specified "type" or
"disk" option.
The default is to create a listing file on the disk.
.*
.note [NO]Quiet
.ixm 'QUIET option'
.ixm 'options' 'QUIET'
:cmt. .ixm 'NOQUIET option'
:cmt. .ixm 'options' 'NOQUIET'
The "quiet" option suppresses the banner and summary information
produced by the compiler.
Only diagnostic messages will be displayed.
The default option is "noquiet".
.*
.note [NO]Reference
.ixm 'REFERENCE option'
.ixm 'options' 'REFERENCE'
:cmt. .ixm 'NOREFERENCE option'
:cmt. .ixm 'options' 'NOREFERENCE'
When the "reference" option is specified, warning messages will be
issued for all unreferenced symbols.
In a source file, the option appears as a comment line and takes the
following form.
.millust begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -