46
Section 2: Compiler
TI
-
89 / TI
-
92 Plus Sierra C Assembler Reference Manual
Not for Distribution
Beta Version February 2, 2001
r#
Specifies how automatic variables are selected for
placement into machine registers.
r0
specifies that no
variables are to be placed into registers.
r1
specifies that
only variables declared with the register storage-class
specifier are to be candidates for placement into registers.
r2
specifies that both variables declared register and
those not declared register will be register candidates
(default). The nonregister variables are selected as
register candidates based on how often they are used.
They are selected after the declared register candidates
until all have been assigned register candidate status or a
total of 32 (including those declared register) are selected.
r3
specifies the same action as
r2
, except that register
declarations are ignored. Variables that were declared
register may still be assigned to registers.
r4
prevents
floating-point automatic variables that have not been
declared register from being placed into floating-point
registers; otherwise, the behavior is the same as
described by
r2
. For more information, refer to section
2.15.1 Register
Allocation
.
s#
The
-Os#
flag determines how to push a prototyped
function argument onto the stack. A
short int
or
char
function prototype results in a two-byte push when
s2
(default) is specified and a four-byte push when
s4
is
specified. In the presence of a
float
or a
double
prototype, the argument is pushed as a
double
(10 bytes)
and will be pushed on as a
double
(10 bytes) when
s3
or
s5
is specified (
s2
or
s4
implied, respectively).
t# t0
disables tail recursion elimination (default).
t1
enables tail recursion elimination.
x# x0
specifies that duplicate common subexpressions are
not to be removed (default).
x1
specifies that references
to different copies of a common subexpression are to be
replaced by references to a single subexpression with
duplicate subexpressions removed.