<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This file documents the GNU Assembler "as".

Copyright (C) 1991-2015 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts.  A copy of the license is included in the
section entitled "GNU Free Documentation License".
 -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Using as: SCORE-Pseudo</title>

<meta name="description" content="Using as: SCORE-Pseudo">
<meta name="keywords" content="Using as: SCORE-Pseudo">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="AS-Index.html#AS-Index" rel="index" title="AS Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="SCORE_002dDependent.html#SCORE_002dDependent" rel="up" title="SCORE-Dependent">
<link href="SCORE_002dSyntax.html#SCORE_002dSyntax" rel="next" title="SCORE-Syntax">
<link href="SCORE_002dOpts.html#SCORE_002dOpts" rel="prev" title="SCORE-Opts">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="SCORE_002dPseudo"></a>
<div class="header">
<p>
Next: <a href="SCORE_002dSyntax.html#SCORE_002dSyntax" accesskey="n" rel="next">SCORE-Syntax</a>, Previous: <a href="SCORE_002dOpts.html#SCORE_002dOpts" accesskey="p" rel="prev">SCORE-Opts</a>, Up: <a href="SCORE_002dDependent.html#SCORE_002dDependent" accesskey="u" rel="up">SCORE-Dependent</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="AS-Index.html#AS-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="SCORE-Assembler-Directives"></a>
<h4 class="subsection">9.39.2 SCORE Assembler Directives</h4>

<a name="index-directives-for-SCORE"></a>
<a name="index-SCORE-directives"></a>
<p>A number of assembler directives are available for SCORE.  The
following table is far from complete.
</p>
<dl compact="compact">
<dt><code>.set nwarn</code></dt>
<dd><p>Let the assembler not to generate warnings if the source machine
language instructions happen data dependency.
</p>
</dd>
<dt><code>.set fixdd</code></dt>
<dd><p>Let the assembler to insert bubbles (32 bit nop instruction /
16 bit nop! Instruction) if the source machine language instructions
happen data dependency.
</p>
</dd>
<dt><code>.set nofixdd</code></dt>
<dd><p>Let the assembler to generate warnings if the source machine
language instructions happen data dependency. (Default)
</p>
</dd>
<dt><code>.set r1</code></dt>
<dd><p>Let the assembler not to generate warnings if the source program
uses r1. allow user to use r1
</p>
</dd>
<dt><code>set nor1</code></dt>
<dd><p>Let the assembler to generate warnings if the source program uses
r1. (Default)
</p>
</dd>
<dt><code>.sdata</code></dt>
<dd><p>Tell the assembler to add subsequent data into the sdata section
</p>
</dd>
<dt><code>.rdata</code></dt>
<dd><p>Tell the assembler to add subsequent data into the rdata section
</p>
</dd>
<dt><code>.frame &quot;frame-register&quot;, &quot;offset&quot;, &quot;return-pc-register&quot;</code></dt>
<dd><p>Describe a stack frame. &quot;frame-register&quot; is the frame register,
&quot;offset&quot; is the distance from the frame register to the virtual
frame pointer, &quot;return-pc-register&quot; is the return program register.
You must use &quot;.ent&quot; before &quot;.frame&quot; and only one &quot;.frame&quot; can be
used per &quot;.ent&quot;.
</p>
</dd>
<dt><code>.mask &quot;bitmask&quot;, &quot;frameoffset&quot;</code></dt>
<dd><p>Indicate which of the integer registers are saved in the current
function&rsquo;s stack frame, this is for the debugger to explain the
frame chain.
</p>
</dd>
<dt><code>.ent &quot;proc-name&quot;</code></dt>
<dd><p>Set the beginning of the procedure &quot;proc_name&quot;. Use this directive
when you want to generate information for the debugger.
</p>
</dd>
<dt><code>.end proc-name</code></dt>
<dd><p>Set the end of a procedure. Use this directive to generate information
for the debugger.
</p>
</dd>
<dt><code>.bss</code></dt>
<dd><p>Switch the destination of following statements into the bss section,
which is used for data that is uninitialized anywhere.
</p>
</dd>
</dl>

<hr>
<div class="header">
<p>
Next: <a href="SCORE_002dSyntax.html#SCORE_002dSyntax" accesskey="n" rel="next">SCORE-Syntax</a>, Previous: <a href="SCORE_002dOpts.html#SCORE_002dOpts" accesskey="p" rel="prev">SCORE-Opts</a>, Up: <a href="SCORE_002dDependent.html#SCORE_002dDependent" accesskey="u" rel="up">SCORE-Dependent</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="AS-Index.html#AS-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>
