@c Copyright (C) 2009-2016 Free Software Foundation, Inc.
@c This is part of the GAS manual.
@c For copying conditions, see the file as.texinfo.
@ifset GENERIC
@page
@node SCORE-Dependent
@chapter SCORE Dependent Features
@end ifset
@ifclear GENERIC
@node Machine Dependencies
@chapter SCORE Dependent Features
@end ifclear

@cindex SCORE processor
@menu
* SCORE-Opts::   	Assembler options
* SCORE-Pseudo::        SCORE Assembler Directives
* SCORE-Syntax::        Syntax
@end menu

@node SCORE-Opts
@section Options

@cindex options for SCORE
@cindex SCORE options
@cindex architectures, SCORE
@cindex SCORE architectures

The following table lists all available SCORE options.

@table @code
@item -G @var{num}
This option sets the largest size of an object that can be referenced
implicitly with the @code{gp} register. The default value is 8.

@item -EB
Assemble code for a big-endian cpu

@item -EL
Assemble code for a little-endian cpu

@item -FIXDD
Assemble code for fix data dependency

@item -NWARN
Assemble code for no warning message for fix data dependency

@item -SCORE5
Assemble code for target is SCORE5

@item -SCORE5U
Assemble code for target is SCORE5U

@item -SCORE7
Assemble code for target is SCORE7, this is default setting

@item -SCORE3
Assemble code for target is SCORE3

@item -march=score7
Assemble code for target is SCORE7, this is default setting

@item -march=score3
Assemble code for target is SCORE3

@item -USE_R1
Assemble code for no warning message when using temp register r1

@item -KPIC
Generate code for PIC.  This option tells the assembler to generate
score position-independent macro expansions.  It also tells the
assembler to mark the output file as PIC.

@item -O0
Assembler will not perform any optimizations

@item -V
Sunplus release version

@end table

@node SCORE-Pseudo
@section SCORE Assembler Directives

@cindex directives for SCORE
@cindex SCORE directives
A number of assembler directives are available for SCORE.  The
following table is far from complete.

@table @code
@item .set nwarn
Let the assembler not to generate warnings if the source machine
language instructions happen data dependency.

@item .set fixdd
Let the assembler to insert bubbles (32 bit nop instruction /
16 bit nop! Instruction) if the source machine language instructions
happen data dependency.

@item .set nofixdd
Let the assembler to generate warnings if the source machine
language instructions happen data dependency. (Default)

@item .set r1
Let the assembler not to generate warnings if the source program
uses r1. allow user to use r1

@item set nor1
Let the assembler to generate warnings if the source program uses
r1. (Default)

@item .sdata
Tell the assembler to add subsequent data into the sdata section

@item .rdata
Tell the assembler to add subsequent data into the rdata section

@item .frame "frame-register", "offset", "return-pc-register"
Describe a stack frame. "frame-register" is the frame register,
"offset" is the distance from the frame register to the virtual
frame pointer, "return-pc-register" is the return program register.
You must use ".ent" before ".frame" and only one ".frame" can be
used per ".ent".

@item .mask "bitmask", "frameoffset"
Indicate which of the integer registers are saved in the current
function's stack frame, this is for the debugger to explain the
frame chain.

@item .ent "proc-name"
Set the beginning of the procedure "proc_name". Use this directive
when you want to generate information for the debugger.

@item .end proc-name
Set the end of a procedure. Use this directive to generate information
for the debugger.

@item .bss
Switch the destination of following statements into the bss section,
which is used for data that is uninitialized anywhere.

@end table

@node SCORE-Syntax
@section SCORE Syntax
@menu
* SCORE-Chars::                Special Characters
@end menu

@node SCORE-Chars
@subsection Special Characters

@cindex line comment character, SCORE
@cindex SCORE line comment character
The presence of a @samp{#} appearing anywhere on a line indicates the
start of a comment that extends to the end of that line.

If a @samp{#} appears as the first character of a line then the whole
line is treated as a comment, but in this case the line can also be a
logical line number directive (@pxref{Comments}) or a preprocessor
control command (@pxref{Preprocessing}).

@cindex line separator, SCORE
@cindex statement separator, SCORE
@cindex SCORE line separator
The @samp{;} character can be used to separate statements on the same
line.
