39937 lines
2.2 MiB
39937 lines
2.2 MiB
<!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-2022 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.1, http://www.gnu.org/software/texinfo/ -->
|
|
<head>
|
|
<title>Using as</title>
|
|
|
|
<meta name="description" content="Using as">
|
|
<meta name="keywords" content="Using as">
|
|
<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="#Top" rel="start" title="Top">
|
|
<link href="#AS-Index" rel="index" title="AS Index">
|
|
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
|
<link href="dir.html#Top" rel="up" title="(dir)">
|
|
<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">
|
|
<h1 class="settitle" align="center">Using as</h1>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a name="SEC_Contents"></a>
|
|
<h2 class="contents-heading">Table of Contents</h2>
|
|
|
|
<div class="contents">
|
|
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Overview-1" href="#Overview">1 Overview</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Structure-of-this-Manual" href="#Manual">1.1 Structure of this Manual</a></li>
|
|
<li><a name="toc-The-GNU-Assembler" href="#GNU-Assembler">1.2 The GNU Assembler</a></li>
|
|
<li><a name="toc-Object-File-Formats" href="#Object-Formats">1.3 Object File Formats</a></li>
|
|
<li><a name="toc-Command-Line-1" href="#Command-Line">1.4 Command Line</a></li>
|
|
<li><a name="toc-Input-Files-1" href="#Input-Files">1.5 Input Files</a></li>
|
|
<li><a name="toc-Output-_0028Object_0029-File" href="#Object">1.6 Output (Object) File</a></li>
|
|
<li><a name="toc-Error-and-Warning-Messages" href="#Errors">1.7 Error and Warning Messages</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Command_002dLine-Options" href="#Invoking">2 Command-Line Options</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Enable-Listings_003a-_002da_005bcdghlns_005d" href="#a">2.1 Enable Listings: <samp>-a[cdghlns]</samp></a></li>
|
|
<li><a name="toc-_002d_002dalternate" href="#alternate">2.2 <samp>--alternate</samp></a></li>
|
|
<li><a name="toc-_002dD" href="#D">2.3 <samp>-D</samp></a></li>
|
|
<li><a name="toc-Work-Faster_003a-_002df" href="#f">2.4 Work Faster: <samp>-f</samp></a></li>
|
|
<li><a name="toc-_002einclude-Search-Path_003a-_002dI-path" href="#I">2.5 <code>.include</code> Search Path: <samp>-I</samp> <var>path</var></a></li>
|
|
<li><a name="toc-Difference-Tables_003a-_002dK" href="#K">2.6 Difference Tables: <samp>-K</samp></a></li>
|
|
<li><a name="toc-Include-Local-Symbols_003a-_002dL" href="#L">2.7 Include Local Symbols: <samp>-L</samp></a></li>
|
|
<li><a name="toc-Configuring-listing-output_003a-_002d_002dlisting" href="#listing">2.8 Configuring listing output: <samp>--listing</samp></a></li>
|
|
<li><a name="toc-Assemble-in-MRI-Compatibility-Mode_003a-_002dM" href="#M">2.9 Assemble in MRI Compatibility Mode: <samp>-M</samp></a></li>
|
|
<li><a name="toc-Dependency-Tracking_003a-_002d_002dMD" href="#MD">2.10 Dependency Tracking: <samp>--MD</samp></a></li>
|
|
<li><a name="toc-Output-Section-Padding" href="#no_002dpad_002dsections">2.11 Output Section Padding</a></li>
|
|
<li><a name="toc-Name-the-Object-File_003a-_002do" href="#o">2.12 Name the Object File: <samp>-o</samp></a></li>
|
|
<li><a name="toc-Join-Data-and-Text-Sections_003a-_002dR" href="#R">2.13 Join Data and Text Sections: <samp>-R</samp></a></li>
|
|
<li><a name="toc-Display-Assembly-Statistics_003a-_002d_002dstatistics" href="#statistics">2.14 Display Assembly Statistics: <samp>--statistics</samp></a></li>
|
|
<li><a name="toc-Compatible-Output_003a-_002d_002dtraditional_002dformat" href="#traditional_002dformat">2.15 Compatible Output: <samp>--traditional-format</samp></a></li>
|
|
<li><a name="toc-Announce-Version_003a-_002dv" href="#v">2.16 Announce Version: <samp>-v</samp></a></li>
|
|
<li><a name="toc-Control-Warnings_003a-_002dW_002c-_002d_002dwarn_002c-_002d_002dno_002dwarn_002c-_002d_002dfatal_002dwarnings" href="#W">2.17 Control Warnings: <samp>-W</samp>, <samp>--warn</samp>, <samp>--no-warn</samp>, <samp>--fatal-warnings</samp></a></li>
|
|
<li><a name="toc-Generate-Object-File-in-Spite-of-Errors_003a-_002dZ" href="#Z">2.18 Generate Object File in Spite of Errors: <samp>-Z</samp></a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Syntax-1" href="#Syntax">3 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Preprocessing-1" href="#Preprocessing">3.1 Preprocessing</a></li>
|
|
<li><a name="toc-Whitespace-1" href="#Whitespace">3.2 Whitespace</a></li>
|
|
<li><a name="toc-Comments-1" href="#Comments">3.3 Comments</a></li>
|
|
<li><a name="toc-Symbols-1" href="#Symbol-Intro">3.4 Symbols</a></li>
|
|
<li><a name="toc-Statements-1" href="#Statements">3.5 Statements</a></li>
|
|
<li><a name="toc-Constants-1" href="#Constants">3.6 Constants</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Character-Constants" href="#Characters">3.6.1 Character Constants</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Strings-1" href="#Strings">3.6.1.1 Strings</a></li>
|
|
<li><a name="toc-Characters-1" href="#Chars">3.6.1.2 Characters</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Number-Constants" href="#Numbers">3.6.2 Number Constants</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Integers-1" href="#Integers">3.6.2.1 Integers</a></li>
|
|
<li><a name="toc-Bignums-1" href="#Bignums">3.6.2.2 Bignums</a></li>
|
|
<li><a name="toc-Flonums-1" href="#Flonums">3.6.2.3 Flonums</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-Sections-and-Relocation" href="#Sections">4 Sections and Relocation</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Background" href="#Secs-Background">4.1 Background</a></li>
|
|
<li><a name="toc-Linker-Sections" href="#Ld-Sections">4.2 Linker Sections</a></li>
|
|
<li><a name="toc-Assembler-Internal-Sections" href="#As-Sections">4.3 Assembler Internal Sections</a></li>
|
|
<li><a name="toc-Sub_002dSections-1" href="#Sub_002dSections">4.4 Sub-Sections</a></li>
|
|
<li><a name="toc-bss-Section" href="#bss">4.5 bss Section</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Symbols-2" href="#Symbols">5 Symbols</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Labels-1" href="#Labels">5.1 Labels</a></li>
|
|
<li><a name="toc-Giving-Symbols-Other-Values" href="#Setting-Symbols">5.2 Giving Symbols Other Values</a></li>
|
|
<li><a name="toc-Symbol-Names-1" href="#Symbol-Names">5.3 Symbol Names</a></li>
|
|
<li><a name="toc-The-Special-Dot-Symbol" href="#Dot">5.4 The Special Dot Symbol</a></li>
|
|
<li><a name="toc-Symbol-Attributes-1" href="#Symbol-Attributes">5.5 Symbol Attributes</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Value" href="#Symbol-Value">5.5.1 Value</a></li>
|
|
<li><a name="toc-Type-1" href="#Symbol-Type">5.5.2 Type</a></li>
|
|
<li><a name="toc-Symbol-Attributes_003a-a_002eout" href="#a_002eout-Symbols">5.5.3 Symbol Attributes: <code>a.out</code></a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Descriptor" href="#Symbol-Desc">5.5.3.1 Descriptor</a></li>
|
|
<li><a name="toc-Other" href="#Symbol-Other">5.5.3.2 Other</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Symbol-Attributes-for-COFF" href="#COFF-Symbols">5.5.4 Symbol Attributes for COFF</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Primary-Attributes" href="#Primary-Attributes">5.5.4.1 Primary Attributes</a></li>
|
|
<li><a name="toc-Auxiliary-Attributes" href="#Auxiliary-Attributes">5.5.4.2 Auxiliary Attributes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Symbol-Attributes-for-SOM" href="#SOM-Symbols">5.5.5 Symbol Attributes for SOM</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-Expressions-1" href="#Expressions">6 Expressions</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Empty-Expressions" href="#Empty-Exprs">6.1 Empty Expressions</a></li>
|
|
<li><a name="toc-Integer-Expressions" href="#Integer-Exprs">6.2 Integer Expressions</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Arguments-1" href="#Arguments">6.2.1 Arguments</a></li>
|
|
<li><a name="toc-Operators-1" href="#Operators">6.2.2 Operators</a></li>
|
|
<li><a name="toc-Prefix-Operator" href="#Prefix-Ops">6.2.3 Prefix Operator</a></li>
|
|
<li><a name="toc-Infix-Operators" href="#Infix-Ops">6.2.4 Infix Operators</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-Assembler-Directives" href="#Pseudo-Ops">7 Assembler Directives</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-_002eabort" href="#Abort">7.1 <code>.abort</code></a></li>
|
|
<li><a name="toc-_002eABORT-_0028COFF_0029" href="#ABORT-_0028COFF_0029">7.2 <code>.ABORT</code> (COFF)</a></li>
|
|
<li><a name="toc-_002ealign-_005babs_002dexpr_005b_002c-abs_002dexpr_005b_002c-abs_002dexpr_005d_005d_005d" href="#Align">7.3 <code>.align [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code></a></li>
|
|
<li><a name="toc-_002ealtmacro" href="#Altmacro">7.4 <code>.altmacro</code></a></li>
|
|
<li><a name="toc-_002eascii-_0022string_0022_2026" href="#Ascii">7.5 <code>.ascii "<var>string</var>"</code>…</a></li>
|
|
<li><a name="toc-_002easciz-_0022string_0022_2026" href="#Asciz">7.6 <code>.asciz "<var>string</var>"</code>…</a></li>
|
|
<li><a name="toc-_002eattach_005fto_005fgroup-name" href="#Attach_005fto_005fgroup">7.7 <code>.attach_to_group <var>name</var></code></a></li>
|
|
<li><a name="toc-_002ebalign_005bwl_005d-_005babs_002dexpr_005b_002c-abs_002dexpr_005b_002c-abs_002dexpr_005d_005d_005d" href="#Balign">7.8 <code>.balign[wl] [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code></a></li>
|
|
<li><a name="toc-_002ebss-subsection" href="#Bss">7.9 <code>.bss <var>subsection</var></code></a></li>
|
|
<li><a name="toc-Bundle-directives-1" href="#Bundle-directives">7.10 Bundle directives</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-_002ebundle_005falign_005fmode-abs_002dexpr" href="#g_t_002ebundle_005falign_005fmode-abs_002dexpr">7.10.1 <code>.bundle_align_mode <var>abs-expr</var></code></a></li>
|
|
<li><a name="toc-_002ebundle_005flock-and-_002ebundle_005funlock" href="#g_t_002ebundle_005flock-and-_002ebundle_005funlock">7.10.2 <code>.bundle_lock</code> and <code>.bundle_unlock</code></a></li>
|
|
</ul></li>
|
|
<li><a name="toc-_002ebyte-expressions" href="#Byte">7.11 <code>.byte <var>expressions</var></code></a></li>
|
|
<li><a name="toc-CFI-directives-1" href="#CFI-directives">7.12 CFI directives</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-_002ecfi_005fsections-section_005flist" href="#g_t_002ecfi_005fsections-section_005flist">7.12.1 <code>.cfi_sections <var>section_list</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005fstartproc-_005bsimple_005d" href="#g_t_002ecfi_005fstartproc-_005bsimple_005d">7.12.2 <code>.cfi_startproc [simple]</code></a></li>
|
|
<li><a name="toc-_002ecfi_005fendproc" href="#g_t_002ecfi_005fendproc">7.12.3 <code>.cfi_endproc</code></a></li>
|
|
<li><a name="toc-_002ecfi_005fpersonality-encoding-_005b_002c-exp_005d" href="#g_t_002ecfi_005fpersonality-encoding-_005b_002c-exp_005d">7.12.4 <code>.cfi_personality <var>encoding</var> [, <var>exp</var>]</code></a></li>
|
|
<li><a name="toc-_002ecfi_005fpersonality_005fid-id" href="#g_t_002ecfi_005fpersonality_005fid-id">7.12.5 <code>.cfi_personality_id <var>id</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005ffde_005fdata-_005bopcode1-_005b_002c-_2026_005d_005d" href="#g_t_002ecfi_005ffde_005fdata-_005bopcode1-_005b_002c-_2026_005d_005d">7.12.6 <code>.cfi_fde_data [<var>opcode1</var> [, …]]</code></a></li>
|
|
<li><a name="toc-_002ecfi_005flsda-encoding-_005b_002c-exp_005d" href="#g_t_002ecfi_005flsda-encoding-_005b_002c-exp_005d">7.12.7 <code>.cfi_lsda <var>encoding</var> [, <var>exp</var>]</code></a></li>
|
|
<li><a name="toc-_002ecfi_005finline_005flsda-_005balign_005d" href="#g_t_002ecfi_005finline_005flsda-_005balign_005d">7.12.8 <code>.cfi_inline_lsda</code> [<var>align</var>]</a></li>
|
|
<li><a name="toc-_002ecfi_005fdef_005fcfa-register_002c-offset" href="#g_t_002ecfi_005fdef_005fcfa-register_002c-offset">7.12.9 <code>.cfi_def_cfa <var>register</var>, <var>offset</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005fdef_005fcfa_005fregister-register" href="#g_t_002ecfi_005fdef_005fcfa_005fregister-register">7.12.10 <code>.cfi_def_cfa_register <var>register</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005fdef_005fcfa_005foffset-offset" href="#g_t_002ecfi_005fdef_005fcfa_005foffset-offset">7.12.11 <code>.cfi_def_cfa_offset <var>offset</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005fadjust_005fcfa_005foffset-offset" href="#g_t_002ecfi_005fadjust_005fcfa_005foffset-offset">7.12.12 <code>.cfi_adjust_cfa_offset <var>offset</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005foffset-register_002c-offset" href="#g_t_002ecfi_005foffset-register_002c-offset">7.12.13 <code>.cfi_offset <var>register</var>, <var>offset</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005fval_005foffset-register_002c-offset" href="#g_t_002ecfi_005fval_005foffset-register_002c-offset">7.12.14 <code>.cfi_val_offset <var>register</var>, <var>offset</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005frel_005foffset-register_002c-offset" href="#g_t_002ecfi_005frel_005foffset-register_002c-offset">7.12.15 <code>.cfi_rel_offset <var>register</var>, <var>offset</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005fregister-register1_002c-register2" href="#g_t_002ecfi_005fregister-register1_002c-register2">7.12.16 <code>.cfi_register <var>register1</var>, <var>register2</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005frestore-register" href="#g_t_002ecfi_005frestore-register">7.12.17 <code>.cfi_restore <var>register</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005fundefined-register" href="#g_t_002ecfi_005fundefined-register">7.12.18 <code>.cfi_undefined <var>register</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005fsame_005fvalue-register" href="#g_t_002ecfi_005fsame_005fvalue-register">7.12.19 <code>.cfi_same_value <var>register</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005fremember_005fstate-and-_002ecfi_005frestore_005fstate" href="#g_t_002ecfi_005fremember_005fstate-and-_002ecfi_005frestore_005fstate">7.12.20 <code>.cfi_remember_state</code> and <code>.cfi_restore_state</code></a></li>
|
|
<li><a name="toc-_002ecfi_005freturn_005fcolumn-register" href="#g_t_002ecfi_005freturn_005fcolumn-register">7.12.21 <code>.cfi_return_column <var>register</var></code></a></li>
|
|
<li><a name="toc-_002ecfi_005fsignal_005fframe" href="#g_t_002ecfi_005fsignal_005fframe">7.12.22 <code>.cfi_signal_frame</code></a></li>
|
|
<li><a name="toc-_002ecfi_005fwindow_005fsave" href="#g_t_002ecfi_005fwindow_005fsave">7.12.23 <code>.cfi_window_save</code></a></li>
|
|
<li><a name="toc-_002ecfi_005fescape-expression_005b_002c-_2026_005d" href="#g_t_002ecfi_005fescape-expression_005b_002c-_2026_005d">7.12.24 <code>.cfi_escape</code> <var>expression</var>[, …]</a></li>
|
|
<li><a name="toc-_002ecfi_005fval_005fencoded_005faddr-register_002c-encoding_002c-label" href="#g_t_002ecfi_005fval_005fencoded_005faddr-register_002c-encoding_002c-label">7.12.25 <code>.cfi_val_encoded_addr <var>register</var>, <var>encoding</var>, <var>label</var></code></a></li>
|
|
</ul></li>
|
|
<li><a name="toc-_002ecomm-symbol-_002c-length-" href="#Comm">7.13 <code>.comm <var>symbol</var> , <var>length</var> </code></a></li>
|
|
<li><a name="toc-_002edata-subsection" href="#Data">7.14 <code>.data <var>subsection</var></code></a></li>
|
|
<li><a name="toc-_002edc_005bsize_005d-expressions" href="#Dc">7.15 <code>.dc[<var>size</var>] <var>expressions</var></code></a></li>
|
|
<li><a name="toc-_002edcb_005bsize_005d-number-_005b_002cfill_005d" href="#Dcb">7.16 <code>.dcb[<var>size</var>] <var>number</var> [,<var>fill</var>]</code></a></li>
|
|
<li><a name="toc-_002eds_005bsize_005d-number-_005b_002cfill_005d" href="#Ds">7.17 <code>.ds[<var>size</var>] <var>number</var> [,<var>fill</var>]</code></a></li>
|
|
<li><a name="toc-_002edef-name" href="#Def">7.18 <code>.def <var>name</var></code></a></li>
|
|
<li><a name="toc-_002edesc-symbol_002c-abs_002dexpression" href="#Desc">7.19 <code>.desc <var>symbol</var>, <var>abs-expression</var></code></a></li>
|
|
<li><a name="toc-_002edim" href="#Dim">7.20 <code>.dim</code></a></li>
|
|
<li><a name="toc-_002edouble-flonums" href="#Double">7.21 <code>.double <var>flonums</var></code></a></li>
|
|
<li><a name="toc-_002eeject" href="#Eject">7.22 <code>.eject</code></a></li>
|
|
<li><a name="toc-_002eelse" href="#Else">7.23 <code>.else</code></a></li>
|
|
<li><a name="toc-_002eelseif" href="#Elseif">7.24 <code>.elseif</code></a></li>
|
|
<li><a name="toc-_002eend" href="#End">7.25 <code>.end</code></a></li>
|
|
<li><a name="toc-_002eendef" href="#Endef">7.26 <code>.endef</code></a></li>
|
|
<li><a name="toc-_002eendfunc" href="#Endfunc">7.27 <code>.endfunc</code></a></li>
|
|
<li><a name="toc-_002eendif" href="#Endif">7.28 <code>.endif</code></a></li>
|
|
<li><a name="toc-_002eequ-symbol_002c-expression" href="#Equ">7.29 <code>.equ <var>symbol</var>, <var>expression</var></code></a></li>
|
|
<li><a name="toc-_002eequiv-symbol_002c-expression" href="#Equiv">7.30 <code>.equiv <var>symbol</var>, <var>expression</var></code></a></li>
|
|
<li><a name="toc-_002eeqv-symbol_002c-expression" href="#Eqv">7.31 <code>.eqv <var>symbol</var>, <var>expression</var></code></a></li>
|
|
<li><a name="toc-_002eerr" href="#Err">7.32 <code>.err</code></a></li>
|
|
<li><a name="toc-_002eerror-_0022string_0022" href="#Error">7.33 <code>.error "<var>string</var>"</code></a></li>
|
|
<li><a name="toc-_002eexitm" href="#Exitm">7.34 <code>.exitm</code></a></li>
|
|
<li><a name="toc-_002eextern" href="#Extern">7.35 <code>.extern</code></a></li>
|
|
<li><a name="toc-_002efail-expression" href="#Fail">7.36 <code>.fail <var>expression</var></code></a></li>
|
|
<li><a name="toc-_002efile" href="#File">7.37 <code>.file</code></a></li>
|
|
<li><a name="toc-_002efill-repeat-_002c-size-_002c-value" href="#Fill">7.38 <code>.fill <var>repeat</var> , <var>size</var> , <var>value</var></code></a></li>
|
|
<li><a name="toc-_002efloat-flonums" href="#Float">7.39 <code>.float <var>flonums</var></code></a></li>
|
|
<li><a name="toc-_002efunc-name_005b_002clabel_005d" href="#Func">7.40 <code>.func <var>name</var>[,<var>label</var>]</code></a></li>
|
|
<li><a name="toc-_002eglobal-symbol_002c-_002eglobl-symbol" href="#Global">7.41 <code>.global <var>symbol</var></code>, <code>.globl <var>symbol</var></code></a></li>
|
|
<li><a name="toc-_002egnu_005fattribute-tag_002cvalue" href="#Gnu_005fattribute">7.42 <code>.gnu_attribute <var>tag</var>,<var>value</var></code></a></li>
|
|
<li><a name="toc-_002ehidden-names" href="#Hidden">7.43 <code>.hidden <var>names</var></code></a></li>
|
|
<li><a name="toc-_002ehword-expressions" href="#hword">7.44 <code>.hword <var>expressions</var></code></a></li>
|
|
<li><a name="toc-_002eident" href="#Ident">7.45 <code>.ident</code></a></li>
|
|
<li><a name="toc-_002eif-absolute-expression" href="#If">7.46 <code>.if <var>absolute expression</var></code></a></li>
|
|
<li><a name="toc-_002eincbin-_0022file_0022_005b_002cskip_005b_002ccount_005d_005d" href="#Incbin">7.47 <code>.incbin "<var>file</var>"[,<var>skip</var>[,<var>count</var>]]</code></a></li>
|
|
<li><a name="toc-_002einclude-_0022file_0022" href="#Include">7.48 <code>.include "<var>file</var>"</code></a></li>
|
|
<li><a name="toc-_002eint-expressions" href="#Int">7.49 <code>.int <var>expressions</var></code></a></li>
|
|
<li><a name="toc-_002einternal-names" href="#Internal">7.50 <code>.internal <var>names</var></code></a></li>
|
|
<li><a name="toc-_002eirp-symbol_002cvalues_2026" href="#Irp">7.51 <code>.irp <var>symbol</var>,<var>values</var></code>…</a></li>
|
|
<li><a name="toc-_002eirpc-symbol_002cvalues_2026" href="#Irpc">7.52 <code>.irpc <var>symbol</var>,<var>values</var></code>…</a></li>
|
|
<li><a name="toc-_002elcomm-symbol-_002c-length" href="#Lcomm">7.53 <code>.lcomm <var>symbol</var> , <var>length</var></code></a></li>
|
|
<li><a name="toc-_002elflags" href="#Lflags">7.54 <code>.lflags</code></a></li>
|
|
<li><a name="toc-_002eline-line_002dnumber" href="#Line">7.55 <code>.line <var>line-number</var></code></a></li>
|
|
<li><a name="toc-_002elinkonce-_005btype_005d" href="#Linkonce">7.56 <code>.linkonce [<var>type</var>]</code></a></li>
|
|
<li><a name="toc-_002elist" href="#List">7.57 <code>.list</code></a></li>
|
|
<li><a name="toc-_002eln-line_002dnumber" href="#Ln">7.58 <code>.ln <var>line-number</var></code></a></li>
|
|
<li><a name="toc-_002eloc-fileno-lineno-_005bcolumn_005d-_005boptions_005d" href="#Loc">7.59 <code>.loc <var>fileno</var> <var>lineno</var> [<var>column</var>] [<var>options</var>]</code></a></li>
|
|
<li><a name="toc-_002eloc_005fmark_005flabels-enable" href="#Loc_005fmark_005flabels">7.60 <code>.loc_mark_labels <var>enable</var></code></a></li>
|
|
<li><a name="toc-_002elocal-names" href="#Local">7.61 <code>.local <var>names</var></code></a></li>
|
|
<li><a name="toc-_002elong-expressions" href="#Long">7.62 <code>.long <var>expressions</var></code></a></li>
|
|
<li><a name="toc-_002emacro" href="#Macro">7.63 <code>.macro</code></a></li>
|
|
<li><a name="toc-_002emri-val" href="#MRI">7.64 <code>.mri <var>val</var></code></a></li>
|
|
<li><a name="toc-_002enoaltmacro" href="#Noaltmacro">7.65 <code>.noaltmacro</code></a></li>
|
|
<li><a name="toc-_002enolist" href="#Nolist">7.66 <code>.nolist</code></a></li>
|
|
<li><a name="toc-_002enop-_005bsize_005d" href="#Nop">7.67 <code>.nop [<var>size</var>]</code></a></li>
|
|
<li><a name="toc-_002enops-size_005b_002c-control_005d" href="#Nops">7.68 <code>.nops <var>size</var>[, <var>control</var>]</code></a></li>
|
|
<li><a name="toc-_002eocta-bignums" href="#Octa">7.69 <code>.octa <var>bignums</var></code></a></li>
|
|
<li><a name="toc-_002eoffset-loc" href="#Offset">7.70 <code>.offset <var>loc</var></code></a></li>
|
|
<li><a name="toc-_002eorg-new_002dlc-_002c-fill" href="#Org">7.71 <code>.org <var>new-lc</var> , <var>fill</var></code></a></li>
|
|
<li><a name="toc-_002ep2align_005bwl_005d-_005babs_002dexpr_005b_002c-abs_002dexpr_005b_002c-abs_002dexpr_005d_005d_005d" href="#P2align">7.72 <code>.p2align[wl] [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code></a></li>
|
|
<li><a name="toc-_002epopsection" href="#PopSection">7.73 <code>.popsection</code></a></li>
|
|
<li><a name="toc-_002eprevious" href="#Previous">7.74 <code>.previous</code></a></li>
|
|
<li><a name="toc-_002eprint-string" href="#Print">7.75 <code>.print <var>string</var></code></a></li>
|
|
<li><a name="toc-_002eprotected-names" href="#Protected">7.76 <code>.protected <var>names</var></code></a></li>
|
|
<li><a name="toc-_002epsize-lines-_002c-columns" href="#Psize">7.77 <code>.psize <var>lines</var> , <var>columns</var></code></a></li>
|
|
<li><a name="toc-_002epurgem-name" href="#Purgem">7.78 <code>.purgem <var>name</var></code></a></li>
|
|
<li><a name="toc-_002epushsection-name-_005b_002c-subsection_005d-_005b_002c-_0022flags_0022_005b_002c-_0040type_005b_002carguments_005d_005d_005d" href="#PushSection">7.79 <code>.pushsection <var>name</var> [, <var>subsection</var>] [, "<var>flags</var>"[, @<var>type</var>[,<var>arguments</var>]]]</code></a></li>
|
|
<li><a name="toc-_002equad-bignums" href="#Quad">7.80 <code>.quad <var>bignums</var></code></a></li>
|
|
<li><a name="toc-_002ereloc-offset_002c-reloc_005fname_005b_002c-expression_005d" href="#Reloc">7.81 <code>.reloc <var>offset</var>, <var>reloc_name</var>[, <var>expression</var>]</code></a></li>
|
|
<li><a name="toc-_002erept-count" href="#Rept">7.82 <code>.rept <var>count</var></code></a></li>
|
|
<li><a name="toc-_002esbttl-_0022subheading_0022" href="#Sbttl">7.83 <code>.sbttl "<var>subheading</var>"</code></a></li>
|
|
<li><a name="toc-_002escl-class" href="#Scl">7.84 <code>.scl <var>class</var></code></a></li>
|
|
<li><a name="toc-_002esection-name" href="#Section">7.85 <code>.section <var>name</var></code></a></li>
|
|
<li><a name="toc-_002eset-symbol_002c-expression" href="#Set">7.86 <code>.set <var>symbol</var>, <var>expression</var></code></a></li>
|
|
<li><a name="toc-_002eshort-expressions" href="#Short">7.87 <code>.short <var>expressions</var></code></a></li>
|
|
<li><a name="toc-_002esingle-flonums" href="#Single">7.88 <code>.single <var>flonums</var></code></a></li>
|
|
<li><a name="toc-_002esize" href="#Size">7.89 <code>.size</code></a></li>
|
|
<li><a name="toc-_002eskip-size-_005b_002cfill_005d" href="#Skip">7.90 <code>.skip <var>size</var> [,<var>fill</var>]</code></a></li>
|
|
<li><a name="toc-_002esleb128-expressions" href="#Sleb128">7.91 <code>.sleb128 <var>expressions</var></code></a></li>
|
|
<li><a name="toc-_002espace-size-_005b_002cfill_005d" href="#Space">7.92 <code>.space <var>size</var> [,<var>fill</var>]</code></a></li>
|
|
<li><a name="toc-_002estabd_002c-_002estabn_002c-_002estabs" href="#Stab">7.93 <code>.stabd, .stabn, .stabs</code></a></li>
|
|
<li><a name="toc-_002estring-_0022str_0022_002c-_002estring8-_0022str_0022_002c-_002estring16" href="#String">7.94 <code>.string</code> "<var>str</var>", <code>.string8</code> "<var>str</var>", <code>.string16</code></a></li>
|
|
<li><a name="toc-_002estruct-expression" href="#Struct">7.95 <code>.struct <var>expression</var></code></a></li>
|
|
<li><a name="toc-_002esubsection-name" href="#SubSection">7.96 <code>.subsection <var>name</var></code></a></li>
|
|
<li><a name="toc-_002esymver" href="#Symver">7.97 <code>.symver</code></a></li>
|
|
<li><a name="toc-_002etag-structname" href="#Tag">7.98 <code>.tag <var>structname</var></code></a></li>
|
|
<li><a name="toc-_002etext-subsection" href="#Text">7.99 <code>.text <var>subsection</var></code></a></li>
|
|
<li><a name="toc-_002etitle-_0022heading_0022" href="#Title">7.100 <code>.title "<var>heading</var>"</code></a></li>
|
|
<li><a name="toc-_002etls_005fcommon-symbol_002c-length_005b_002c-alignment_005d" href="#Tls_005fcommon">7.101 <code>.tls_common <var>symbol</var>, <var>length</var>[, <var>alignment</var>]</code></a></li>
|
|
<li><a name="toc-_002etype" href="#Type">7.102 <code>.type</code></a></li>
|
|
<li><a name="toc-_002euleb128-expressions" href="#Uleb128">7.103 <code>.uleb128 <var>expressions</var></code></a></li>
|
|
<li><a name="toc-_002eval-addr" href="#Val">7.104 <code>.val <var>addr</var></code></a></li>
|
|
<li><a name="toc-_002eversion-_0022string_0022" href="#Version">7.105 <code>.version "<var>string</var>"</code></a></li>
|
|
<li><a name="toc-_002evtable_005fentry-table_002c-offset" href="#VTableEntry">7.106 <code>.vtable_entry <var>table</var>, <var>offset</var></code></a></li>
|
|
<li><a name="toc-_002evtable_005finherit-child_002c-parent" href="#VTableInherit">7.107 <code>.vtable_inherit <var>child</var>, <var>parent</var></code></a></li>
|
|
<li><a name="toc-_002ewarning-_0022string_0022" href="#Warning">7.108 <code>.warning "<var>string</var>"</code></a></li>
|
|
<li><a name="toc-_002eweak-names" href="#Weak">7.109 <code>.weak <var>names</var></code></a></li>
|
|
<li><a name="toc-_002eweakref-alias_002c-target" href="#Weakref">7.110 <code>.weakref <var>alias</var>, <var>target</var></code></a></li>
|
|
<li><a name="toc-_002eword-expressions" href="#Word">7.111 <code>.word <var>expressions</var></code></a></li>
|
|
<li><a name="toc-_002ezero-size" href="#Zero">7.112 <code>.zero <var>size</var></code></a></li>
|
|
<li><a name="toc-_002e2byte-expression-_005b_002c-expression_005d_002a" href="#g_t2byte">7.113 <code>.2byte <var>expression</var> [, <var>expression</var>]*</code></a></li>
|
|
<li><a name="toc-_002e4byte-expression-_005b_002c-expression_005d_002a" href="#g_t4byte">7.114 <code>.4byte <var>expression</var> [, <var>expression</var>]*</code></a></li>
|
|
<li><a name="toc-_002e8byte-expression-_005b_002c-expression_005d_002a" href="#g_t8byte">7.115 <code>.8byte <var>expression</var> [, <var>expression</var>]*</code></a></li>
|
|
<li><a name="toc-Deprecated-Directives" href="#Deprecated">7.116 Deprecated Directives</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Object-Attributes-1" href="#Object-Attributes">8 Object Attributes</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-GNU-Object-Attributes-1" href="#GNU-Object-Attributes">8.1 <small>GNU</small> Object Attributes</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Common-GNU-attributes" href="#Common-GNU-attributes">8.1.1 Common <small>GNU</small> attributes</a></li>
|
|
<li><a name="toc-M680x0-Attributes" href="#M680x0-Attributes">8.1.2 M680x0 Attributes</a></li>
|
|
<li><a name="toc-MIPS-Attributes" href="#MIPS-Attributes">8.1.3 MIPS Attributes</a></li>
|
|
<li><a name="toc-PowerPC-Attributes" href="#PowerPC-Attributes">8.1.4 PowerPC Attributes</a></li>
|
|
<li><a name="toc-IBM-z-Systems-Attributes" href="#IBM-z-Systems-Attributes">8.1.5 IBM z Systems Attributes</a></li>
|
|
<li><a name="toc-MSP430-Attributes" href="#MSP430-Attributes">8.1.6 MSP430 Attributes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Defining-New-Object-Attributes-1" href="#Defining-New-Object-Attributes">8.2 Defining New Object Attributes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Machine-Dependent-Features" href="#Machine-Dependencies">9 Machine Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-AArch64-Dependent-Features" href="#AArch64_002dDependent">9.1 AArch64 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options" href="#AArch64-Options">9.1.1 Options</a></li>
|
|
<li><a name="toc-Architecture-Extensions" href="#AArch64-Extensions">9.1.2 Architecture Extensions</a></li>
|
|
<li><a name="toc-Syntax-2" href="#AArch64-Syntax">9.1.3 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters" href="#AArch64_002dChars">9.1.3.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names" href="#AArch64_002dRegs">9.1.3.2 Register Names</a></li>
|
|
<li><a name="toc-Relocations" href="#AArch64_002dRelocations">9.1.3.3 Relocations</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Floating-Point" href="#AArch64-Floating-Point">9.1.4 Floating Point</a></li>
|
|
<li><a name="toc-AArch64-Machine-Directives" href="#AArch64-Directives">9.1.5 AArch64 Machine Directives</a></li>
|
|
<li><a name="toc-Opcodes" href="#AArch64-Opcodes">9.1.6 Opcodes</a></li>
|
|
<li><a name="toc-Mapping-Symbols" href="#AArch64-Mapping-Symbols">9.1.7 Mapping Symbols</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Alpha-Dependent-Features" href="#Alpha_002dDependent">9.2 Alpha Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Notes" href="#Alpha-Notes">9.2.1 Notes</a></li>
|
|
<li><a name="toc-Options-1" href="#Alpha-Options">9.2.2 Options</a></li>
|
|
<li><a name="toc-Syntax-3" href="#Alpha-Syntax">9.2.3 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-1" href="#Alpha_002dChars">9.2.3.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-1" href="#Alpha_002dRegs">9.2.3.2 Register Names</a></li>
|
|
<li><a name="toc-Relocations-1" href="#Alpha_002dRelocs">9.2.3.3 Relocations</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Floating-Point-1" href="#Alpha-Floating-Point">9.2.4 Floating Point</a></li>
|
|
<li><a name="toc-Alpha-Assembler-Directives" href="#Alpha-Directives">9.2.5 Alpha Assembler Directives</a></li>
|
|
<li><a name="toc-Opcodes-1" href="#Alpha-Opcodes">9.2.6 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-ARC-Dependent-Features" href="#ARC_002dDependent">9.3 ARC Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-2" href="#ARC-Options">9.3.1 Options</a></li>
|
|
<li><a name="toc-Syntax-4" href="#ARC-Syntax">9.3.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-2" href="#ARC_002dChars">9.3.2.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-2" href="#ARC_002dRegs">9.3.2.2 Register Names</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-ARC-Machine-Directives" href="#ARC-Directives">9.3.3 ARC Machine Directives</a></li>
|
|
<li><a name="toc-ARC-Assembler-Modifiers" href="#ARC-Modifiers">9.3.4 ARC Assembler Modifiers</a></li>
|
|
<li><a name="toc-ARC-Pre_002ddefined-Symbols" href="#ARC-Symbols">9.3.5 ARC Pre-defined Symbols</a></li>
|
|
<li><a name="toc-Opcodes-2" href="#ARC-Opcodes">9.3.6 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-ARM-Dependent-Features" href="#ARM_002dDependent">9.4 ARM Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-3" href="#ARM-Options">9.4.1 Options</a></li>
|
|
<li><a name="toc-Syntax-5" href="#ARM-Syntax">9.4.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Instruction-Set-Syntax" href="#ARM_002dInstruction_002dSet">9.4.2.1 Instruction Set Syntax</a></li>
|
|
<li><a name="toc-Special-Characters-3" href="#ARM_002dChars">9.4.2.2 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-3" href="#ARM_002dRegs">9.4.2.3 Register Names</a></li>
|
|
<li><a name="toc-ARM-relocation-generation" href="#ARM_002dRelocations">9.4.2.4 ARM relocation generation</a></li>
|
|
<li><a name="toc-NEON-Alignment-Specifiers" href="#ARM_002dNeon_002dAlignment">9.4.2.5 NEON Alignment Specifiers</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Floating-Point-2" href="#ARM-Floating-Point">9.4.3 Floating Point</a></li>
|
|
<li><a name="toc-ARM-Machine-Directives" href="#ARM-Directives">9.4.4 ARM Machine Directives</a></li>
|
|
<li><a name="toc-Opcodes-3" href="#ARM-Opcodes">9.4.5 Opcodes</a></li>
|
|
<li><a name="toc-Mapping-Symbols-1" href="#ARM-Mapping-Symbols">9.4.6 Mapping Symbols</a></li>
|
|
<li><a name="toc-Unwinding" href="#ARM-Unwinding-Tutorial">9.4.7 Unwinding</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-AVR-Dependent-Features" href="#AVR_002dDependent">9.5 AVR Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-4" href="#AVR-Options">9.5.1 Options</a></li>
|
|
<li><a name="toc-Syntax-6" href="#AVR-Syntax">9.5.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-4" href="#AVR_002dChars">9.5.2.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-4" href="#AVR_002dRegs">9.5.2.2 Register Names</a></li>
|
|
<li><a name="toc-Relocatable-Expression-Modifiers" href="#AVR_002dModifiers">9.5.2.3 Relocatable Expression Modifiers</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Opcodes-4" href="#AVR-Opcodes">9.5.3 Opcodes</a></li>
|
|
<li><a name="toc-Pseudo-Instructions" href="#AVR-Pseudo-Instructions">9.5.4 Pseudo Instructions</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Blackfin-Dependent-Features" href="#Blackfin_002dDependent">9.6 Blackfin Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-5" href="#Blackfin-Options">9.6.1 Options</a></li>
|
|
<li><a name="toc-Syntax-7" href="#Blackfin-Syntax">9.6.2 Syntax</a></li>
|
|
<li><a name="toc-Directives" href="#Blackfin-Directives">9.6.3 Directives</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-BPF-Dependent-Features" href="#BPF_002dDependent">9.7 BPF Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-6" href="#BPF-Options">9.7.1 Options</a></li>
|
|
<li><a name="toc-Syntax-8" href="#BPF-Syntax">9.7.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-5" href="#BPF_002dChars">9.7.2.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-5" href="#BPF_002dRegs">9.7.2.2 Register Names</a></li>
|
|
<li><a name="toc-Pseudo-Maps" href="#BPF_002dPseudo_002dMaps">9.7.2.3 Pseudo Maps</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Machine-Directives" href="#BPF-Directives">9.7.3 Machine Directives</a></li>
|
|
<li><a name="toc-Opcodes-5" href="#BPF-Opcodes">9.7.4 Opcodes</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Arithmetic-instructions" href="#Arithmetic-instructions">9.7.4.1 Arithmetic instructions</a></li>
|
|
<li><a name="toc-32_002dbit-arithmetic-instructions" href="#g_t32_002dbit-arithmetic-instructions">9.7.4.2 32-bit arithmetic instructions</a></li>
|
|
<li><a name="toc-Endianness-conversion-instructions" href="#Endianness-conversion-instructions">9.7.4.3 Endianness conversion instructions</a></li>
|
|
<li><a name="toc-64_002dbit-load-and-pseudo-maps" href="#g_t64_002dbit-load-and-pseudo-maps">9.7.4.4 64-bit load and pseudo maps</a></li>
|
|
<li><a name="toc-Load-instructions-for-socket-filters" href="#Load-instructions-for-socket-filters">9.7.4.5 Load instructions for socket filters</a></li>
|
|
<li><a name="toc-Generic-load_002fstore-instructions" href="#Generic-load_002fstore-instructions">9.7.4.6 Generic load/store instructions</a></li>
|
|
<li><a name="toc-Jump-instructions" href="#Jump-instructions">9.7.4.7 Jump instructions</a></li>
|
|
<li><a name="toc-Atomic-instructions" href="#Atomic-instructions">9.7.4.8 Atomic instructions</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-CR16-Dependent-Features" href="#CR16_002dDependent">9.8 CR16 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-CR16-Operand-Qualifiers-1" href="#CR16-Operand-Qualifiers">9.8.1 CR16 Operand Qualifiers</a></li>
|
|
<li><a name="toc-CR16-Syntax-1" href="#CR16-Syntax">9.8.2 CR16 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-6" href="#CR16_002dChars">9.8.2.1 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-CRIS-Dependent-Features" href="#CRIS_002dDependent">9.9 CRIS Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Command_002dline-Options" href="#CRIS_002dOpts">9.9.1 Command-line Options</a></li>
|
|
<li><a name="toc-Instruction-expansion" href="#CRIS_002dExpand">9.9.2 Instruction expansion</a></li>
|
|
<li><a name="toc-Symbols-3" href="#CRIS_002dSymbols">9.9.3 Symbols</a></li>
|
|
<li><a name="toc-Syntax-9" href="#CRIS_002dSyntax">9.9.4 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-7" href="#CRIS_002dChars">9.9.4.1 Special Characters</a></li>
|
|
<li><a name="toc-Symbols-in-position_002dindependent-code" href="#CRIS_002dPic">9.9.4.2 Symbols in position-independent code</a></li>
|
|
<li><a name="toc-Register-names" href="#CRIS_002dRegs">9.9.4.3 Register names</a></li>
|
|
<li><a name="toc-Assembler-Directives-1" href="#CRIS_002dPseudos">9.9.4.4 Assembler Directives</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-C_002dSKY-Dependent-Features" href="#C_002dSKY_002dDependent">9.10 C-SKY Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-7" href="#C_002dSKY-Options">9.10.1 Options</a></li>
|
|
<li><a name="toc-Syntax-10" href="#C_002dSKY-Syntax">9.10.2 Syntax</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-D10V-Dependent-Features" href="#D10V_002dDependent">9.11 D10V Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-D10V-Options" href="#D10V_002dOpts">9.11.1 D10V Options</a></li>
|
|
<li><a name="toc-Syntax-11" href="#D10V_002dSyntax">9.11.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Size-Modifiers" href="#D10V_002dSize">9.11.2.1 Size Modifiers</a></li>
|
|
<li><a name="toc-Sub_002dInstructions" href="#D10V_002dSubs">9.11.2.2 Sub-Instructions</a></li>
|
|
<li><a name="toc-Special-Characters-8" href="#D10V_002dChars">9.11.2.3 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-6" href="#D10V_002dRegs">9.11.2.4 Register Names</a></li>
|
|
<li><a name="toc-Addressing-Modes" href="#D10V_002dAddressing">9.11.2.5 Addressing Modes</a></li>
|
|
<li><a name="toc-_0040WORD-Modifier" href="#D10V_002dWord">9.11.2.6 @WORD Modifier</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Floating-Point-3" href="#D10V_002dFloat">9.11.3 Floating Point</a></li>
|
|
<li><a name="toc-Opcodes-6" href="#D10V_002dOpcodes">9.11.4 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-D30V-Dependent-Features" href="#D30V_002dDependent">9.12 D30V Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-D30V-Options" href="#D30V_002dOpts">9.12.1 D30V Options</a></li>
|
|
<li><a name="toc-Syntax-12" href="#D30V_002dSyntax">9.12.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Size-Modifiers-1" href="#D30V_002dSize">9.12.2.1 Size Modifiers</a></li>
|
|
<li><a name="toc-Sub_002dInstructions-1" href="#D30V_002dSubs">9.12.2.2 Sub-Instructions</a></li>
|
|
<li><a name="toc-Special-Characters-9" href="#D30V_002dChars">9.12.2.3 Special Characters</a></li>
|
|
<li><a name="toc-Guarded-Execution" href="#D30V_002dGuarded">9.12.2.4 Guarded Execution</a></li>
|
|
<li><a name="toc-Register-Names-7" href="#D30V_002dRegs">9.12.2.5 Register Names</a></li>
|
|
<li><a name="toc-Addressing-Modes-1" href="#D30V_002dAddressing">9.12.2.6 Addressing Modes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Floating-Point-4" href="#D30V_002dFloat">9.12.3 Floating Point</a></li>
|
|
<li><a name="toc-Opcodes-7" href="#D30V_002dOpcodes">9.12.4 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Epiphany-Dependent-Features" href="#Epiphany_002dDependent">9.13 Epiphany Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-8" href="#Epiphany-Options">9.13.1 Options</a></li>
|
|
<li><a name="toc-Epiphany-Syntax-1" href="#Epiphany-Syntax">9.13.2 Epiphany Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-10" href="#Epiphany_002dChars">9.13.2.1 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-H8_002f300-Dependent-Features" href="#H8_002f300_002dDependent">9.14 H8/300 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-9" href="#H8_002f300-Options">9.14.1 Options</a></li>
|
|
<li><a name="toc-Syntax-13" href="#H8_002f300-Syntax">9.14.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-11" href="#H8_002f300_002dChars">9.14.2.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-8" href="#H8_002f300_002dRegs">9.14.2.2 Register Names</a></li>
|
|
<li><a name="toc-Addressing-Modes-2" href="#H8_002f300_002dAddressing">9.14.2.3 Addressing Modes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Floating-Point-5" href="#H8_002f300-Floating-Point">9.14.3 Floating Point</a></li>
|
|
<li><a name="toc-H8_002f300-Machine-Directives" href="#H8_002f300-Directives">9.14.4 H8/300 Machine Directives</a></li>
|
|
<li><a name="toc-Opcodes-8" href="#H8_002f300-Opcodes">9.14.5 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-HPPA-Dependent-Features" href="#HPPA_002dDependent">9.15 HPPA Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Notes-1" href="#HPPA-Notes">9.15.1 Notes</a></li>
|
|
<li><a name="toc-Options-10" href="#HPPA-Options">9.15.2 Options</a></li>
|
|
<li><a name="toc-Syntax-14" href="#HPPA-Syntax">9.15.3 Syntax</a></li>
|
|
<li><a name="toc-Floating-Point-6" href="#HPPA-Floating-Point">9.15.4 Floating Point</a></li>
|
|
<li><a name="toc-HPPA-Assembler-Directives" href="#HPPA-Directives">9.15.5 HPPA Assembler Directives</a></li>
|
|
<li><a name="toc-Opcodes-9" href="#HPPA-Opcodes">9.15.6 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-80386-Dependent-Features" href="#i386_002dDependent">9.16 80386 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-11" href="#i386_002dOptions">9.16.1 Options</a></li>
|
|
<li><a name="toc-x86-specific-Directives" href="#i386_002dDirectives">9.16.2 x86 specific Directives</a></li>
|
|
<li><a name="toc-i386-Syntactical-Considerations" href="#i386_002dSyntax">9.16.3 i386 Syntactical Considerations</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-AT_0026T-Syntax-versus-Intel-Syntax" href="#i386_002dVariations">9.16.3.1 AT&T Syntax versus Intel Syntax</a></li>
|
|
<li><a name="toc-Special-Characters-12" href="#i386_002dChars">9.16.3.2 Special Characters</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-i386_002dMnemonics-1" href="#i386_002dMnemonics">9.16.4 i386-Mnemonics</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Instruction-Naming" href="#Instruction-Naming">9.16.4.1 Instruction Naming</a></li>
|
|
<li><a name="toc-AT_0026T-Mnemonic-versus-Intel-Mnemonic" href="#AT_0026T-Mnemonic-versus-Intel-Mnemonic">9.16.4.2 AT&T Mnemonic versus Intel Mnemonic</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Register-Naming" href="#i386_002dRegs">9.16.5 Register Naming</a></li>
|
|
<li><a name="toc-Instruction-Prefixes" href="#i386_002dPrefixes">9.16.6 Instruction Prefixes</a></li>
|
|
<li><a name="toc-Memory-References" href="#i386_002dMemory">9.16.7 Memory References</a></li>
|
|
<li><a name="toc-Handling-of-Jump-Instructions" href="#i386_002dJumps">9.16.8 Handling of Jump Instructions</a></li>
|
|
<li><a name="toc-Floating-Point-7" href="#i386_002dFloat">9.16.9 Floating Point</a></li>
|
|
<li><a name="toc-Intel_0027s-MMX-and-AMD_0027s-3DNow_0021-SIMD-Operations" href="#i386_002dSIMD">9.16.10 Intel’s MMX and AMD’s 3DNow! SIMD Operations</a></li>
|
|
<li><a name="toc-AMD_0027s-Lightweight-Profiling-Instructions" href="#i386_002dLWP">9.16.11 AMD’s Lightweight Profiling Instructions</a></li>
|
|
<li><a name="toc-Bit-Manipulation-Instructions" href="#i386_002dBMI">9.16.12 Bit Manipulation Instructions</a></li>
|
|
<li><a name="toc-AMD_0027s-Trailing-Bit-Manipulation-Instructions" href="#i386_002dTBM">9.16.13 AMD’s Trailing Bit Manipulation Instructions</a></li>
|
|
<li><a name="toc-Writing-16_002dbit-Code" href="#i386_002d16bit">9.16.14 Writing 16-bit Code</a></li>
|
|
<li><a name="toc-Specifying-CPU-Architecture" href="#i386_002dArch">9.16.15 Specifying CPU Architecture</a></li>
|
|
<li><a name="toc-AMD64-ISA-vs_002e-Intel64-ISA" href="#i386_002dISA">9.16.16 AMD64 ISA vs. Intel64 ISA</a></li>
|
|
<li><a name="toc-AT_0026T-Syntax-bugs" href="#i386_002dBugs">9.16.17 AT&T Syntax bugs</a></li>
|
|
<li><a name="toc-Notes-2" href="#i386_002dNotes">9.16.18 Notes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-IA_002d64-Dependent-Features" href="#IA_002d64_002dDependent">9.17 IA-64 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-12" href="#IA_002d64-Options">9.17.1 Options</a></li>
|
|
<li><a name="toc-Syntax-15" href="#IA_002d64-Syntax">9.17.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-13" href="#IA_002d64_002dChars">9.17.2.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-9" href="#IA_002d64_002dRegs">9.17.2.2 Register Names</a></li>
|
|
<li><a name="toc-IA_002d64-Processor_002dStatus_002dRegister-_0028PSR_0029-Bit-Names" href="#IA_002d64_002dBits">9.17.2.3 IA-64 Processor-Status-Register (PSR) Bit Names</a></li>
|
|
<li><a name="toc-Relocations-2" href="#IA_002d64_002dRelocs">9.17.2.4 Relocations</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Opcodes-10" href="#IA_002d64-Opcodes">9.17.3 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-IP2K-Dependent-Features" href="#IP2K_002dDependent">9.18 IP2K Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-IP2K-Options" href="#IP2K_002dOpts">9.18.1 IP2K Options</a></li>
|
|
<li><a name="toc-IP2K-Syntax" href="#IP2K_002dSyntax">9.18.2 IP2K Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-14" href="#IP2K_002dChars">9.18.2.1 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-LM32-Dependent-Features" href="#LM32_002dDependent">9.19 LM32 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-13" href="#LM32-Options">9.19.1 Options</a></li>
|
|
<li><a name="toc-Syntax-16" href="#LM32-Syntax">9.19.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Register-Names-10" href="#LM32_002dRegs">9.19.2.1 Register Names</a></li>
|
|
<li><a name="toc-Relocatable-Expression-Modifiers-1" href="#LM32_002dModifiers">9.19.2.2 Relocatable Expression Modifiers</a></li>
|
|
<li><a name="toc-Special-Characters-15" href="#LM32_002dChars">9.19.2.3 Special Characters</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Opcodes-11" href="#LM32-Opcodes">9.19.3 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-M32C-Dependent-Features" href="#M32C_002dDependent">9.20 M32C Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-M32C-Options" href="#M32C_002dOpts">9.20.1 M32C Options</a></li>
|
|
<li><a name="toc-M32C-Syntax" href="#M32C_002dSyntax">9.20.2 M32C Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Symbolic-Operand-Modifiers" href="#M32C_002dModifiers">9.20.2.1 Symbolic Operand Modifiers</a></li>
|
|
<li><a name="toc-Special-Characters-16" href="#M32C_002dChars">9.20.2.2 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-M32R-Dependent-Features" href="#M32R_002dDependent">9.21 M32R Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-M32R-Options" href="#M32R_002dOpts">9.21.1 M32R Options</a></li>
|
|
<li><a name="toc-M32R-Directives" href="#M32R_002dDirectives">9.21.2 M32R Directives</a></li>
|
|
<li><a name="toc-M32R-Warnings" href="#M32R_002dWarnings">9.21.3 M32R Warnings</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-M680x0-Dependent-Features" href="#M68K_002dDependent">9.22 M680x0 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-M680x0-Options" href="#M68K_002dOpts">9.22.1 M680x0 Options</a></li>
|
|
<li><a name="toc-Syntax-17" href="#M68K_002dSyntax">9.22.2 Syntax</a></li>
|
|
<li><a name="toc-Motorola-Syntax" href="#M68K_002dMoto_002dSyntax">9.22.3 Motorola Syntax</a></li>
|
|
<li><a name="toc-Floating-Point-8" href="#M68K_002dFloat">9.22.4 Floating Point</a></li>
|
|
<li><a name="toc-680x0-Machine-Directives" href="#M68K_002dDirectives">9.22.5 680x0 Machine Directives</a></li>
|
|
<li><a name="toc-Opcodes-12" href="#M68K_002dopcodes">9.22.6 Opcodes</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Branch-Improvement" href="#M68K_002dBranch">9.22.6.1 Branch Improvement</a></li>
|
|
<li><a name="toc-Special-Characters-17" href="#M68K_002dChars">9.22.6.2 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-M68HC11-and-M68HC12-Dependent-Features" href="#M68HC11_002dDependent">9.23 M68HC11 and M68HC12 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-M68HC11-and-M68HC12-Options" href="#M68HC11_002dOpts">9.23.1 M68HC11 and M68HC12 Options</a></li>
|
|
<li><a name="toc-Syntax-18" href="#M68HC11_002dSyntax">9.23.2 Syntax</a></li>
|
|
<li><a name="toc-Symbolic-Operand-Modifiers-1" href="#M68HC11_002dModifiers">9.23.3 Symbolic Operand Modifiers</a></li>
|
|
<li><a name="toc-Assembler-Directives-2" href="#M68HC11_002dDirectives">9.23.4 Assembler Directives</a></li>
|
|
<li><a name="toc-Floating-Point-9" href="#M68HC11_002dFloat">9.23.5 Floating Point</a></li>
|
|
<li><a name="toc-Opcodes-13" href="#M68HC11_002dopcodes">9.23.6 Opcodes</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Branch-Improvement-1" href="#M68HC11_002dBranch">9.23.6.1 Branch Improvement</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-S12Z-Dependent-Features" href="#S12Z_002dDependent">9.24 S12Z Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-S12Z-Options-1" href="#S12Z-Options">9.24.1 S12Z Options</a></li>
|
|
<li><a name="toc-Syntax-19" href="#S12Z-Syntax">9.24.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Overview-2" href="#S12Z-Syntax-Overview">9.24.2.1 Overview</a></li>
|
|
<li><a name="toc-Addressing-Modes-3" href="#S12Z-Addressing-Modes">9.24.2.2 Addressing Modes</a></li>
|
|
<li><a name="toc-Register-Notation" href="#S12Z-Register-Notation">9.24.2.3 Register Notation</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-Meta-Dependent-Features" href="#Meta_002dDependent">9.25 Meta Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-14" href="#Meta-Options">9.25.1 Options</a></li>
|
|
<li><a name="toc-Syntax-20" href="#Meta-Syntax">9.25.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-18" href="#Meta_002dChars">9.25.2.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-11" href="#Meta_002dRegs">9.25.2.2 Register Names</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-MicroBlaze-Dependent-Features" href="#MicroBlaze_002dDependent">9.26 MicroBlaze Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Directives-1" href="#MicroBlaze-Directives">9.26.1 Directives</a></li>
|
|
<li><a name="toc-Syntax-for-the-MicroBlaze" href="#MicroBlaze-Syntax">9.26.2 Syntax for the MicroBlaze</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-19" href="#MicroBlaze_002dChars">9.26.2.1 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-MIPS-Dependent-Features" href="#MIPS_002dDependent">9.27 MIPS Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Assembler-options" href="#MIPS-Options">9.27.1 Assembler options</a></li>
|
|
<li><a name="toc-High_002dlevel-assembly-macros" href="#MIPS-Macros">9.27.2 High-level assembly macros</a></li>
|
|
<li><a name="toc-Directives-to-override-the-size-of-symbols" href="#MIPS-Symbol-Sizes">9.27.3 Directives to override the size of symbols</a></li>
|
|
<li><a name="toc-Controlling-the-use-of-small-data-accesses" href="#MIPS-Small-Data">9.27.4 Controlling the use of small data accesses</a></li>
|
|
<li><a name="toc-Directives-to-override-the-ISA-level" href="#MIPS-ISA">9.27.5 Directives to override the ISA level</a></li>
|
|
<li><a name="toc-Directives-to-control-code-generation" href="#MIPS-assembly-options">9.27.6 Directives to control code generation</a></li>
|
|
<li><a name="toc-Directives-for-extending-MIPS-16-bit-instructions" href="#MIPS-autoextend">9.27.7 Directives for extending MIPS 16 bit instructions</a></li>
|
|
<li><a name="toc-Directive-to-mark-data-as-an-instruction" href="#MIPS-insn">9.27.8 Directive to mark data as an instruction</a></li>
|
|
<li><a name="toc-Directives-to-control-the-FP-ABI" href="#MIPS-FP-ABIs">9.27.9 Directives to control the FP ABI</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-History-of-FP-ABIs" href="#MIPS-FP-ABI-History">9.27.9.1 History of FP ABIs</a></li>
|
|
<li><a name="toc-Supported-FP-ABIs" href="#MIPS-FP-ABI-Variants">9.27.9.2 Supported FP ABIs</a></li>
|
|
<li><a name="toc-Automatic-selection-of-FP-ABI" href="#MIPS-FP-ABI-Selection">9.27.9.3 Automatic selection of FP ABI</a></li>
|
|
<li><a name="toc-Linking-different-FP-ABI-variants" href="#MIPS-FP-ABI-Compatibility">9.27.9.4 Linking different FP ABI variants</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Directives-to-record-which-NaN-encoding-is-being-used" href="#MIPS-NaN-Encodings">9.27.10 Directives to record which NaN encoding is being used</a></li>
|
|
<li><a name="toc-Directives-to-save-and-restore-options" href="#MIPS-Option-Stack">9.27.11 Directives to save and restore options</a></li>
|
|
<li><a name="toc-Directives-to-control-generation-of-MIPS-ASE-instructions" href="#MIPS-ASE-Instruction-Generation-Overrides">9.27.12 Directives to control generation of MIPS ASE instructions</a></li>
|
|
<li><a name="toc-Directives-to-override-floating_002dpoint-options" href="#MIPS-Floating_002dPoint">9.27.13 Directives to override floating-point options</a></li>
|
|
<li><a name="toc-Syntactical-considerations-for-the-MIPS-assembler" href="#MIPS-Syntax">9.27.14 Syntactical considerations for the MIPS assembler</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-20" href="#MIPS_002dChars">9.27.14.1 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-MMIX-Dependent-Features" href="#MMIX_002dDependent">9.28 MMIX Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Command_002dline-Options-1" href="#MMIX_002dOpts">9.28.1 Command-line Options</a></li>
|
|
<li><a name="toc-Instruction-expansion-1" href="#MMIX_002dExpand">9.28.2 Instruction expansion</a></li>
|
|
<li><a name="toc-Syntax-21" href="#MMIX_002dSyntax">9.28.3 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-21" href="#MMIX_002dChars">9.28.3.1 Special Characters</a></li>
|
|
<li><a name="toc-Symbols-4" href="#MMIX_002dSymbols">9.28.3.2 Symbols</a></li>
|
|
<li><a name="toc-Register-names-1" href="#MMIX_002dRegs">9.28.3.3 Register names</a></li>
|
|
<li><a name="toc-Assembler-Directives-3" href="#MMIX_002dPseudos">9.28.3.4 Assembler Directives</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Differences-to-mmixal" href="#MMIX_002dmmixal">9.28.4 Differences to <code>mmixal</code></a></li>
|
|
</ul></li>
|
|
<li><a name="toc-MSP-430-Dependent-Features" href="#MSP430_002dDependent">9.29 MSP 430 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-15" href="#MSP430-Options">9.29.1 Options</a></li>
|
|
<li><a name="toc-Syntax-22" href="#MSP430-Syntax">9.29.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Macros" href="#MSP430_002dMacros">9.29.2.1 Macros</a></li>
|
|
<li><a name="toc-Special-Characters-22" href="#MSP430_002dChars">9.29.2.2 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-12" href="#MSP430_002dRegs">9.29.2.3 Register Names</a></li>
|
|
<li><a name="toc-Assembler-Extensions" href="#MSP430_002dExt">9.29.2.4 Assembler Extensions</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Floating-Point-10" href="#MSP430-Floating-Point">9.29.3 Floating Point</a></li>
|
|
<li><a name="toc-MSP-430-Machine-Directives" href="#MSP430-Directives">9.29.4 MSP 430 Machine Directives</a></li>
|
|
<li><a name="toc-Opcodes-14" href="#MSP430-Opcodes">9.29.5 Opcodes</a></li>
|
|
<li><a name="toc-Profiling-Capability" href="#MSP430-Profiling-Capability">9.29.6 Profiling Capability</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-NDS32-Dependent-Features" href="#NDS32_002dDependent">9.30 NDS32 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-NDS32-Options-1" href="#NDS32-Options">9.30.1 NDS32 Options</a></li>
|
|
<li><a name="toc-Syntax-23" href="#NDS32-Syntax">9.30.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-23" href="#NDS32_002dChars">9.30.2.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-13" href="#NDS32_002dRegs">9.30.2.2 Register Names</a></li>
|
|
<li><a name="toc-Pseudo-Instructions-1" href="#NDS32_002dOps">9.30.2.3 Pseudo Instructions</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-Nios-II-Dependent-Features" href="#NiosII_002dDependent">9.31 Nios II Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-16" href="#Nios-II-Options">9.31.1 Options</a></li>
|
|
<li><a name="toc-Syntax-24" href="#Nios-II-Syntax">9.31.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-24" href="#Nios-II-Chars">9.31.2.1 Special Characters</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Nios-II-Machine-Relocations" href="#Nios-II-Relocations">9.31.3 Nios II Machine Relocations</a></li>
|
|
<li><a name="toc-Nios-II-Machine-Directives" href="#Nios-II-Directives">9.31.4 Nios II Machine Directives</a></li>
|
|
<li><a name="toc-Opcodes-15" href="#Nios-II-Opcodes">9.31.5 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-NS32K-Dependent-Features" href="#NS32K_002dDependent">9.32 NS32K Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Syntax-25" href="#NS32K-Syntax">9.32.1 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-25" href="#NS32K_002dChars">9.32.1.1 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-OPENRISC-Dependent-Features" href="#OpenRISC_002dDependent">9.33 OPENRISC Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-OpenRISC-Syntax" href="#OpenRISC_002dSyntax">9.33.1 OpenRISC Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-26" href="#OpenRISC_002dChars">9.33.1.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-14" href="#OpenRISC_002dRegs">9.33.1.2 Register Names</a></li>
|
|
<li><a name="toc-Relocations-3" href="#OpenRISC_002dRelocs">9.33.1.3 Relocations</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Floating-Point-11" href="#OpenRISC_002dFloat">9.33.2 Floating Point</a></li>
|
|
<li><a name="toc-OpenRISC-Machine-Directives" href="#OpenRISC_002dDirectives">9.33.3 OpenRISC Machine Directives</a></li>
|
|
<li><a name="toc-Opcodes-16" href="#OpenRISC_002dOpcodes">9.33.4 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-PDP_002d11-Dependent-Features" href="#PDP_002d11_002dDependent">9.34 PDP-11 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-17" href="#PDP_002d11_002dOptions">9.34.1 Options</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Code-Generation-Options" href="#Code-Generation-Options">9.34.1.1 Code Generation Options</a></li>
|
|
<li><a name="toc-Instruction-Set-Extension-Options" href="#Instruction-Set-Extension-Options">9.34.1.2 Instruction Set Extension Options</a></li>
|
|
<li><a name="toc-CPU-Model-Options" href="#CPU-Model-Options">9.34.1.3 CPU Model Options</a></li>
|
|
<li><a name="toc-Machine-Model-Options" href="#Machine-Model-Options">9.34.1.4 Machine Model Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Assembler-Directives-4" href="#PDP_002d11_002dPseudos">9.34.2 Assembler Directives</a></li>
|
|
<li><a name="toc-PDP_002d11-Assembly-Language-Syntax" href="#PDP_002d11_002dSyntax">9.34.3 PDP-11 Assembly Language Syntax</a></li>
|
|
<li><a name="toc-Instruction-Naming-1" href="#PDP_002d11_002dMnemonics">9.34.4 Instruction Naming</a></li>
|
|
<li><a name="toc-Synthetic-Instructions" href="#PDP_002d11_002dSynthetic">9.34.5 Synthetic Instructions</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-picoJava-Dependent-Features" href="#PJ_002dDependent">9.35 picoJava Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-18" href="#PJ-Options">9.35.1 Options</a></li>
|
|
<li><a name="toc-PJ-Syntax-1" href="#PJ-Syntax">9.35.2 PJ Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-27" href="#PJ_002dChars">9.35.2.1 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-PowerPC-Dependent-Features" href="#PPC_002dDependent">9.36 PowerPC Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-19" href="#PowerPC_002dOpts">9.36.1 Options</a></li>
|
|
<li><a name="toc-PowerPC-Assembler-Directives" href="#PowerPC_002dPseudo">9.36.2 PowerPC Assembler Directives</a></li>
|
|
<li><a name="toc-PowerPC-Syntax" href="#PowerPC_002dSyntax">9.36.3 PowerPC Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-28" href="#PowerPC_002dChars">9.36.3.1 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-PRU-Dependent-Features" href="#PRU_002dDependent">9.37 PRU Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-20" href="#PRU-Options">9.37.1 Options</a></li>
|
|
<li><a name="toc-Syntax-26" href="#PRU-Syntax">9.37.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-29" href="#PRU-Chars">9.37.2.1 Special Characters</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-PRU-Machine-Relocations" href="#PRU-Relocations">9.37.3 PRU Machine Relocations</a></li>
|
|
<li><a name="toc-PRU-Machine-Directives" href="#PRU-Directives">9.37.4 PRU Machine Directives</a></li>
|
|
<li><a name="toc-Opcodes-17" href="#PRU-Opcodes">9.37.5 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-RISC_002dV-Dependent-Features" href="#RISC_002dV_002dDependent">9.38 RISC-V Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-RISC_002dV-Options" href="#RISC_002dV_002dOptions">9.38.1 RISC-V Options</a></li>
|
|
<li><a name="toc-RISC_002dV-Directives" href="#RISC_002dV_002dDirectives">9.38.2 RISC-V Directives</a></li>
|
|
<li><a name="toc-RISC_002dV-Assembler-Modifiers" href="#RISC_002dV_002dModifiers">9.38.3 RISC-V Assembler Modifiers</a></li>
|
|
<li><a name="toc-RISC_002dV-Instruction-Formats" href="#RISC_002dV_002dFormats">9.38.4 RISC-V Instruction Formats</a></li>
|
|
<li><a name="toc-RISC_002dV-Object-Attribute" href="#RISC_002dV_002dATTRIBUTE">9.38.5 RISC-V Object Attribute</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-RL78-Dependent-Features" href="#RL78_002dDependent">9.39 RL78 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-RL78-Options" href="#RL78_002dOpts">9.39.1 RL78 Options</a></li>
|
|
<li><a name="toc-Symbolic-Operand-Modifiers-2" href="#RL78_002dModifiers">9.39.2 Symbolic Operand Modifiers</a></li>
|
|
<li><a name="toc-Assembler-Directives-5" href="#RL78_002dDirectives">9.39.3 Assembler Directives</a></li>
|
|
<li><a name="toc-Syntax-for-the-RL78" href="#RL78_002dSyntax">9.39.4 Syntax for the RL78</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-30" href="#RL78_002dChars">9.39.4.1 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-RX-Dependent-Features" href="#RX_002dDependent">9.40 RX Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-RX-Options" href="#RX_002dOpts">9.40.1 RX Options</a></li>
|
|
<li><a name="toc-Symbolic-Operand-Modifiers-3" href="#RX_002dModifiers">9.40.2 Symbolic Operand Modifiers</a></li>
|
|
<li><a name="toc-Assembler-Directives-6" href="#RX_002dDirectives">9.40.3 Assembler Directives</a></li>
|
|
<li><a name="toc-Floating-Point-12" href="#RX_002dFloat">9.40.4 Floating Point</a></li>
|
|
<li><a name="toc-Syntax-for-the-RX" href="#RX_002dSyntax">9.40.5 Syntax for the RX</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-31" href="#RX_002dChars">9.40.5.1 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-IBM-S_002f390-Dependent-Features" href="#S_002f390_002dDependent">9.41 IBM S/390 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-21" href="#s390-Options">9.41.1 Options</a></li>
|
|
<li><a name="toc-Special-Characters-32" href="#s390-Characters">9.41.2 Special Characters</a></li>
|
|
<li><a name="toc-Instruction-syntax" href="#s390-Syntax">9.41.3 Instruction syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Register-naming" href="#s390-Register">9.41.3.1 Register naming</a></li>
|
|
<li><a name="toc-Instruction-Mnemonics" href="#s390-Mnemonics">9.41.3.2 Instruction Mnemonics</a></li>
|
|
<li><a name="toc-Instruction-Operands" href="#s390-Operands">9.41.3.3 Instruction Operands</a></li>
|
|
<li><a name="toc-Instruction-Formats" href="#s390-Formats">9.41.3.4 Instruction Formats</a></li>
|
|
<li><a name="toc-Instruction-Aliases" href="#s390-Aliases">9.41.3.5 Instruction Aliases</a></li>
|
|
<li><a name="toc-Instruction-Operand-Modifier" href="#s390-Operand-Modifier">9.41.3.6 Instruction Operand Modifier</a></li>
|
|
<li><a name="toc-Instruction-Marker" href="#s390-Instruction-Marker">9.41.3.7 Instruction Marker</a></li>
|
|
<li><a name="toc-Literal-Pool-Entries" href="#s390-Literal-Pool-Entries">9.41.3.8 Literal Pool Entries</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Assembler-Directives-7" href="#s390-Directives">9.41.4 Assembler Directives</a></li>
|
|
<li><a name="toc-Floating-Point-13" href="#s390-Floating-Point">9.41.5 Floating Point</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-SCORE-Dependent-Features" href="#SCORE_002dDependent">9.42 SCORE Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-22" href="#SCORE_002dOpts">9.42.1 Options</a></li>
|
|
<li><a name="toc-SCORE-Assembler-Directives" href="#SCORE_002dPseudo">9.42.2 SCORE Assembler Directives</a></li>
|
|
<li><a name="toc-SCORE-Syntax" href="#SCORE_002dSyntax">9.42.3 SCORE Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-33" href="#SCORE_002dChars">9.42.3.1 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-Renesas-_002f-SuperH-SH-Dependent-Features" href="#SH_002dDependent">9.43 Renesas / SuperH SH Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-23" href="#SH-Options">9.43.1 Options</a></li>
|
|
<li><a name="toc-Syntax-27" href="#SH-Syntax">9.43.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-34" href="#SH_002dChars">9.43.2.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-15" href="#SH_002dRegs">9.43.2.2 Register Names</a></li>
|
|
<li><a name="toc-Addressing-Modes-4" href="#SH_002dAddressing">9.43.2.3 Addressing Modes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Floating-Point-14" href="#SH-Floating-Point">9.43.3 Floating Point</a></li>
|
|
<li><a name="toc-SH-Machine-Directives" href="#SH-Directives">9.43.4 SH Machine Directives</a></li>
|
|
<li><a name="toc-Opcodes-18" href="#SH-Opcodes">9.43.5 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-SPARC-Dependent-Features" href="#Sparc_002dDependent">9.44 SPARC Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-24" href="#Sparc_002dOpts">9.44.1 Options</a></li>
|
|
<li><a name="toc-Enforcing-aligned-data" href="#Sparc_002dAligned_002dData">9.44.2 Enforcing aligned data</a></li>
|
|
<li><a name="toc-Sparc-Syntax" href="#Sparc_002dSyntax">9.44.3 Sparc Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-35" href="#Sparc_002dChars">9.44.3.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-16" href="#Sparc_002dRegs">9.44.3.2 Register Names</a></li>
|
|
<li><a name="toc-Constants-2" href="#Sparc_002dConstants">9.44.3.3 Constants</a></li>
|
|
<li><a name="toc-Relocations-4" href="#Sparc_002dRelocs">9.44.3.4 Relocations</a></li>
|
|
<li><a name="toc-Size-Translations" href="#Sparc_002dSize_002dTranslations">9.44.3.5 Size Translations</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Floating-Point-15" href="#Sparc_002dFloat">9.44.4 Floating Point</a></li>
|
|
<li><a name="toc-Sparc-Machine-Directives" href="#Sparc_002dDirectives">9.44.5 Sparc Machine Directives</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-TIC54X-Dependent-Features" href="#TIC54X_002dDependent">9.45 TIC54X Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-25" href="#TIC54X_002dOpts">9.45.1 Options</a></li>
|
|
<li><a name="toc-Blocking" href="#TIC54X_002dBlock">9.45.2 Blocking</a></li>
|
|
<li><a name="toc-Environment-Settings" href="#TIC54X_002dEnv">9.45.3 Environment Settings</a></li>
|
|
<li><a name="toc-Constants-Syntax" href="#TIC54X_002dConstants">9.45.4 Constants Syntax</a></li>
|
|
<li><a name="toc-String-Substitution" href="#TIC54X_002dSubsyms">9.45.5 String Substitution</a></li>
|
|
<li><a name="toc-Local-Labels" href="#TIC54X_002dLocals">9.45.6 Local Labels</a></li>
|
|
<li><a name="toc-Math-Builtins" href="#TIC54X_002dBuiltins">9.45.7 Math Builtins</a></li>
|
|
<li><a name="toc-Extended-Addressing" href="#TIC54X_002dExt">9.45.8 Extended Addressing</a></li>
|
|
<li><a name="toc-Directives-2" href="#TIC54X_002dDirectives">9.45.9 Directives</a></li>
|
|
<li><a name="toc-Macros-1" href="#TIC54X_002dMacros">9.45.10 Macros</a></li>
|
|
<li><a name="toc-Memory_002dmapped-Registers" href="#TIC54X_002dMMRegs">9.45.11 Memory-mapped Registers</a></li>
|
|
<li><a name="toc-TIC54X-Syntax" href="#TIC54X_002dSyntax">9.45.12 TIC54X Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-36" href="#TIC54X_002dChars">9.45.12.1 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-TIC6X-Dependent-Features" href="#TIC6X_002dDependent">9.46 TIC6X Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-TIC6X-Options-1" href="#TIC6X-Options">9.46.1 TIC6X Options</a></li>
|
|
<li><a name="toc-TIC6X-Syntax-1" href="#TIC6X-Syntax">9.46.2 TIC6X Syntax</a></li>
|
|
<li><a name="toc-TIC6X-Directives-1" href="#TIC6X-Directives">9.46.3 TIC6X Directives</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-TILE_002dGx-Dependent-Features" href="#TILE_002dGx_002dDependent">9.47 TILE-Gx Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-26" href="#TILE_002dGx-Options">9.47.1 Options</a></li>
|
|
<li><a name="toc-Syntax-28" href="#TILE_002dGx-Syntax">9.47.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Opcode-Names" href="#TILE_002dGx-Opcodes">9.47.2.1 Opcode Names</a></li>
|
|
<li><a name="toc-Register-Names-17" href="#TILE_002dGx-Registers">9.47.2.2 Register Names</a></li>
|
|
<li><a name="toc-Symbolic-Operand-Modifiers-4" href="#TILE_002dGx-Modifiers">9.47.2.3 Symbolic Operand Modifiers</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-TILE_002dGx-Directives-1" href="#TILE_002dGx-Directives">9.47.3 TILE-Gx Directives</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-TILEPro-Dependent-Features" href="#TILEPro_002dDependent">9.48 TILEPro Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-27" href="#TILEPro-Options">9.48.1 Options</a></li>
|
|
<li><a name="toc-Syntax-29" href="#TILEPro-Syntax">9.48.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Opcode-Names-1" href="#TILEPro-Opcodes">9.48.2.1 Opcode Names</a></li>
|
|
<li><a name="toc-Register-Names-18" href="#TILEPro-Registers">9.48.2.2 Register Names</a></li>
|
|
<li><a name="toc-Symbolic-Operand-Modifiers-5" href="#TILEPro-Modifiers">9.48.2.3 Symbolic Operand Modifiers</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-TILEPro-Directives-1" href="#TILEPro-Directives">9.48.3 TILEPro Directives</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-v850-Dependent-Features" href="#V850_002dDependent">9.49 v850 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-28" href="#V850-Options">9.49.1 Options</a></li>
|
|
<li><a name="toc-Syntax-30" href="#V850-Syntax">9.49.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-37" href="#V850_002dChars">9.49.2.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-19" href="#V850_002dRegs">9.49.2.2 Register Names</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Floating-Point-16" href="#V850-Floating-Point">9.49.3 Floating Point</a></li>
|
|
<li><a name="toc-V850-Machine-Directives" href="#V850-Directives">9.49.4 V850 Machine Directives</a></li>
|
|
<li><a name="toc-Opcodes-19" href="#V850-Opcodes">9.49.5 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-VAX-Dependent-Features" href="#Vax_002dDependent">9.50 VAX Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-VAX-Command_002dLine-Options" href="#VAX_002dOpts">9.50.1 VAX Command-Line Options</a></li>
|
|
<li><a name="toc-VAX-Floating-Point" href="#VAX_002dfloat">9.50.2 VAX Floating Point</a></li>
|
|
<li><a name="toc-Vax-Machine-Directives" href="#VAX_002ddirectives">9.50.3 Vax Machine Directives</a></li>
|
|
<li><a name="toc-VAX-Opcodes" href="#VAX_002dopcodes">9.50.4 VAX Opcodes</a></li>
|
|
<li><a name="toc-VAX-Branch-Improvement" href="#VAX_002dbranch">9.50.5 VAX Branch Improvement</a></li>
|
|
<li><a name="toc-VAX-Operands" href="#VAX_002doperands">9.50.6 VAX Operands</a></li>
|
|
<li><a name="toc-Not-Supported-on-VAX" href="#VAX_002dno">9.50.7 Not Supported on VAX</a></li>
|
|
<li><a name="toc-VAX-Syntax" href="#VAX_002dSyntax">9.50.8 VAX Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-38" href="#VAX_002dChars">9.50.8.1 Special Characters</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-Visium-Dependent-Features" href="#Visium_002dDependent">9.51 Visium Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-29" href="#Visium-Options">9.51.1 Options</a></li>
|
|
<li><a name="toc-Syntax-31" href="#Visium-Syntax">9.51.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-39" href="#Visium-Characters">9.51.2.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-20" href="#Visium-Registers">9.51.2.2 Register Names</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Opcodes-20" href="#Visium-Opcodes">9.51.3 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-WebAssembly-Dependent-Features" href="#WebAssembly_002dDependent">9.52 WebAssembly Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Notes-3" href="#WebAssembly_002dNotes">9.52.1 Notes</a></li>
|
|
<li><a name="toc-Syntax-32" href="#WebAssembly_002dSyntax">9.52.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-40" href="#WebAssembly_002dChars">9.52.2.1 Special Characters</a></li>
|
|
<li><a name="toc-Relocations-5" href="#WebAssembly_002dRelocs">9.52.2.2 Relocations</a></li>
|
|
<li><a name="toc-Signatures" href="#WebAssembly_002dSignatures">9.52.2.3 Signatures</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Floating-Point-17" href="#WebAssembly_002dFloating_002dPoint">9.52.3 Floating Point</a></li>
|
|
<li><a name="toc-Regular-Opcodes" href="#WebAssembly_002dOpcodes">9.52.4 Regular Opcodes</a></li>
|
|
<li><a name="toc-WebAssembly-Module-Layout" href="#WebAssembly_002dmodule_002dlayout">9.52.5 WebAssembly Module Layout</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-XGATE-Dependent-Features" href="#XGATE_002dDependent">9.53 XGATE Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-XGATE-Options" href="#XGATE_002dOpts">9.53.1 XGATE Options</a></li>
|
|
<li><a name="toc-Syntax-33" href="#XGATE_002dSyntax">9.53.2 Syntax</a></li>
|
|
<li><a name="toc-Assembler-Directives-8" href="#XGATE_002dDirectives">9.53.3 Assembler Directives</a></li>
|
|
<li><a name="toc-Floating-Point-18" href="#XGATE_002dFloat">9.53.4 Floating Point</a></li>
|
|
<li><a name="toc-Opcodes-21" href="#XGATE_002dopcodes">9.53.5 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-XStormy16-Dependent-Features" href="#XSTORMY16_002dDependent">9.54 XStormy16 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Syntax-34" href="#XStormy16-Syntax">9.54.1 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-41" href="#XStormy16_002dChars">9.54.1.1 Special Characters</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-XStormy16-Machine-Directives" href="#XStormy16-Directives">9.54.2 XStormy16 Machine Directives</a></li>
|
|
<li><a name="toc-XStormy16-Pseudo_002dOpcodes" href="#XStormy16-Opcodes">9.54.3 XStormy16 Pseudo-Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Xtensa-Dependent-Features" href="#Xtensa_002dDependent">9.55 Xtensa Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Command_002dline-Options-2" href="#Xtensa-Options">9.55.1 Command-line Options</a></li>
|
|
<li><a name="toc-Assembler-Syntax" href="#Xtensa-Syntax">9.55.2 Assembler Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Opcode-Names-2" href="#Xtensa-Opcodes">9.55.2.1 Opcode Names</a></li>
|
|
<li><a name="toc-Register-Names-21" href="#Xtensa-Registers">9.55.2.2 Register Names</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Xtensa-Optimizations-1" href="#Xtensa-Optimizations">9.55.3 Xtensa Optimizations</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Using-Density-Instructions" href="#Density-Instructions">9.55.3.1 Using Density Instructions</a></li>
|
|
<li><a name="toc-Automatic-Instruction-Alignment" href="#Xtensa-Automatic-Alignment">9.55.3.2 Automatic Instruction Alignment</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Xtensa-Relaxation-1" href="#Xtensa-Relaxation">9.55.4 Xtensa Relaxation</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Conditional-Branch-Relaxation" href="#Xtensa-Branch-Relaxation">9.55.4.1 Conditional Branch Relaxation</a></li>
|
|
<li><a name="toc-Function-Call-Relaxation" href="#Xtensa-Call-Relaxation">9.55.4.2 Function Call Relaxation</a></li>
|
|
<li><a name="toc-Jump-Relaxation" href="#Xtensa-Jump-Relaxation">9.55.4.3 Jump Relaxation</a></li>
|
|
<li><a name="toc-Other-Immediate-Field-Relaxation" href="#Xtensa-Immediate-Relaxation">9.55.4.4 Other Immediate Field Relaxation</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Directives-3" href="#Xtensa-Directives">9.55.5 Directives</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-schedule" href="#Schedule-Directive">9.55.5.1 schedule</a></li>
|
|
<li><a name="toc-longcalls" href="#Longcalls-Directive">9.55.5.2 longcalls</a></li>
|
|
<li><a name="toc-transform" href="#Transform-Directive">9.55.5.3 transform</a></li>
|
|
<li><a name="toc-literal" href="#Literal-Directive">9.55.5.4 literal</a></li>
|
|
<li><a name="toc-literal_005fposition" href="#Literal-Position-Directive">9.55.5.5 literal_position</a></li>
|
|
<li><a name="toc-literal_005fprefix" href="#Literal-Prefix-Directive">9.55.5.6 literal_prefix</a></li>
|
|
<li><a name="toc-absolute_002dliterals" href="#Absolute-Literals-Directive">9.55.5.7 absolute-literals</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-Z80-Dependent-Features" href="#Z80_002dDependent">9.56 Z80 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Command_002dline-Options-3" href="#Z80-Options">9.56.1 Command-line Options</a></li>
|
|
<li><a name="toc-Syntax-35" href="#Z80-Syntax">9.56.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-42" href="#Z80_002dChars">9.56.2.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-22" href="#Z80_002dRegs">9.56.2.2 Register Names</a></li>
|
|
<li><a name="toc-Case-Sensitivity" href="#Z80_002dCase">9.56.2.3 Case Sensitivity</a></li>
|
|
<li><a name="toc-Labels-2" href="#Z80_002dLabels">9.56.2.4 Labels</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Floating-Point-19" href="#Z80-Floating-Point">9.56.3 Floating Point</a></li>
|
|
<li><a name="toc-Z80-Assembler-Directives" href="#Z80-Directives">9.56.4 Z80 Assembler Directives</a></li>
|
|
<li><a name="toc-Opcodes-22" href="#Z80-Opcodes">9.56.5 Opcodes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Z8000-Dependent-Features" href="#Z8000_002dDependent">9.57 Z8000 Dependent Features</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Options-30" href="#Z8000-Options">9.57.1 Options</a></li>
|
|
<li><a name="toc-Syntax-36" href="#Z8000-Syntax">9.57.2 Syntax</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Special-Characters-43" href="#Z8000_002dChars">9.57.2.1 Special Characters</a></li>
|
|
<li><a name="toc-Register-Names-23" href="#Z8000_002dRegs">9.57.2.2 Register Names</a></li>
|
|
<li><a name="toc-Addressing-Modes-5" href="#Z8000_002dAddressing">9.57.2.3 Addressing Modes</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Assembler-Directives-for-the-Z8000" href="#Z8000-Directives">9.57.3 Assembler Directives for the Z8000</a></li>
|
|
<li><a name="toc-Opcodes-23" href="#Z8000-Opcodes">9.57.4 Opcodes</a></li>
|
|
</ul></li>
|
|
</ul></li>
|
|
<li><a name="toc-Reporting-Bugs-1" href="#Reporting-Bugs">10 Reporting Bugs</a>
|
|
<ul class="no-bullet">
|
|
<li><a name="toc-Have-You-Found-a-Bug_003f" href="#Bug-Criteria">10.1 Have You Found a Bug?</a></li>
|
|
<li><a name="toc-How-to-Report-Bugs" href="#Bug-Reporting">10.2 How to Report Bugs</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Acknowledgements-1" href="#Acknowledgements">11 Acknowledgements</a></li>
|
|
<li><a name="toc-GNU-Free-Documentation-License-1" href="#GNU-Free-Documentation-License">Appendix A GNU Free Documentation License</a></li>
|
|
<li><a name="toc-AS-Index-1" href="#AS-Index">AS Index</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
<a name="Top"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Overview" accesskey="n" rel="next">Overview</a>, Up: <a href="dir.html#Top" accesskey="u" rel="up">(dir)</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Using-as"></a>
|
|
<h1 class="top">Using as</h1>
|
|
|
|
<p>This file is a user guide to the <small>GNU</small> assembler <code>as</code>
|
|
(Arm GNU Toolchain 12.2.Rel1 (Build arm-12.24))
|
|
version 2.39.0.
|
|
</p>
|
|
<p>This document is distributed under the terms of the GNU Free
|
|
Documentation License. A copy of the license is included in the
|
|
section entitled “GNU Free Documentation License”.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Overview" accesskey="1">Overview</a>:</td><td> </td><td align="left" valign="top">Overview
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Invoking" accesskey="2">Invoking</a>:</td><td> </td><td align="left" valign="top">Command-Line Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Syntax" accesskey="3">Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Sections" accesskey="4">Sections</a>:</td><td> </td><td align="left" valign="top">Sections and Relocation
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Symbols" accesskey="5">Symbols</a>:</td><td> </td><td align="left" valign="top">Symbols
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Expressions" accesskey="6">Expressions</a>:</td><td> </td><td align="left" valign="top">Expressions
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Pseudo-Ops" accesskey="7">Pseudo Ops</a>:</td><td> </td><td align="left" valign="top">Assembler Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Object-Attributes" accesskey="8">Object Attributes</a>:</td><td> </td><td align="left" valign="top">Object Attributes
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Machine-Dependencies" accesskey="9">Machine Dependencies</a>:</td><td> </td><td align="left" valign="top">Machine Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Reporting-Bugs">Reporting Bugs</a>:</td><td> </td><td align="left" valign="top">Reporting Bugs
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Acknowledgements">Acknowledgements</a>:</td><td> </td><td align="left" valign="top">Who Did What
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#GNU-Free-Documentation-License">GNU Free Documentation License</a>:</td><td> </td><td align="left" valign="top">GNU Free Documentation License
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AS-Index">AS Index</a>:</td><td> </td><td align="left" valign="top">AS Index
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Overview"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Invoking" accesskey="n" rel="next">Invoking</a>, Previous: <a href="#Top" accesskey="p" rel="previous">Top</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Overview-1"></a>
|
|
<h2 class="chapter">1 Overview</h2>
|
|
|
|
<a name="index-invocation-summary"></a>
|
|
<a name="index-option-summary"></a>
|
|
<a name="index-summary-of-options"></a>
|
|
<p>Here is a brief summary of how to invoke <code>as</code>. For details,
|
|
see <a href="#Invoking">Command-Line Options</a>.
|
|
</p>
|
|
|
|
|
|
<div class="smallexample">
|
|
<pre class="smallexample">as [<b>-a</b>[<b>cdghlns</b>][=<var>file</var>]] [<b>–alternate</b>] [<b>-D</b>]
|
|
[<b>–compress-debug-sections</b>] [<b>–nocompress-debug-sections</b>]
|
|
[<b>–debug-prefix-map</b> <var>old</var>=<var>new</var>]
|
|
[<b>–defsym</b> <var>sym</var>=<var>val</var>] [<b>-f</b>] [<b>-g</b>] [<b>–gstabs</b>]
|
|
[<b>–gstabs+</b>] [<b>–gdwarf-<N></b>] [<b>–gdwarf-sections</b>]
|
|
[<b>–gdwarf-cie-version</b>=<var>VERSION</var>]
|
|
[<b>–help</b>] [<b>-I</b> <var>dir</var>] [<b>-J</b>]
|
|
[<b>-K</b>] [<b>-L</b>] [<b>–listing-lhs-width</b>=<var>NUM</var>]
|
|
[<b>–listing-lhs-width2</b>=<var>NUM</var>] [<b>–listing-rhs-width</b>=<var>NUM</var>]
|
|
[<b>–listing-cont-lines</b>=<var>NUM</var>] [<b>–keep-locals</b>]
|
|
[<b>–no-pad-sections</b>]
|
|
[<b>-o</b> <var>objfile</var>] [<b>-R</b>]
|
|
[<b>–statistics</b>]
|
|
[<b>-v</b>] [<b>-version</b>] [<b>–version</b>]
|
|
[<b>-W</b>] [<b>–warn</b>] [<b>–fatal-warnings</b>] [<b>-w</b>] [<b>-x</b>]
|
|
[<b>-Z</b>] [<b>@<var>FILE</var></b>]
|
|
[<b>–sectname-subst</b>] [<b>–size-check=[error|warning]</b>]
|
|
[<b>–elf-stt-common=[no|yes]</b>]
|
|
[<b>–generate-missing-build-notes=[no|yes]</b>]
|
|
[<b>–multibyte-handling=[allow|warn|warn-sym-only]</b>]
|
|
[<b>–target-help</b>] [<var>target-options</var>]
|
|
[<b>–</b>|<var>files</var> …]
|
|
|
|
<em>Target AArch64 options:</em>
|
|
[<b>-EB</b>|<b>-EL</b>]
|
|
[<b>-mabi</b>=<var>ABI</var>]
|
|
|
|
<em>Target Alpha options:</em>
|
|
[<b>-m<var>cpu</var></b>]
|
|
[<b>-mdebug</b> | <b>-no-mdebug</b>]
|
|
[<b>-replace</b> | <b>-noreplace</b>]
|
|
[<b>-relax</b>] [<b>-g</b>] [<b>-G<var>size</var></b>]
|
|
[<b>-F</b>] [<b>-32addr</b>]
|
|
|
|
<em>Target ARC options:</em>
|
|
[<b>-mcpu=<var>cpu</var></b>]
|
|
[<b>-mA6</b>|<b>-mARC600</b>|<b>-mARC601</b>|<b>-mA7</b>|<b>-mARC700</b>|<b>-mEM</b>|<b>-mHS</b>]
|
|
[<b>-mcode-density</b>]
|
|
[<b>-mrelax</b>]
|
|
[<b>-EB</b>|<b>-EL</b>]
|
|
|
|
<em>Target ARM options:</em>
|
|
[<b>-mcpu</b>=<var>processor</var>[+<var>extension</var>…]]
|
|
[<b>-march</b>=<var>architecture</var>[+<var>extension</var>…]]
|
|
[<b>-mfpu</b>=<var>floating-point-format</var>]
|
|
[<b>-mfloat-abi</b>=<var>abi</var>]
|
|
[<b>-meabi</b>=<var>ver</var>]
|
|
[<b>-mthumb</b>]
|
|
[<b>-EB</b>|<b>-EL</b>]
|
|
[<b>-mapcs-32</b>|<b>-mapcs-26</b>|<b>-mapcs-float</b>|
|
|
<b>-mapcs-reentrant</b>]
|
|
[<b>-mthumb-interwork</b>] [<b>-k</b>]
|
|
|
|
<em>Target Blackfin options:</em>
|
|
[<b>-mcpu</b>=<var>processor</var>[-<var>sirevision</var>]]
|
|
[<b>-mfdpic</b>]
|
|
[<b>-mno-fdpic</b>]
|
|
[<b>-mnopic</b>]
|
|
|
|
<em>Target BPF options:</em>
|
|
[<b>-EL</b>] [<b>-EB</b>]
|
|
|
|
<em>Target CRIS options:</em>
|
|
[<b>–underscore</b> | <b>–no-underscore</b>]
|
|
[<b>–pic</b>] [<b>-N</b>]
|
|
[<b>–emulation=criself</b> | <b>–emulation=crisaout</b>]
|
|
[<b>–march=v0_v10</b> | <b>–march=v10</b> | <b>–march=v32</b> | <b>–march=common_v10_v32</b>]
|
|
|
|
<em>Target C-SKY options:</em>
|
|
[<b>-march=<var>arch</var></b>] [<b>-mcpu=<var>cpu</var></b>]
|
|
[<b>-EL</b>] [<b>-mlittle-endian</b>] [<b>-EB</b>] [<b>-mbig-endian</b>]
|
|
[<b>-fpic</b>] [<b>-pic</b>]
|
|
[<b>-mljump</b>] [<b>-mno-ljump</b>]
|
|
[<b>-force2bsr</b>] [<b>-mforce2bsr</b>] [<b>-no-force2bsr</b>] [<b>-mno-force2bsr</b>]
|
|
[<b>-jsri2bsr</b>] [<b>-mjsri2bsr</b>] [<b>-no-jsri2bsr </b>] [<b>-mno-jsri2bsr</b>]
|
|
[<b>-mnolrw </b>] [<b>-mno-lrw</b>]
|
|
[<b>-melrw</b>] [<b>-mno-elrw</b>]
|
|
[<b>-mlaf </b>] [<b>-mliterals-after-func</b>]
|
|
[<b>-mno-laf</b>] [<b>-mno-literals-after-func</b>]
|
|
[<b>-mlabr</b>] [<b>-mliterals-after-br</b>]
|
|
[<b>-mno-labr</b>] [<b>-mnoliterals-after-br</b>]
|
|
[<b>-mistack</b>] [<b>-mno-istack</b>]
|
|
[<b>-mhard-float</b>] [<b>-mmp</b>] [<b>-mcp</b>] [<b>-mcache</b>]
|
|
[<b>-msecurity</b>] [<b>-mtrust</b>]
|
|
[<b>-mdsp</b>] [<b>-medsp</b>] [<b>-mvdsp</b>]
|
|
|
|
<em>Target D10V options:</em>
|
|
[<b>-O</b>]
|
|
|
|
<em>Target D30V options:</em>
|
|
[<b>-O</b>|<b>-n</b>|<b>-N</b>]
|
|
|
|
<em>Target EPIPHANY options:</em>
|
|
[<b>-mepiphany</b>|<b>-mepiphany16</b>]
|
|
|
|
<em>Target H8/300 options:</em>
|
|
[-h-tick-hex]
|
|
|
|
<em>Target i386 options:</em>
|
|
[<b>–32</b>|<b>–x32</b>|<b>–64</b>] [<b>-n</b>]
|
|
[<b>-march</b>=<var>CPU</var>[+<var>EXTENSION</var>…]] [<b>-mtune</b>=<var>CPU</var>]
|
|
|
|
<em>Target IA-64 options:</em>
|
|
[<b>-mconstant-gp</b>|<b>-mauto-pic</b>]
|
|
[<b>-milp32</b>|<b>-milp64</b>|<b>-mlp64</b>|<b>-mp64</b>]
|
|
[<b>-mle</b>|<b>mbe</b>]
|
|
[<b>-mtune=itanium1</b>|<b>-mtune=itanium2</b>]
|
|
[<b>-munwind-check=warning</b>|<b>-munwind-check=error</b>]
|
|
[<b>-mhint.b=ok</b>|<b>-mhint.b=warning</b>|<b>-mhint.b=error</b>]
|
|
[<b>-x</b>|<b>-xexplicit</b>] [<b>-xauto</b>] [<b>-xdebug</b>]
|
|
|
|
<em>Target IP2K options:</em>
|
|
[<b>-mip2022</b>|<b>-mip2022ext</b>]
|
|
|
|
<em>Target M32C options:</em>
|
|
[<b>-m32c</b>|<b>-m16c</b>] [-relax] [-h-tick-hex]
|
|
|
|
<em>Target M32R options:</em>
|
|
[<b>–m32rx</b>|<b>–[no-]warn-explicit-parallel-conflicts</b>|
|
|
<b>–W[n]p</b>]
|
|
|
|
<em>Target M680X0 options:</em>
|
|
[<b>-l</b>] [<b>-m68000</b>|<b>-m68010</b>|<b>-m68020</b>|…]
|
|
|
|
<em>Target M68HC11 options:</em>
|
|
[<b>-m68hc11</b>|<b>-m68hc12</b>|<b>-m68hcs12</b>|<b>-mm9s12x</b>|<b>-mm9s12xg</b>]
|
|
[<b>-mshort</b>|<b>-mlong</b>]
|
|
[<b>-mshort-double</b>|<b>-mlong-double</b>]
|
|
[<b>–force-long-branches</b>] [<b>–short-branches</b>]
|
|
[<b>–strict-direct-mode</b>] [<b>–print-insn-syntax</b>]
|
|
[<b>–print-opcodes</b>] [<b>–generate-example</b>]
|
|
|
|
<em>Target MCORE options:</em>
|
|
[<b>-jsri2bsr</b>] [<b>-sifilter</b>] [<b>-relax</b>]
|
|
[<b>-mcpu=[210|340]</b>]
|
|
|
|
<em>Target Meta options:</em>
|
|
[<b>-mcpu=<var>cpu</var></b>] [<b>-mfpu=<var>cpu</var></b>] [<b>-mdsp=<var>cpu</var></b>]
|
|
<em>Target MICROBLAZE options:</em>
|
|
|
|
<em>Target MIPS options:</em>
|
|
[<b>-nocpp</b>] [<b>-EL</b>] [<b>-EB</b>] [<b>-O</b>[<var>optimization level</var>]]
|
|
[<b>-g</b>[<var>debug level</var>]] [<b>-G</b> <var>num</var>] [<b>-KPIC</b>] [<b>-call_shared</b>]
|
|
[<b>-non_shared</b>] [<b>-xgot</b> [<b>-mvxworks-pic</b>]
|
|
[<b>-mabi</b>=<var>ABI</var>] [<b>-32</b>] [<b>-n32</b>] [<b>-64</b>] [<b>-mfp32</b>] [<b>-mgp32</b>]
|
|
[<b>-mfp64</b>] [<b>-mgp64</b>] [<b>-mfpxx</b>]
|
|
[<b>-modd-spreg</b>] [<b>-mno-odd-spreg</b>]
|
|
[<b>-march</b>=<var>CPU</var>] [<b>-mtune</b>=<var>CPU</var>] [<b>-mips1</b>] [<b>-mips2</b>]
|
|
[<b>-mips3</b>] [<b>-mips4</b>] [<b>-mips5</b>] [<b>-mips32</b>] [<b>-mips32r2</b>]
|
|
[<b>-mips32r3</b>] [<b>-mips32r5</b>] [<b>-mips32r6</b>] [<b>-mips64</b>] [<b>-mips64r2</b>]
|
|
[<b>-mips64r3</b>] [<b>-mips64r5</b>] [<b>-mips64r6</b>]
|
|
[<b>-construct-floats</b>] [<b>-no-construct-floats</b>]
|
|
[<b>-mignore-branch-isa</b>] [<b>-mno-ignore-branch-isa</b>]
|
|
[<b>-mnan=<var>encoding</var></b>]
|
|
[<b>-trap</b>] [<b>-no-break</b>] [<b>-break</b>] [<b>-no-trap</b>]
|
|
[<b>-mips16</b>] [<b>-no-mips16</b>]
|
|
[<b>-mmips16e2</b>] [<b>-mno-mips16e2</b>]
|
|
[<b>-mmicromips</b>] [<b>-mno-micromips</b>]
|
|
[<b>-msmartmips</b>] [<b>-mno-smartmips</b>]
|
|
[<b>-mips3d</b>] [<b>-no-mips3d</b>]
|
|
[<b>-mdmx</b>] [<b>-no-mdmx</b>]
|
|
[<b>-mdsp</b>] [<b>-mno-dsp</b>]
|
|
[<b>-mdspr2</b>] [<b>-mno-dspr2</b>]
|
|
[<b>-mdspr3</b>] [<b>-mno-dspr3</b>]
|
|
[<b>-mmsa</b>] [<b>-mno-msa</b>]
|
|
[<b>-mxpa</b>] [<b>-mno-xpa</b>]
|
|
[<b>-mmt</b>] [<b>-mno-mt</b>]
|
|
[<b>-mmcu</b>] [<b>-mno-mcu</b>]
|
|
[<b>-mcrc</b>] [<b>-mno-crc</b>]
|
|
[<b>-mginv</b>] [<b>-mno-ginv</b>]
|
|
[<b>-mloongson-mmi</b>] [<b>-mno-loongson-mmi</b>]
|
|
[<b>-mloongson-cam</b>] [<b>-mno-loongson-cam</b>]
|
|
[<b>-mloongson-ext</b>] [<b>-mno-loongson-ext</b>]
|
|
[<b>-mloongson-ext2</b>] [<b>-mno-loongson-ext2</b>]
|
|
[<b>-minsn32</b>] [<b>-mno-insn32</b>]
|
|
[<b>-mfix7000</b>] [<b>-mno-fix7000</b>]
|
|
[<b>-mfix-rm7000</b>] [<b>-mno-fix-rm7000</b>]
|
|
[<b>-mfix-vr4120</b>] [<b>-mno-fix-vr4120</b>]
|
|
[<b>-mfix-vr4130</b>] [<b>-mno-fix-vr4130</b>]
|
|
[<b>-mfix-r5900</b>] [<b>-mno-fix-r5900</b>]
|
|
[<b>-mdebug</b>] [<b>-no-mdebug</b>]
|
|
[<b>-mpdr</b>] [<b>-mno-pdr</b>]
|
|
|
|
<em>Target MMIX options:</em>
|
|
[<b>–fixed-special-register-names</b>] [<b>–globalize-symbols</b>]
|
|
[<b>–gnu-syntax</b>] [<b>–relax</b>] [<b>–no-predefined-symbols</b>]
|
|
[<b>–no-expand</b>] [<b>–no-merge-gregs</b>] [<b>-x</b>]
|
|
[<b>–linker-allocated-gregs</b>]
|
|
|
|
<em>Target Nios II options:</em>
|
|
[<b>-relax-all</b>] [<b>-relax-section</b>] [<b>-no-relax</b>]
|
|
[<b>-EB</b>] [<b>-EL</b>]
|
|
|
|
<em>Target NDS32 options:</em>
|
|
[<b>-EL</b>] [<b>-EB</b>] [<b>-O</b>] [<b>-Os</b>] [<b>-mcpu=<var>cpu</var></b>]
|
|
[<b>-misa=<var>isa</var></b>] [<b>-mabi=<var>abi</var></b>] [<b>-mall-ext</b>]
|
|
[<b>-m[no-]16-bit</b>] [<b>-m[no-]perf-ext</b>] [<b>-m[no-]perf2-ext</b>]
|
|
[<b>-m[no-]string-ext</b>] [<b>-m[no-]dsp-ext</b>] [<b>-m[no-]mac</b>] [<b>-m[no-]div</b>]
|
|
[<b>-m[no-]audio-isa-ext</b>] [<b>-m[no-]fpu-sp-ext</b>] [<b>-m[no-]fpu-dp-ext</b>]
|
|
[<b>-m[no-]fpu-fma</b>] [<b>-mfpu-freg=<var>FREG</var></b>] [<b>-mreduced-regs</b>]
|
|
[<b>-mfull-regs</b>] [<b>-m[no-]dx-regs</b>] [<b>-mpic</b>] [<b>-mno-relax</b>]
|
|
[<b>-mb2bb</b>]
|
|
|
|
<em>Target PDP11 options:</em>
|
|
[<b>-mpic</b>|<b>-mno-pic</b>] [<b>-mall</b>] [<b>-mno-extensions</b>]
|
|
[<b>-m</b><var>extension</var>|<b>-mno-</b><var>extension</var>]
|
|
[<b>-m</b><var>cpu</var>] [<b>-m</b><var>machine</var>]
|
|
|
|
<em>Target picoJava options:</em>
|
|
[<b>-mb</b>|<b>-me</b>]
|
|
|
|
<em>Target PowerPC options:</em>
|
|
[<b>-a32</b>|<b>-a64</b>]
|
|
[<b>-mpwrx</b>|<b>-mpwr2</b>|<b>-mpwr</b>|<b>-m601</b>|<b>-mppc</b>|<b>-mppc32</b>|<b>-m603</b>|<b>-m604</b>|<b>-m403</b>|<b>-m405</b>|
|
|
<b>-m440</b>|<b>-m464</b>|<b>-m476</b>|<b>-m7400</b>|<b>-m7410</b>|<b>-m7450</b>|<b>-m7455</b>|<b>-m750cl</b>|<b>-mgekko</b>|
|
|
<b>-mbroadway</b>|<b>-mppc64</b>|<b>-m620</b>|<b>-me500</b>|<b>-e500x2</b>|<b>-me500mc</b>|<b>-me500mc64</b>|<b>-me5500</b>|
|
|
<b>-me6500</b>|<b>-mppc64bridge</b>|<b>-mbooke</b>|<b>-mpower4</b>|<b>-mpwr4</b>|<b>-mpower5</b>|<b>-mpwr5</b>|<b>-mpwr5x</b>|
|
|
<b>-mpower6</b>|<b>-mpwr6</b>|<b>-mpower7</b>|<b>-mpwr7</b>|<b>-mpower8</b>|<b>-mpwr8</b>|<b>-mpower9</b>|<b>-mpwr9</b><b>-ma2</b>|
|
|
<b>-mcell</b>|<b>-mspe</b>|<b>-mspe2</b>|<b>-mtitan</b>|<b>-me300</b>|<b>-mcom</b>]
|
|
[<b>-many</b>] [<b>-maltivec</b>|<b>-mvsx</b>|<b>-mhtm</b>|<b>-mvle</b>]
|
|
[<b>-mregnames</b>|<b>-mno-regnames</b>]
|
|
[<b>-mrelocatable</b>|<b>-mrelocatable-lib</b>|<b>-K PIC</b>] [<b>-memb</b>]
|
|
[<b>-mlittle</b>|<b>-mlittle-endian</b>|<b>-le</b>|<b>-mbig</b>|<b>-mbig-endian</b>|<b>-be</b>]
|
|
[<b>-msolaris</b>|<b>-mno-solaris</b>]
|
|
[<b>-nops=<var>count</var></b>]
|
|
|
|
<em>Target PRU options:</em>
|
|
[<b>-link-relax</b>]
|
|
[<b>-mnolink-relax</b>]
|
|
[<b>-mno-warn-regname-label</b>]
|
|
|
|
<em>Target RISC-V options:</em>
|
|
[<b>-fpic</b>|<b>-fPIC</b>|<b>-fno-pic</b>]
|
|
[<b>-march</b>=<var>ISA</var>]
|
|
[<b>-mabi</b>=<var>ABI</var>]
|
|
[<b>-mlittle-endian</b>|<b>-mbig-endian</b>]
|
|
|
|
<em>Target RL78 options:</em>
|
|
[<b>-mg10</b>]
|
|
[<b>-m32bit-doubles</b>|<b>-m64bit-doubles</b>]
|
|
|
|
<em>Target RX options:</em>
|
|
[<b>-mlittle-endian</b>|<b>-mbig-endian</b>]
|
|
[<b>-m32bit-doubles</b>|<b>-m64bit-doubles</b>]
|
|
[<b>-muse-conventional-section-names</b>]
|
|
[<b>-msmall-data-limit</b>]
|
|
[<b>-mpid</b>]
|
|
[<b>-mrelax</b>]
|
|
[<b>-mint-register=<var>number</var></b>]
|
|
[<b>-mgcc-abi</b>|<b>-mrx-abi</b>]
|
|
|
|
<em>Target s390 options:</em>
|
|
[<b>-m31</b>|<b>-m64</b>] [<b>-mesa</b>|<b>-mzarch</b>] [<b>-march</b>=<var>CPU</var>]
|
|
[<b>-mregnames</b>|<b>-mno-regnames</b>]
|
|
[<b>-mwarn-areg-zero</b>]
|
|
|
|
<em>Target SCORE options:</em>
|
|
[<b>-EB</b>][<b>-EL</b>][<b>-FIXDD</b>][<b>-NWARN</b>]
|
|
[<b>-SCORE5</b>][<b>-SCORE5U</b>][<b>-SCORE7</b>][<b>-SCORE3</b>]
|
|
[<b>-march=score7</b>][<b>-march=score3</b>]
|
|
[<b>-USE_R1</b>][<b>-KPIC</b>][<b>-O0</b>][<b>-G</b> <var>num</var>][<b>-V</b>]
|
|
|
|
<em>Target SPARC options:</em>
|
|
[<b>-Av6</b>|<b>-Av7</b>|<b>-Av8</b>|<b>-Aleon</b>|<b>-Asparclet</b>|<b>-Asparclite</b>
|
|
<b>-Av8plus</b>|<b>-Av8plusa</b>|<b>-Av8plusb</b>|<b>-Av8plusc</b>|<b>-Av8plusd</b>
|
|
<b>-Av8plusv</b>|<b>-Av8plusm</b>|<b>-Av9</b>|<b>-Av9a</b>|<b>-Av9b</b>|<b>-Av9c</b>
|
|
<b>-Av9d</b>|<b>-Av9e</b>|<b>-Av9v</b>|<b>-Av9m</b>|<b>-Asparc</b>|<b>-Asparcvis</b>
|
|
<b>-Asparcvis2</b>|<b>-Asparcfmaf</b>|<b>-Asparcima</b>|<b>-Asparcvis3</b>
|
|
<b>-Asparcvisr</b>|<b>-Asparc5</b>]
|
|
[<b>-xarch=v8plus</b>|<b>-xarch=v8plusa</b>]|<b>-xarch=v8plusb</b>|<b>-xarch=v8plusc</b>
|
|
<b>-xarch=v8plusd</b>|<b>-xarch=v8plusv</b>|<b>-xarch=v8plusm</b>|<b>-xarch=v9</b>
|
|
<b>-xarch=v9a</b>|<b>-xarch=v9b</b>|<b>-xarch=v9c</b>|<b>-xarch=v9d</b>|<b>-xarch=v9e</b>
|
|
<b>-xarch=v9v</b>|<b>-xarch=v9m</b>|<b>-xarch=sparc</b>|<b>-xarch=sparcvis</b>
|
|
<b>-xarch=sparcvis2</b>|<b>-xarch=sparcfmaf</b>|<b>-xarch=sparcima</b>
|
|
<b>-xarch=sparcvis3</b>|<b>-xarch=sparcvisr</b>|<b>-xarch=sparc5</b>
|
|
<b>-bump</b>]
|
|
[<b>-32</b>|<b>-64</b>]
|
|
[<b>–enforce-aligned-data</b>][<b>–dcti-couples-detect</b>]
|
|
|
|
<em>Target TIC54X options:</em>
|
|
[<b>-mcpu=54[123589]</b>|<b>-mcpu=54[56]lp</b>] [<b>-mfar-mode</b>|<b>-mf</b>]
|
|
[<b>-merrors-to-file</b> <var><filename></var>|<b>-me</b> <var><filename></var>]
|
|
|
|
<em>Target TIC6X options:</em>
|
|
[<b>-march=<var>arch</var></b>] [<b>-mbig-endian</b>|<b>-mlittle-endian</b>]
|
|
[<b>-mdsbt</b>|<b>-mno-dsbt</b>] [<b>-mpid=no</b>|<b>-mpid=near</b>|<b>-mpid=far</b>]
|
|
[<b>-mpic</b>|<b>-mno-pic</b>]
|
|
|
|
<em>Target TILE-Gx options:</em>
|
|
[<b>-m32</b>|<b>-m64</b>][<b>-EB</b>][<b>-EL</b>]
|
|
|
|
<em>Target Visium options:</em>
|
|
[<b>-mtune=<var>arch</var></b>]
|
|
|
|
<em>Target Xtensa options:</em>
|
|
[<b>–[no-]text-section-literals</b>] [<b>–[no-]auto-litpools</b>]
|
|
[<b>–[no-]absolute-literals</b>]
|
|
[<b>–[no-]target-align</b>] [<b>–[no-]longcalls</b>]
|
|
[<b>–[no-]transform</b>]
|
|
[<b>–rename-section</b> <var>oldname</var>=<var>newname</var>]
|
|
[<b>–[no-]trampolines</b>]
|
|
[<b>–abi-windowed</b>|<b>–abi-call0</b>]
|
|
|
|
<em>Target Z80 options:</em>
|
|
[<b>-march=<var>CPU</var><var>[-EXT]</var><var>[+EXT]</var></b>]
|
|
[<b>-local-prefix=</b><var>PREFIX</var>]
|
|
[<b>-colonless</b>]
|
|
[<b>-sdcc</b>]
|
|
[<b>-fp-s=</b><var>FORMAT</var>]
|
|
[<b>-fp-d=</b><var>FORMAT</var>]
|
|
|
|
|
|
</pre></div>
|
|
|
|
|
|
<dl compact="compact">
|
|
<dt><code>@<var>file</var></code></dt>
|
|
<dd><p>Read command-line options from <var>file</var>. The options read are
|
|
inserted in place of the original @<var>file</var> option. If <var>file</var>
|
|
does not exist, or cannot be read, then the option will be treated
|
|
literally, and not removed.
|
|
</p>
|
|
<p>Options in <var>file</var> are separated by whitespace. A whitespace
|
|
character may be included in an option by surrounding the entire
|
|
option in either single or double quotes. Any character (including a
|
|
backslash) may be included by prefixing the character to be included
|
|
with a backslash. The <var>file</var> may itself contain additional
|
|
@<var>file</var> options; any such options will be processed recursively.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-a[cdghlmns]</code></dt>
|
|
<dd><p>Turn on listings, in any of a variety of ways:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-ac</code></dt>
|
|
<dd><p>omit false conditionals
|
|
</p>
|
|
</dd>
|
|
<dt><code>-ad</code></dt>
|
|
<dd><p>omit debugging directives
|
|
</p>
|
|
</dd>
|
|
<dt><code>-ag</code></dt>
|
|
<dd><p>include general information, like as version and options passed
|
|
</p>
|
|
</dd>
|
|
<dt><code>-ah</code></dt>
|
|
<dd><p>include high-level source
|
|
</p>
|
|
</dd>
|
|
<dt><code>-al</code></dt>
|
|
<dd><p>include assembly
|
|
</p>
|
|
</dd>
|
|
<dt><code>-am</code></dt>
|
|
<dd><p>include macro expansions
|
|
</p>
|
|
</dd>
|
|
<dt><code>-an</code></dt>
|
|
<dd><p>omit forms processing
|
|
</p>
|
|
</dd>
|
|
<dt><code>-as</code></dt>
|
|
<dd><p>include symbols
|
|
</p>
|
|
</dd>
|
|
<dt><code>=file</code></dt>
|
|
<dd><p>set the name of the listing file
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>You may combine these options; for example, use ‘<samp>-aln</samp>’ for assembly
|
|
listing without forms processing. The ‘<samp>=file</samp>’ option, if used, must be
|
|
the last one. By itself, ‘<samp>-a</samp>’ defaults to ‘<samp>-ahls</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--alternate</code></dt>
|
|
<dd><p>Begin in alternate macro mode.
|
|
See <a href="#Altmacro"><code>.altmacro</code></a>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--compress-debug-sections</code></dt>
|
|
<dd><p>Compress DWARF debug sections using zlib with SHF_COMPRESSED from the
|
|
ELF ABI. The resulting object file may not be compatible with older
|
|
linkers and object file utilities. Note if compression would make a
|
|
given section <em>larger</em> then it is not compressed.
|
|
</p>
|
|
<a name="index-_002d_002dcompress_002ddebug_002dsections_003d-option"></a>
|
|
</dd>
|
|
<dt><code>--compress-debug-sections=none</code></dt>
|
|
<dt><code>--compress-debug-sections=zlib</code></dt>
|
|
<dt><code>--compress-debug-sections=zlib-gnu</code></dt>
|
|
<dt><code>--compress-debug-sections=zlib-gabi</code></dt>
|
|
<dd><p>These options control how DWARF debug sections are compressed.
|
|
<samp>--compress-debug-sections=none</samp> is equivalent to
|
|
<samp>--nocompress-debug-sections</samp>.
|
|
<samp>--compress-debug-sections=zlib</samp> and
|
|
<samp>--compress-debug-sections=zlib-gabi</samp> are equivalent to
|
|
<samp>--compress-debug-sections</samp>.
|
|
<samp>--compress-debug-sections=zlib-gnu</samp> compresses DWARF debug
|
|
sections using zlib. The debug sections are renamed to begin with
|
|
‘<samp>.zdebug</samp>’. Note if compression would make a given section
|
|
<em>larger</em> then it is not compressed nor renamed.
|
|
</p>
|
|
|
|
</dd>
|
|
<dt><code>--nocompress-debug-sections</code></dt>
|
|
<dd><p>Do not compress DWARF debug sections. This is usually the default for all
|
|
targets except the x86/x86_64, but a configure time option can be used to
|
|
override this.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-D</code></dt>
|
|
<dd><p>Ignored. This option is accepted for script compatibility with calls to
|
|
other assemblers.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--debug-prefix-map <var>old</var>=<var>new</var></code></dt>
|
|
<dd><p>When assembling files in directory <samp><var>old</var></samp>, record debugging
|
|
information describing them as in <samp><var>new</var></samp> instead.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--defsym <var>sym</var>=<var>value</var></code></dt>
|
|
<dd><p>Define the symbol <var>sym</var> to be <var>value</var> before assembling the input file.
|
|
<var>value</var> must be an integer constant. As in C, a leading ‘<samp>0x</samp>’
|
|
indicates a hexadecimal value, and a leading ‘<samp>0</samp>’ indicates an octal
|
|
value. The value of the symbol can be overridden inside a source file via the
|
|
use of a <code>.set</code> pseudo-op.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-f</code></dt>
|
|
<dd><p>“fast”—skip whitespace and comment preprocessing (assume source is
|
|
compiler output).
|
|
</p>
|
|
</dd>
|
|
<dt><code>-g</code></dt>
|
|
<dt><code>--gen-debug</code></dt>
|
|
<dd><p>Generate debugging information for each assembler source line using whichever
|
|
debug format is preferred by the target. This currently means either STABS,
|
|
ECOFF or DWARF2. When the debug format is DWARF then a <code>.debug_info</code> and
|
|
<code>.debug_line</code> section is only emitted when the assembly file doesn’t
|
|
generate one itself.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--gstabs</code></dt>
|
|
<dd><p>Generate stabs debugging information for each assembler line. This
|
|
may help debugging assembler code, if the debugger can handle it.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--gstabs+</code></dt>
|
|
<dd><p>Generate stabs debugging information for each assembler line, with GNU
|
|
extensions that probably only gdb can handle, and that could make other
|
|
debuggers crash or refuse to read your program. This
|
|
may help debugging assembler code. Currently the only GNU extension is
|
|
the location of the current working directory at assembling time.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--gdwarf-2</code></dt>
|
|
<dd><p>Generate DWARF2 debugging information for each assembler line. This
|
|
may help debugging assembler code, if the debugger can handle it. Note—this
|
|
option is only supported by some targets, not all of them.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--gdwarf-3</code></dt>
|
|
<dd><p>This option is the same as the <samp>--gdwarf-2</samp> option, except that it
|
|
allows for the possibility of the generation of extra debug information as per
|
|
version 3 of the DWARF specification. Note - enabling this option does not
|
|
guarantee the generation of any extra information, the choice to do so is on a
|
|
per target basis.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--gdwarf-4</code></dt>
|
|
<dd><p>This option is the same as the <samp>--gdwarf-2</samp> option, except that it
|
|
allows for the possibility of the generation of extra debug information as per
|
|
version 4 of the DWARF specification. Note - enabling this option does not
|
|
guarantee the generation of any extra information, the choice to do so is on a
|
|
per target basis.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--gdwarf-5</code></dt>
|
|
<dd><p>This option is the same as the <samp>--gdwarf-2</samp> option, except that it
|
|
allows for the possibility of the generation of extra debug information as per
|
|
version 5 of the DWARF specification. Note - enabling this option does not
|
|
guarantee the generation of any extra information, the choice to do so is on a
|
|
per target basis.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--gdwarf-sections</code></dt>
|
|
<dd><p>Instead of creating a .debug_line section, create a series of
|
|
.debug_line.<var>foo</var> sections where <var>foo</var> is the name of the
|
|
corresponding code section. For example a code section called <var>.text.func</var>
|
|
will have its dwarf line number information placed into a section called
|
|
<var>.debug_line.text.func</var>. If the code section is just called <var>.text</var>
|
|
then debug line section will still be called just <var>.debug_line</var> without any
|
|
suffix.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--gdwarf-cie-version=<var>version</var></code></dt>
|
|
<dd><p>Control which version of DWARF Common Information Entries (CIEs) are produced.
|
|
When this flag is not specificed the default is version 1, though some targets
|
|
can modify this default. Other possible values for <var>version</var> are 3 or 4.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--size-check=error</code></dt>
|
|
<dt><code>--size-check=warning</code></dt>
|
|
<dd><p>Issue an error or warning for invalid ELF .size directive.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--elf-stt-common=no</code></dt>
|
|
<dt><code>--elf-stt-common=yes</code></dt>
|
|
<dd><p>These options control whether the ELF assembler should generate common
|
|
symbols with the <code>STT_COMMON</code> type. The default can be controlled
|
|
by a configure option <samp>--enable-elf-stt-common</samp>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--generate-missing-build-notes=yes</code></dt>
|
|
<dt><code>--generate-missing-build-notes=no</code></dt>
|
|
<dd><p>These options control whether the ELF assembler should generate GNU Build
|
|
attribute notes if none are present in the input sources.
|
|
The default can be controlled by the <samp>--enable-generate-build-notes</samp>
|
|
configure option.
|
|
</p>
|
|
|
|
</dd>
|
|
<dt><code>--help</code></dt>
|
|
<dd><p>Print a summary of the command-line options and exit.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--target-help</code></dt>
|
|
<dd><p>Print a summary of all target specific options and exit.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-I <var>dir</var></code></dt>
|
|
<dd><p>Add directory <var>dir</var> to the search list for <code>.include</code> directives.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-J</code></dt>
|
|
<dd><p>Don’t warn about signed overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-K</code></dt>
|
|
<dd><p>Issue warnings when difference tables altered for long displacements.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-L</code></dt>
|
|
<dt><code>--keep-locals</code></dt>
|
|
<dd><p>Keep (in the symbol table) local symbols. These symbols start with
|
|
system-specific local label prefixes, typically ‘<samp>.L</samp>’ for ELF systems
|
|
or ‘<samp>L</samp>’ for traditional a.out systems.
|
|
See <a href="#Symbol-Names">Symbol Names</a>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--listing-lhs-width=<var>number</var></code></dt>
|
|
<dd><p>Set the maximum width, in words, of the output data column for an assembler
|
|
listing to <var>number</var>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--listing-lhs-width2=<var>number</var></code></dt>
|
|
<dd><p>Set the maximum width, in words, of the output data column for continuation
|
|
lines in an assembler listing to <var>number</var>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--listing-rhs-width=<var>number</var></code></dt>
|
|
<dd><p>Set the maximum width of an input source line, as displayed in a listing, to
|
|
<var>number</var> bytes.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--listing-cont-lines=<var>number</var></code></dt>
|
|
<dd><p>Set the maximum number of lines printed in a listing for a single line of input
|
|
to <var>number</var> + 1.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--multibyte-handling=allow</code></dt>
|
|
<dt><code>--multibyte-handling=warn</code></dt>
|
|
<dt><code>--multibyte-handling=warn-sym-only</code></dt>
|
|
<dd><p>Controls how the assembler handles multibyte characters in the input. The
|
|
default (which can be restored by using the <samp>allow</samp> argument) is to
|
|
allow such characters without complaint. Using the <samp>warn</samp> argument will
|
|
make the assembler generate a warning message whenever any multibyte character
|
|
is encountered. Using the <samp>warn-sym-only</samp> argument will only cause a
|
|
warning to be generated when a symbol is defined with a name that contains
|
|
multibyte characters. (References to undefined symbols will not generate a
|
|
warning).
|
|
</p>
|
|
</dd>
|
|
<dt><code>--no-pad-sections</code></dt>
|
|
<dd><p>Stop the assembler for padding the ends of output sections to the alignment
|
|
of that section. The default is to pad the sections, but this can waste space
|
|
which might be needed on targets which have tight memory constraints.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-o <var>objfile</var></code></dt>
|
|
<dd><p>Name the object-file output from <code>as</code> <var>objfile</var>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-R</code></dt>
|
|
<dd><p>Fold the data section into the text section.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--sectname-subst</code></dt>
|
|
<dd><p>Honor substitution sequences in section names.
|
|
See <a href="#Section-Name-Substitutions"><code>.section <var>name</var></code></a>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--statistics</code></dt>
|
|
<dd><p>Print the maximum space (in bytes) and total time (in seconds) used by
|
|
assembly.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--strip-local-absolute</code></dt>
|
|
<dd><p>Remove local absolute symbols from the outgoing symbol table.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-v</code></dt>
|
|
<dt><code>-version</code></dt>
|
|
<dd><p>Print the <code>as</code> version.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--version</code></dt>
|
|
<dd><p>Print the <code>as</code> version and exit.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-W</code></dt>
|
|
<dt><code>--no-warn</code></dt>
|
|
<dd><p>Suppress warning messages.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--fatal-warnings</code></dt>
|
|
<dd><p>Treat warnings as errors.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--warn</code></dt>
|
|
<dd><p>Don’t suppress warning messages or treat them as errors.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-w</code></dt>
|
|
<dd><p>Ignored.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-x</code></dt>
|
|
<dd><p>Ignored.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-Z</code></dt>
|
|
<dd><p>Generate an object file even after errors.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-- | <var>files</var> …</code></dt>
|
|
<dd><p>Standard input, or source files to assemble.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
<p>See <a href="#AArch64-Options">AArch64 Options</a>, for the options available when as is configured
|
|
for the 64-bit mode of the ARM Architecture (AArch64).
|
|
</p>
|
|
|
|
|
|
|
|
<p>See <a href="#Alpha-Options">Alpha Options</a>, for the options available when as is configured
|
|
for an Alpha processor.
|
|
</p>
|
|
|
|
|
|
<p>The following options are available when as is configured for an ARC
|
|
processor.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-mcpu=<var>cpu</var></code></dt>
|
|
<dd><p>This option selects the core processor variant.
|
|
</p></dd>
|
|
<dt><code>-EB | -EL</code></dt>
|
|
<dd><p>Select either big-endian (-EB) or little-endian (-EL) output.
|
|
</p></dd>
|
|
<dt><code>-mcode-density</code></dt>
|
|
<dd><p>Enable Code Density extension instructions.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The following options are available when as is configured for the ARM
|
|
processor family.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-mcpu=<var>processor</var>[+<var>extension</var>…]</code></dt>
|
|
<dd><p>Specify which ARM processor variant is the target.
|
|
</p></dd>
|
|
<dt><code>-march=<var>architecture</var>[+<var>extension</var>…]</code></dt>
|
|
<dd><p>Specify which ARM architecture variant is used by the target.
|
|
</p></dd>
|
|
<dt><code>-mfpu=<var>floating-point-format</var></code></dt>
|
|
<dd><p>Select which Floating Point architecture is the target.
|
|
</p></dd>
|
|
<dt><code>-mfloat-abi=<var>abi</var></code></dt>
|
|
<dd><p>Select which floating point ABI is in use.
|
|
</p></dd>
|
|
<dt><code>-mthumb</code></dt>
|
|
<dd><p>Enable Thumb only instruction decoding.
|
|
</p></dd>
|
|
<dt><code>-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant</code></dt>
|
|
<dd><p>Select which procedure calling convention is in use.
|
|
</p></dd>
|
|
<dt><code>-EB | -EL</code></dt>
|
|
<dd><p>Select either big-endian (-EB) or little-endian (-EL) output.
|
|
</p></dd>
|
|
<dt><code>-mthumb-interwork</code></dt>
|
|
<dd><p>Specify that the code has been generated with interworking between Thumb and
|
|
ARM code in mind.
|
|
</p></dd>
|
|
<dt><code>-mccs</code></dt>
|
|
<dd><p>Turns on CodeComposer Studio assembly syntax compatibility mode.
|
|
</p></dd>
|
|
<dt><code>-k</code></dt>
|
|
<dd><p>Specify that PIC code has been generated.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<p>See <a href="#Blackfin-Options">Blackfin Options</a>, for the options available when as is
|
|
configured for the Blackfin processor family.
|
|
</p>
|
|
|
|
|
|
|
|
<p>See <a href="#BPF-Options">BPF Options</a>, for the options available when as is
|
|
configured for the Linux kernel BPF processor family.
|
|
</p>
|
|
|
|
|
|
<p>See the info pages for documentation of the CRIS-specific options.
|
|
</p>
|
|
|
|
<p>See <a href="#C_002dSKY-Options">C-SKY Options</a>, for the options available when as is
|
|
configured for the C-SKY processor family.
|
|
</p>
|
|
|
|
|
|
<p>The following options are available when as is configured for
|
|
a D10V processor.
|
|
</p><dl compact="compact">
|
|
<dd><a name="index-D10V-optimization"></a>
|
|
<a name="index-optimization_002c-D10V"></a>
|
|
</dd>
|
|
<dt><code>-O</code></dt>
|
|
<dd><p>Optimize output by parallelizing instructions.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The following options are available when as is configured for a D30V
|
|
processor.
|
|
</p><dl compact="compact">
|
|
<dd><a name="index-D30V-optimization"></a>
|
|
<a name="index-optimization_002c-D30V"></a>
|
|
</dd>
|
|
<dt><code>-O</code></dt>
|
|
<dd><p>Optimize output by parallelizing instructions.
|
|
</p>
|
|
<a name="index-D30V-nops"></a>
|
|
</dd>
|
|
<dt><code>-n</code></dt>
|
|
<dd><p>Warn when nops are generated.
|
|
</p>
|
|
<a name="index-D30V-nops-after-32_002dbit-multiply"></a>
|
|
</dd>
|
|
<dt><code>-N</code></dt>
|
|
<dd><p>Warn when a nop after a 32-bit multiply instruction is generated.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The following options are available when as is configured for the
|
|
Adapteva EPIPHANY series.
|
|
</p>
|
|
<p>See <a href="#Epiphany-Options">Epiphany Options</a>, for the options available when as is
|
|
configured for an Epiphany processor.
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>See <a href="#i386_002dOptions">i386-Options</a>, for the options available when as is
|
|
configured for an i386 processor.
|
|
</p>
|
|
|
|
|
|
<p>The following options are available when as is configured for the
|
|
Ubicom IP2K series.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-mip2022ext</code></dt>
|
|
<dd><p>Specifies that the extended IP2022 instructions are allowed.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mip2022</code></dt>
|
|
<dd><p>Restores the default behaviour, which restricts the permitted instructions to
|
|
just the basic IP2022 ones.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The following options are available when as is configured for the
|
|
Renesas M32C and M16C processors.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-m32c</code></dt>
|
|
<dd><p>Assemble M32C instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m16c</code></dt>
|
|
<dd><p>Assemble M16C instructions (the default).
|
|
</p>
|
|
</dd>
|
|
<dt><code>-relax</code></dt>
|
|
<dd><p>Enable support for link-time relaxations.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-h-tick-hex</code></dt>
|
|
<dd><p>Support H’00 style hex constants in addition to 0x00 style.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The following options are available when as is configured for the
|
|
Renesas M32R (formerly Mitsubishi M32R) series.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>--m32rx</code></dt>
|
|
<dd><p>Specify which processor in the M32R family is the target. The default
|
|
is normally the M32R, but this option changes it to the M32RX.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--warn-explicit-parallel-conflicts or --Wp</code></dt>
|
|
<dd><p>Produce warning messages when questionable parallel constructs are
|
|
encountered.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--no-warn-explicit-parallel-conflicts or --Wnp</code></dt>
|
|
<dd><p>Do not produce warning messages when questionable parallel constructs are
|
|
encountered.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The following options are available when as is configured for the
|
|
Motorola 68000 series.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-l</code></dt>
|
|
<dd><p>Shorten references to undefined symbols, to one word instead of two.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m68000 | -m68008 | -m68010 | -m68020 | -m68030</code></dt>
|
|
<dt><code>| -m68040 | -m68060 | -m68302 | -m68331 | -m68332</code></dt>
|
|
<dt><code>| -m68333 | -m68340 | -mcpu32 | -m5200</code></dt>
|
|
<dd><p>Specify what processor in the 68000 family is the target. The default
|
|
is normally the 68020, but this can be changed at configuration time.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m68881 | -m68882 | -mno-68881 | -mno-68882</code></dt>
|
|
<dd><p>The target machine does (or does not) have a floating-point coprocessor.
|
|
The default is to assume a coprocessor for 68020, 68030, and cpu32. Although
|
|
the basic 68000 is not compatible with the 68881, a combination of the
|
|
two can be specified, since it’s possible to do emulation of the
|
|
coprocessor instructions with the main processor.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m68851 | -mno-68851</code></dt>
|
|
<dd><p>The target machine does (or does not) have a memory-management
|
|
unit coprocessor. The default is to assume an MMU for 68020 and up.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
<p>See <a href="#Nios-II-Options">Nios II Options</a>, for the options available when as is configured
|
|
for an Altera Nios II processor.
|
|
</p>
|
|
|
|
|
|
<p>For details about the PDP-11 machine dependent features options,
|
|
see <a href="#PDP_002d11_002dOptions">PDP-11-Options</a>.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-mpic | -mno-pic</code></dt>
|
|
<dd><p>Generate position-independent (or position-dependent) code. The
|
|
default is <samp>-mpic</samp>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mall</code></dt>
|
|
<dt><code>-mall-extensions</code></dt>
|
|
<dd><p>Enable all instruction set extensions. This is the default.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mno-extensions</code></dt>
|
|
<dd><p>Disable all instruction set extensions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m<var>extension</var> | -mno-<var>extension</var></code></dt>
|
|
<dd><p>Enable (or disable) a particular instruction set extension.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m<var>cpu</var></code></dt>
|
|
<dd><p>Enable the instruction set extensions supported by a particular CPU, and
|
|
disable all other extensions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m<var>machine</var></code></dt>
|
|
<dd><p>Enable the instruction set extensions supported by a particular machine
|
|
model, and disable all other extensions.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<p>The following options are available when as is configured for
|
|
a picoJava processor.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-PJ-endianness"></a>
|
|
<a name="index-endianness_002c-PJ"></a>
|
|
<a name="index-big-endian-output_002c-PJ"></a>
|
|
</dd>
|
|
<dt><code>-mb</code></dt>
|
|
<dd><p>Generate “big endian” format output.
|
|
</p>
|
|
<a name="index-little-endian-output_002c-PJ"></a>
|
|
</dd>
|
|
<dt><code>-ml</code></dt>
|
|
<dd><p>Generate “little endian” format output.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
<p>See <a href="#PRU-Options">PRU Options</a>, for the options available when as is configured
|
|
for a PRU processor.
|
|
</p>
|
|
|
|
<p>The following options are available when as is configured for the
|
|
Motorola 68HC11 or 68HC12 series.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-m68hc11 | -m68hc12 | -m68hcs12 | -mm9s12x | -mm9s12xg</code></dt>
|
|
<dd><p>Specify what processor is the target. The default is
|
|
defined by the configuration option when building the assembler.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--xgate-ramoffset</code></dt>
|
|
<dd><p>Instruct the linker to offset RAM addresses from S12X address space into
|
|
XGATE address space.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mshort</code></dt>
|
|
<dd><p>Specify to use the 16-bit integer ABI.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mlong</code></dt>
|
|
<dd><p>Specify to use the 32-bit integer ABI.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mshort-double</code></dt>
|
|
<dd><p>Specify to use the 32-bit double ABI.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mlong-double</code></dt>
|
|
<dd><p>Specify to use the 64-bit double ABI.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--force-long-branches</code></dt>
|
|
<dd><p>Relative branches are turned into absolute ones. This concerns
|
|
conditional branches, unconditional branches and branches to a
|
|
sub routine.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-S | --short-branches</code></dt>
|
|
<dd><p>Do not turn relative branches into absolute ones
|
|
when the offset is out of range.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--strict-direct-mode</code></dt>
|
|
<dd><p>Do not turn the direct addressing mode into extended addressing mode
|
|
when the instruction does not support direct addressing mode.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--print-insn-syntax</code></dt>
|
|
<dd><p>Print the syntax of instruction in case of error.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--print-opcodes</code></dt>
|
|
<dd><p>Print the list of instructions with syntax and then exit.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--generate-example</code></dt>
|
|
<dd><p>Print an example of instruction for each possible instruction and then exit.
|
|
This option is only useful for testing <code>as</code>.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The following options are available when <code>as</code> is configured
|
|
for the SPARC architecture:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite</code></dt>
|
|
<dt><code>-Av8plus | -Av8plusa | -Av9 | -Av9a</code></dt>
|
|
<dd><p>Explicitly select a variant of the SPARC architecture.
|
|
</p>
|
|
<p>‘<samp>-Av8plus</samp>’ and ‘<samp>-Av8plusa</samp>’ select a 32 bit environment.
|
|
‘<samp>-Av9</samp>’ and ‘<samp>-Av9a</samp>’ select a 64 bit environment.
|
|
</p>
|
|
<p>‘<samp>-Av8plusa</samp>’ and ‘<samp>-Av9a</samp>’ enable the SPARC V9 instruction set with
|
|
UltraSPARC extensions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-xarch=v8plus | -xarch=v8plusa</code></dt>
|
|
<dd><p>For compatibility with the Solaris v9 assembler. These options are
|
|
equivalent to -Av8plus and -Av8plusa, respectively.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-bump</code></dt>
|
|
<dd><p>Warn when the assembler switches to another architecture.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The following options are available when as is configured for the ’c54x
|
|
architecture.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-mfar-mode</code></dt>
|
|
<dd><p>Enable extended addressing mode. All addresses and relocations will assume
|
|
extended addressing (usually 23 bits).
|
|
</p></dd>
|
|
<dt><code>-mcpu=<var>CPU_VERSION</var></code></dt>
|
|
<dd><p>Sets the CPU version being compiled for.
|
|
</p></dd>
|
|
<dt><code>-merrors-to-file <var>FILENAME</var></code></dt>
|
|
<dd><p>Redirect error output to a file, for broken systems which don’t support such
|
|
behaviour in the shell.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The following options are available when as is configured for
|
|
a MIPS processor.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-G <var>num</var></code></dt>
|
|
<dd><p>This option sets the largest size of an object that can be referenced
|
|
implicitly with the <code>gp</code> register. It is only accepted for targets that
|
|
use ECOFF format, such as a DECstation running Ultrix. The default value is 8.
|
|
</p>
|
|
<a name="index-MIPS-endianness"></a>
|
|
<a name="index-endianness_002c-MIPS"></a>
|
|
<a name="index-big-endian-output_002c-MIPS"></a>
|
|
</dd>
|
|
<dt><code>-EB</code></dt>
|
|
<dd><p>Generate “big endian” format output.
|
|
</p>
|
|
<a name="index-little-endian-output_002c-MIPS"></a>
|
|
</dd>
|
|
<dt><code>-EL</code></dt>
|
|
<dd><p>Generate “little endian” format output.
|
|
</p>
|
|
<a name="index-MIPS-ISA"></a>
|
|
</dd>
|
|
<dt><code>-mips1</code></dt>
|
|
<dt><code>-mips2</code></dt>
|
|
<dt><code>-mips3</code></dt>
|
|
<dt><code>-mips4</code></dt>
|
|
<dt><code>-mips5</code></dt>
|
|
<dt><code>-mips32</code></dt>
|
|
<dt><code>-mips32r2</code></dt>
|
|
<dt><code>-mips32r3</code></dt>
|
|
<dt><code>-mips32r5</code></dt>
|
|
<dt><code>-mips32r6</code></dt>
|
|
<dt><code>-mips64</code></dt>
|
|
<dt><code>-mips64r2</code></dt>
|
|
<dt><code>-mips64r3</code></dt>
|
|
<dt><code>-mips64r5</code></dt>
|
|
<dt><code>-mips64r6</code></dt>
|
|
<dd><p>Generate code for a particular MIPS Instruction Set Architecture level.
|
|
‘<samp>-mips1</samp>’ is an alias for ‘<samp>-march=r3000</samp>’, ‘<samp>-mips2</samp>’ is an
|
|
alias for ‘<samp>-march=r6000</samp>’, ‘<samp>-mips3</samp>’ is an alias for
|
|
‘<samp>-march=r4000</samp>’ and ‘<samp>-mips4</samp>’ is an alias for ‘<samp>-march=r8000</samp>’.
|
|
‘<samp>-mips5</samp>’, ‘<samp>-mips32</samp>’, ‘<samp>-mips32r2</samp>’, ‘<samp>-mips32r3</samp>’,
|
|
‘<samp>-mips32r5</samp>’, ‘<samp>-mips32r6</samp>’, ‘<samp>-mips64</samp>’, ‘<samp>-mips64r2</samp>’,
|
|
‘<samp>-mips64r3</samp>’, ‘<samp>-mips64r5</samp>’, and ‘<samp>-mips64r6</samp>’ correspond to generic
|
|
MIPS V, MIPS32, MIPS32 Release 2, MIPS32 Release 3, MIPS32 Release 5, MIPS32
|
|
Release 6, MIPS64, MIPS64 Release 2, MIPS64 Release 3, MIPS64 Release 5, and
|
|
MIPS64 Release 6 ISA processors, respectively.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-march=<var>cpu</var></code></dt>
|
|
<dd><p>Generate code for a particular MIPS CPU.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mtune=<var>cpu</var></code></dt>
|
|
<dd><p>Schedule and tune for a particular MIPS CPU.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfix7000</code></dt>
|
|
<dt><code>-mno-fix7000</code></dt>
|
|
<dd><p>Cause nops to be inserted if the read of the destination register
|
|
of an mfhi or mflo instruction occurs in the following two instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfix-rm7000</code></dt>
|
|
<dt><code>-mno-fix-rm7000</code></dt>
|
|
<dd><p>Cause nops to be inserted if a dmult or dmultu instruction is
|
|
followed by a load instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfix-r5900</code></dt>
|
|
<dt><code>-mno-fix-r5900</code></dt>
|
|
<dd><p>Do not attempt to schedule the preceding instruction into the delay slot
|
|
of a branch instruction placed at the end of a short loop of six
|
|
instructions or fewer and always schedule a <code>nop</code> instruction there
|
|
instead. The short loop bug under certain conditions causes loops to
|
|
execute only once or twice, due to a hardware bug in the R5900 chip.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mdebug</code></dt>
|
|
<dt><code>-no-mdebug</code></dt>
|
|
<dd><p>Cause stabs-style debugging output to go into an ECOFF-style .mdebug
|
|
section instead of the standard ELF .stabs sections.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mpdr</code></dt>
|
|
<dt><code>-mno-pdr</code></dt>
|
|
<dd><p>Control generation of <code>.pdr</code> sections.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mgp32</code></dt>
|
|
<dt><code>-mfp32</code></dt>
|
|
<dd><p>The register sizes are normally inferred from the ISA and ABI, but these
|
|
flags force a certain group of registers to be treated as 32 bits wide at
|
|
all times. ‘<samp>-mgp32</samp>’ controls the size of general-purpose registers
|
|
and ‘<samp>-mfp32</samp>’ controls the size of floating-point registers.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mgp64</code></dt>
|
|
<dt><code>-mfp64</code></dt>
|
|
<dd><p>The register sizes are normally inferred from the ISA and ABI, but these
|
|
flags force a certain group of registers to be treated as 64 bits wide at
|
|
all times. ‘<samp>-mgp64</samp>’ controls the size of general-purpose registers
|
|
and ‘<samp>-mfp64</samp>’ controls the size of floating-point registers.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfpxx</code></dt>
|
|
<dd><p>The register sizes are normally inferred from the ISA and ABI, but using
|
|
this flag in combination with ‘<samp>-mabi=32</samp>’ enables an ABI variant
|
|
which will operate correctly with floating-point registers which are
|
|
32 or 64 bits wide.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-modd-spreg</code></dt>
|
|
<dt><code>-mno-odd-spreg</code></dt>
|
|
<dd><p>Enable use of floating-point operations on odd-numbered single-precision
|
|
registers when supported by the ISA. ‘<samp>-mfpxx</samp>’ implies
|
|
‘<samp>-mno-odd-spreg</samp>’, otherwise the default is ‘<samp>-modd-spreg</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mips16</code></dt>
|
|
<dt><code>-no-mips16</code></dt>
|
|
<dd><p>Generate code for the MIPS 16 processor. This is equivalent to putting
|
|
<code>.module mips16</code> at the start of the assembly file. ‘<samp>-no-mips16</samp>’
|
|
turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mmips16e2</code></dt>
|
|
<dt><code>-mno-mips16e2</code></dt>
|
|
<dd><p>Enable the use of MIPS16e2 instructions in MIPS16 mode. This is equivalent
|
|
to putting <code>.module mips16e2</code> at the start of the assembly file.
|
|
‘<samp>-mno-mips16e2</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mmicromips</code></dt>
|
|
<dt><code>-mno-micromips</code></dt>
|
|
<dd><p>Generate code for the microMIPS processor. This is equivalent to putting
|
|
<code>.module micromips</code> at the start of the assembly file.
|
|
‘<samp>-mno-micromips</samp>’ turns off this option. This is equivalent to putting
|
|
<code>.module nomicromips</code> at the start of the assembly file.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-msmartmips</code></dt>
|
|
<dt><code>-mno-smartmips</code></dt>
|
|
<dd><p>Enables the SmartMIPS extension to the MIPS32 instruction set. This is
|
|
equivalent to putting <code>.module smartmips</code> at the start of the assembly
|
|
file. ‘<samp>-mno-smartmips</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mips3d</code></dt>
|
|
<dt><code>-no-mips3d</code></dt>
|
|
<dd><p>Generate code for the MIPS-3D Application Specific Extension.
|
|
This tells the assembler to accept MIPS-3D instructions.
|
|
‘<samp>-no-mips3d</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mdmx</code></dt>
|
|
<dt><code>-no-mdmx</code></dt>
|
|
<dd><p>Generate code for the MDMX Application Specific Extension.
|
|
This tells the assembler to accept MDMX instructions.
|
|
‘<samp>-no-mdmx</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mdsp</code></dt>
|
|
<dt><code>-mno-dsp</code></dt>
|
|
<dd><p>Generate code for the DSP Release 1 Application Specific Extension.
|
|
This tells the assembler to accept DSP Release 1 instructions.
|
|
‘<samp>-mno-dsp</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mdspr2</code></dt>
|
|
<dt><code>-mno-dspr2</code></dt>
|
|
<dd><p>Generate code for the DSP Release 2 Application Specific Extension.
|
|
This option implies ‘<samp>-mdsp</samp>’.
|
|
This tells the assembler to accept DSP Release 2 instructions.
|
|
‘<samp>-mno-dspr2</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mdspr3</code></dt>
|
|
<dt><code>-mno-dspr3</code></dt>
|
|
<dd><p>Generate code for the DSP Release 3 Application Specific Extension.
|
|
This option implies ‘<samp>-mdsp</samp>’ and ‘<samp>-mdspr2</samp>’.
|
|
This tells the assembler to accept DSP Release 3 instructions.
|
|
‘<samp>-mno-dspr3</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mmsa</code></dt>
|
|
<dt><code>-mno-msa</code></dt>
|
|
<dd><p>Generate code for the MIPS SIMD Architecture Extension.
|
|
This tells the assembler to accept MSA instructions.
|
|
‘<samp>-mno-msa</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mxpa</code></dt>
|
|
<dt><code>-mno-xpa</code></dt>
|
|
<dd><p>Generate code for the MIPS eXtended Physical Address (XPA) Extension.
|
|
This tells the assembler to accept XPA instructions.
|
|
‘<samp>-mno-xpa</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mmt</code></dt>
|
|
<dt><code>-mno-mt</code></dt>
|
|
<dd><p>Generate code for the MT Application Specific Extension.
|
|
This tells the assembler to accept MT instructions.
|
|
‘<samp>-mno-mt</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mmcu</code></dt>
|
|
<dt><code>-mno-mcu</code></dt>
|
|
<dd><p>Generate code for the MCU Application Specific Extension.
|
|
This tells the assembler to accept MCU instructions.
|
|
‘<samp>-mno-mcu</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mcrc</code></dt>
|
|
<dt><code>-mno-crc</code></dt>
|
|
<dd><p>Generate code for the MIPS cyclic redundancy check (CRC) Application
|
|
Specific Extension. This tells the assembler to accept CRC instructions.
|
|
‘<samp>-mno-crc</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mginv</code></dt>
|
|
<dt><code>-mno-ginv</code></dt>
|
|
<dd><p>Generate code for the Global INValidate (GINV) Application Specific
|
|
Extension. This tells the assembler to accept GINV instructions.
|
|
‘<samp>-mno-ginv</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mloongson-mmi</code></dt>
|
|
<dt><code>-mno-loongson-mmi</code></dt>
|
|
<dd><p>Generate code for the Loongson MultiMedia extensions Instructions (MMI)
|
|
Application Specific Extension. This tells the assembler to accept MMI
|
|
instructions.
|
|
‘<samp>-mno-loongson-mmi</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mloongson-cam</code></dt>
|
|
<dt><code>-mno-loongson-cam</code></dt>
|
|
<dd><p>Generate code for the Loongson Content Address Memory (CAM) instructions.
|
|
This tells the assembler to accept Loongson CAM instructions.
|
|
‘<samp>-mno-loongson-cam</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mloongson-ext</code></dt>
|
|
<dt><code>-mno-loongson-ext</code></dt>
|
|
<dd><p>Generate code for the Loongson EXTensions (EXT) instructions.
|
|
This tells the assembler to accept Loongson EXT instructions.
|
|
‘<samp>-mno-loongson-ext</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mloongson-ext2</code></dt>
|
|
<dt><code>-mno-loongson-ext2</code></dt>
|
|
<dd><p>Generate code for the Loongson EXTensions R2 (EXT2) instructions.
|
|
This option implies ‘<samp>-mloongson-ext</samp>’.
|
|
This tells the assembler to accept Loongson EXT2 instructions.
|
|
‘<samp>-mno-loongson-ext2</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-minsn32</code></dt>
|
|
<dt><code>-mno-insn32</code></dt>
|
|
<dd><p>Only use 32-bit instruction encodings when generating code for the
|
|
microMIPS processor. This option inhibits the use of any 16-bit
|
|
instructions. This is equivalent to putting <code>.set insn32</code> at
|
|
the start of the assembly file. ‘<samp>-mno-insn32</samp>’ turns off this
|
|
option. This is equivalent to putting <code>.set noinsn32</code> at the
|
|
start of the assembly file. By default ‘<samp>-mno-insn32</samp>’ is
|
|
selected, allowing all instructions to be used.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--construct-floats</code></dt>
|
|
<dt><code>--no-construct-floats</code></dt>
|
|
<dd><p>The ‘<samp>--no-construct-floats</samp>’ option disables the construction of
|
|
double width floating point constants by loading the two halves of the
|
|
value into the two single width floating point registers that make up
|
|
the double width register. By default ‘<samp>--construct-floats</samp>’ is
|
|
selected, allowing construction of these floating point constants.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--relax-branch</code></dt>
|
|
<dt><code>--no-relax-branch</code></dt>
|
|
<dd><p>The ‘<samp>--relax-branch</samp>’ option enables the relaxation of out-of-range
|
|
branches. By default ‘<samp>--no-relax-branch</samp>’ is selected, causing any
|
|
out-of-range branches to produce an error.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mignore-branch-isa</code></dt>
|
|
<dt><code>-mno-ignore-branch-isa</code></dt>
|
|
<dd><p>Ignore branch checks for invalid transitions between ISA modes. The
|
|
semantics of branches does not provide for an ISA mode switch, so in
|
|
most cases the ISA mode a branch has been encoded for has to be the
|
|
same as the ISA mode of the branch’s target label. Therefore GAS has
|
|
checks implemented that verify in branch assembly that the two ISA
|
|
modes match. ‘<samp>-mignore-branch-isa</samp>’ disables these checks. By
|
|
default ‘<samp>-mno-ignore-branch-isa</samp>’ is selected, causing any invalid
|
|
branch requiring a transition between ISA modes to produce an error.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mnan=<var>encoding</var></code></dt>
|
|
<dd><p>Select between the IEEE 754-2008 (<samp>-mnan=2008</samp>) or the legacy
|
|
(<samp>-mnan=legacy</samp>) NaN encoding format. The latter is the default.
|
|
</p>
|
|
<a name="index-emulation"></a>
|
|
</dd>
|
|
<dt><code>--emulation=<var>name</var></code></dt>
|
|
<dd><p>This option was formerly used to switch between ELF and ECOFF output
|
|
on targets like IRIX 5 that supported both. MIPS ECOFF support was
|
|
removed in GAS 2.24, so the option now serves little purpose.
|
|
It is retained for backwards compatibility.
|
|
</p>
|
|
<p>The available configuration names are: ‘<samp>mipself</samp>’, ‘<samp>mipslelf</samp>’ and
|
|
‘<samp>mipsbelf</samp>’. Choosing ‘<samp>mipself</samp>’ now has no effect, since the output
|
|
is always ELF. ‘<samp>mipslelf</samp>’ and ‘<samp>mipsbelf</samp>’ select little- and
|
|
big-endian output respectively, but ‘<samp>-EL</samp>’ and ‘<samp>-EB</samp>’ are now the
|
|
preferred options instead.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-nocpp</code></dt>
|
|
<dd><p><code>as</code> ignores this option. It is accepted for compatibility with
|
|
the native tools.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--trap</code></dt>
|
|
<dt><code>--no-trap</code></dt>
|
|
<dt><code>--break</code></dt>
|
|
<dt><code>--no-break</code></dt>
|
|
<dd><p>Control how to deal with multiplication overflow and division by zero.
|
|
‘<samp>--trap</samp>’ or ‘<samp>--no-break</samp>’ (which are synonyms) take a trap exception
|
|
(and only work for Instruction Set Architecture level 2 and higher);
|
|
‘<samp>--break</samp>’ or ‘<samp>--no-trap</samp>’ (also synonyms, and the default) take a
|
|
break exception.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-n</code></dt>
|
|
<dd><p>When this option is used, <code>as</code> will issue a warning every
|
|
time it generates a nop instruction from a macro.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The following options are available when as is configured for
|
|
an MCore processor.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-jsri2bsr</code></dt>
|
|
<dt><code>-nojsri2bsr</code></dt>
|
|
<dd><p>Enable or disable the JSRI to BSR transformation. By default this is enabled.
|
|
The command-line option ‘<samp>-nojsri2bsr</samp>’ can be used to disable it.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-sifilter</code></dt>
|
|
<dt><code>-nosifilter</code></dt>
|
|
<dd><p>Enable or disable the silicon filter behaviour. By default this is disabled.
|
|
The default can be overridden by the ‘<samp>-sifilter</samp>’ command-line option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-relax</code></dt>
|
|
<dd><p>Alter jump instructions for long displacements.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mcpu=[210|340]</code></dt>
|
|
<dd><p>Select the cpu type on the target hardware. This controls which instructions
|
|
can be assembled.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-EB</code></dt>
|
|
<dd><p>Assemble for a big endian target.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-EL</code></dt>
|
|
<dd><p>Assemble for a little endian target.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
|
|
<p>See <a href="#Meta-Options">Meta Options</a>, for the options available when as is configured
|
|
for a Meta processor.
|
|
</p>
|
|
|
|
|
|
<p>See the info pages for documentation of the MMIX-specific options.
|
|
</p>
|
|
|
|
<p>See <a href="#NDS32-Options">NDS32 Options</a>, for the options available when as is configured
|
|
for a NDS32 processor.
|
|
</p>
|
|
|
|
|
|
<p>See <a href="#PowerPC_002dOpts">PowerPC-Opts</a>, for the options available when as is configured
|
|
for a PowerPC processor.
|
|
</p>
|
|
|
|
|
|
|
|
<p>See <a href="#RISC_002dV_002dOptions">RISC-V-Options</a>, for the options available when as is configured
|
|
for a RISC-V processor.
|
|
</p>
|
|
|
|
|
|
<p>See the info pages for documentation of the RX-specific options.
|
|
</p>
|
|
<p>The following options are available when as is configured for the s390
|
|
processor family.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-m31</code></dt>
|
|
<dt><code>-m64</code></dt>
|
|
<dd><p>Select the word size, either 31/32 bits or 64 bits.
|
|
</p></dd>
|
|
<dt><code>-mesa</code></dt>
|
|
<dt><code>-mzarch</code></dt>
|
|
<dd><p>Select the architecture mode, either the Enterprise System
|
|
Architecture (esa) or the z/Architecture mode (zarch).
|
|
</p></dd>
|
|
<dt><code>-march=<var>processor</var></code></dt>
|
|
<dd><p>Specify which s390 processor variant is the target, ‘<samp>g5</samp>’ (or
|
|
‘<samp>arch3</samp>’), ‘<samp>g6</samp>’, ‘<samp>z900</samp>’ (or ‘<samp>arch5</samp>’), ‘<samp>z990</samp>’ (or
|
|
‘<samp>arch6</samp>’), ‘<samp>z9-109</samp>’, ‘<samp>z9-ec</samp>’ (or ‘<samp>arch7</samp>’), ‘<samp>z10</samp>’ (or
|
|
‘<samp>arch8</samp>’), ‘<samp>z196</samp>’ (or ‘<samp>arch9</samp>’), ‘<samp>zEC12</samp>’ (or ‘<samp>arch10</samp>’),
|
|
‘<samp>z13</samp>’ (or ‘<samp>arch11</samp>’), ‘<samp>z14</samp>’ (or ‘<samp>arch12</samp>’), ‘<samp>z15</samp>’
|
|
(or ‘<samp>arch13</samp>’), or ‘<samp>z16</samp>’ (or ‘<samp>arch14</samp>’).
|
|
</p></dd>
|
|
<dt><code>-mregnames</code></dt>
|
|
<dt><code>-mno-regnames</code></dt>
|
|
<dd><p>Allow or disallow symbolic names for registers.
|
|
</p></dd>
|
|
<dt><code>-mwarn-areg-zero</code></dt>
|
|
<dd><p>Warn whenever the operand for a base or index register has been specified
|
|
but evaluates to zero.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<p>See <a href="#TIC6X-Options">TIC6X Options</a>, for the options available when as is configured
|
|
for a TMS320C6000 processor.
|
|
</p>
|
|
|
|
|
|
|
|
<p>See <a href="#TILE_002dGx-Options">TILE-Gx Options</a>, for the options available when as is configured
|
|
for a TILE-Gx processor.
|
|
</p>
|
|
|
|
|
|
|
|
<p>See <a href="#Visium-Options">Visium Options</a>, for the options available when as is configured
|
|
for a Visium processor.
|
|
</p>
|
|
|
|
|
|
|
|
<p>See <a href="#Xtensa-Options">Xtensa Options</a>, for the options available when as is configured
|
|
for an Xtensa processor.
|
|
</p>
|
|
|
|
|
|
|
|
<p>See <a href="#Z80-Options">Z80 Options</a>, for the options available when as is configured
|
|
for an Z80 processor.
|
|
</p>
|
|
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Manual" accesskey="1">Manual</a>:</td><td> </td><td align="left" valign="top">Structure of this Manual
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#GNU-Assembler" accesskey="2">GNU Assembler</a>:</td><td> </td><td align="left" valign="top">The GNU Assembler
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Object-Formats" accesskey="3">Object Formats</a>:</td><td> </td><td align="left" valign="top">Object File Formats
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Command-Line" accesskey="4">Command Line</a>:</td><td> </td><td align="left" valign="top">Command Line
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Input-Files" accesskey="5">Input Files</a>:</td><td> </td><td align="left" valign="top">Input Files
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Object" accesskey="6">Object</a>:</td><td> </td><td align="left" valign="top">Output (Object) File
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Errors" accesskey="7">Errors</a>:</td><td> </td><td align="left" valign="top">Error and Warning Messages
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Manual"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#GNU-Assembler" accesskey="n" rel="next">GNU Assembler</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Structure-of-this-Manual"></a>
|
|
<h3 class="section">1.1 Structure of this Manual</h3>
|
|
|
|
<a name="index-manual_002c-structure-and-purpose"></a>
|
|
<p>This manual is intended to describe what you need to know to use
|
|
<small>GNU</small> <code>as</code>. We cover the syntax expected in source files, including
|
|
notation for symbols, constants, and expressions; the directives that
|
|
<code>as</code> understands; and of course how to invoke <code>as</code>.
|
|
</p>
|
|
<p>This manual also describes some of the machine-dependent features of
|
|
various flavors of the assembler.
|
|
</p>
|
|
<a name="index-machine-instructions-_0028not-covered_0029"></a>
|
|
<p>On the other hand, this manual is <em>not</em> intended as an introduction
|
|
to programming in assembly language—let alone programming in general!
|
|
In a similar vein, we make no attempt to introduce the machine
|
|
architecture; we do <em>not</em> describe the instruction set, standard
|
|
mnemonics, registers or addressing modes that are standard to a
|
|
particular architecture.
|
|
You may want to consult the manufacturer’s
|
|
machine architecture manual for this information.
|
|
</p>
|
|
|
|
|
|
<hr>
|
|
<a name="GNU-Assembler"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Object-Formats" accesskey="n" rel="next">Object Formats</a>, Previous: <a href="#Manual" accesskey="p" rel="previous">Manual</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="The-GNU-Assembler"></a>
|
|
<h3 class="section">1.2 The GNU Assembler</h3>
|
|
|
|
|
|
<p><small>GNU</small> <code>as</code> is really a family of assemblers.
|
|
If you use (or have used) the <small>GNU</small> assembler on one architecture, you
|
|
should find a fairly similar environment when you use it on another
|
|
architecture. Each version has much in common with the others,
|
|
including object file formats, most assembler directives (often called
|
|
<em>pseudo-ops</em>) and assembler syntax.
|
|
</p>
|
|
<a name="index-purpose-of-GNU-assembler"></a>
|
|
<p><code>as</code> is primarily intended to assemble the output of the
|
|
<small>GNU</small> C compiler <code>gcc</code> for use by the linker
|
|
<code>ld</code>. Nevertheless, we’ve tried to make <code>as</code>
|
|
assemble correctly everything that other assemblers for the same
|
|
machine would assemble.
|
|
Any exceptions are documented explicitly (see <a href="#Machine-Dependencies">Machine Dependencies</a>).
|
|
This doesn’t mean <code>as</code> always uses the same syntax as another
|
|
assembler for the same architecture; for example, we know of several
|
|
incompatible versions of 680x0 assembly language syntax.
|
|
</p>
|
|
|
|
<p>Unlike older assemblers, <code>as</code> is designed to assemble a source
|
|
program in one pass of the source file. This has a subtle impact on the
|
|
<kbd>.org</kbd> directive (see <a href="#Org"><code>.org</code></a>).
|
|
</p>
|
|
<hr>
|
|
<a name="Object-Formats"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Command-Line" accesskey="n" rel="next">Command Line</a>, Previous: <a href="#GNU-Assembler" accesskey="p" rel="previous">GNU Assembler</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Object-File-Formats"></a>
|
|
<h3 class="section">1.3 Object File Formats</h3>
|
|
|
|
<a name="index-object-file-format"></a>
|
|
<p>The <small>GNU</small> assembler can be configured to produce several alternative
|
|
object file formats. For the most part, this does not affect how you
|
|
write assembly language programs; but directives for debugging symbols
|
|
are typically different in different file formats. See <a href="#Symbol-Attributes">Symbol Attributes</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Command-Line"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Input-Files" accesskey="n" rel="next">Input Files</a>, Previous: <a href="#Object-Formats" accesskey="p" rel="previous">Object Formats</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Command-Line-1"></a>
|
|
<h3 class="section">1.4 Command Line</h3>
|
|
|
|
<a name="index-command-line-conventions"></a>
|
|
|
|
<p>After the program name <code>as</code>, the command line may contain
|
|
options and file names. Options may appear in any order, and may be
|
|
before, after, or between file names. The order of file names is
|
|
significant.
|
|
</p>
|
|
<a name="index-standard-input_002c-as-input-file"></a>
|
|
<a name="index-_002d_002d"></a>
|
|
<p><samp>--</samp> (two hyphens) by itself names the standard input file
|
|
explicitly, as one of the files for <code>as</code> to assemble.
|
|
</p>
|
|
<a name="index-options_002c-command-line"></a>
|
|
<p>Except for ‘<samp>--</samp>’ any command-line argument that begins with a
|
|
hyphen (‘<samp>-</samp>’) is an option. Each option changes the behavior of
|
|
<code>as</code>. No option changes the way another option works. An
|
|
option is a ‘<samp>-</samp>’ followed by one or more letters; the case of
|
|
the letter is important. All options are optional.
|
|
</p>
|
|
<p>Some options expect exactly one file name to follow them. The file
|
|
name may either immediately follow the option’s letter (compatible
|
|
with older assemblers) or it may be the next command argument (<small>GNU</small>
|
|
standard). These two command lines are equivalent:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">as -o my-object-file.o mumble.s
|
|
as -omy-object-file.o mumble.s
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="Input-Files"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Object" accesskey="n" rel="next">Object</a>, Previous: <a href="#Command-Line" accesskey="p" rel="previous">Command Line</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Input-Files-1"></a>
|
|
<h3 class="section">1.5 Input Files</h3>
|
|
|
|
<a name="index-input"></a>
|
|
<a name="index-source-program"></a>
|
|
<a name="index-files_002c-input"></a>
|
|
<p>We use the phrase <em>source program</em>, abbreviated <em>source</em>, to
|
|
describe the program input to one run of <code>as</code>. The program may
|
|
be in one or more files; how the source is partitioned into files
|
|
doesn’t change the meaning of the source.
|
|
</p>
|
|
<p>The source program is a concatenation of the text in all the files, in the
|
|
order specified.
|
|
</p>
|
|
<p>Each time you run <code>as</code> it assembles exactly one source
|
|
program. The source program is made up of one or more files.
|
|
(The standard input is also a file.)
|
|
</p>
|
|
<p>You give <code>as</code> a command line that has zero or more input file
|
|
names. The input files are read (from left file name to right). A
|
|
command-line argument (in any position) that has no special meaning
|
|
is taken to be an input file name.
|
|
</p>
|
|
<p>If you give <code>as</code> no file names it attempts to read one input file
|
|
from the <code>as</code> standard input, which is normally your terminal. You
|
|
may have to type <tt class="key">ctl-D</tt> to tell <code>as</code> there is no more program
|
|
to assemble.
|
|
</p>
|
|
<p>Use ‘<samp>--</samp>’ if you need to explicitly name the standard input file
|
|
in your command line.
|
|
</p>
|
|
<p>If the source is empty, <code>as</code> produces a small, empty object
|
|
file.
|
|
</p>
|
|
|
|
<a name="Filenames-and-Line_002dnumbers"></a>
|
|
<h4 class="subheading">Filenames and Line-numbers</h4>
|
|
|
|
<a name="index-input-file-linenumbers"></a>
|
|
<a name="index-line-numbers_002c-in-input-files"></a>
|
|
<p>There are two ways of locating a line in the input file (or files) and
|
|
either may be used in reporting error messages. One way refers to a line
|
|
number in a physical file; the other refers to a line number in a
|
|
“logical” file. See <a href="#Errors">Error and Warning Messages</a>.
|
|
</p>
|
|
<p><em>Physical files</em> are those files named in the command line given
|
|
to <code>as</code>.
|
|
</p>
|
|
<p><em>Logical files</em> are simply names declared explicitly by assembler
|
|
directives; they bear no relation to physical files. Logical file names help
|
|
error messages reflect the original source file, when <code>as</code> source
|
|
is itself synthesized from other files. <code>as</code> understands the
|
|
‘<samp>#</samp>’ directives emitted by the <code>gcc</code> preprocessor. See also
|
|
<a href="#File"><code>.file</code></a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Object"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Errors" accesskey="n" rel="next">Errors</a>, Previous: <a href="#Input-Files" accesskey="p" rel="previous">Input Files</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Output-_0028Object_0029-File"></a>
|
|
<h3 class="section">1.6 Output (Object) File</h3>
|
|
|
|
<a name="index-object-file"></a>
|
|
<a name="index-output-file"></a>
|
|
<a name="index-a_002eout"></a>
|
|
<a name="index-_002eo"></a>
|
|
<p>Every time you run <code>as</code> it produces an output file, which is
|
|
your assembly language program translated into numbers. This file
|
|
is the object file. Its default name is <code>a.out</code>.
|
|
You can give it another name by using the <samp>-o</samp> option. Conventionally,
|
|
object file names end with <samp>.o</samp>. The default name is used for historical
|
|
reasons: older assemblers were capable of assembling self-contained programs
|
|
directly into a runnable program. (For some formats, this isn’t currently
|
|
possible, but it can be done for the <code>a.out</code> format.)
|
|
</p>
|
|
<a name="index-linker"></a>
|
|
<a name="index-ld"></a>
|
|
<p>The object file is meant for input to the linker <code>ld</code>. It contains
|
|
assembled program code, information to help <code>ld</code> integrate
|
|
the assembled program into a runnable file, and (optionally) symbolic
|
|
information for the debugger.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="Errors"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Object" accesskey="p" rel="previous">Object</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Error-and-Warning-Messages"></a>
|
|
<h3 class="section">1.7 Error and Warning Messages</h3>
|
|
|
|
|
|
<a name="index-error-messages"></a>
|
|
<a name="index-warning-messages"></a>
|
|
<a name="index-messages-from-assembler"></a>
|
|
<p><code>as</code> may write warnings and error messages to the standard error
|
|
file (usually your terminal). This should not happen when a compiler
|
|
runs <code>as</code> automatically. Warnings report an assumption made so
|
|
that <code>as</code> could keep assembling a flawed program; errors report a
|
|
grave problem that stops the assembly.
|
|
</p>
|
|
|
|
<a name="index-format-of-warning-messages"></a>
|
|
<p>Warning messages have the format
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">file_name:<b>NNN</b>:Warning Message Text
|
|
</pre></div>
|
|
|
|
<a name="index-file-names-and-line-numbers_002c-in-warnings_002ferrors"></a>
|
|
<p>(where <b>NNN</b> is a line number). If both a logical file name
|
|
(see <a href="#File"><code>.file</code></a>) and a logical line number
|
|
(see <a href="#Line"><code>.line</code></a>)
|
|
have been given then they will be used, otherwise the file name and line number
|
|
in the current assembler source file will be used. The message text is
|
|
intended to be self explanatory (in the grand Unix tradition).
|
|
</p>
|
|
<p>Note the file name must be set via the logical version of the <code>.file</code>
|
|
directive, not the DWARF2 version of the <code>.file</code> directive. For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .file 2 "bar.c"
|
|
error_assembler_source
|
|
.file "foo.c"
|
|
.line 30
|
|
error_c_source
|
|
</pre></div>
|
|
|
|
<p>produces this output:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> Assembler messages:
|
|
asm.s:2: Error: no such instruction: `error_assembler_source'
|
|
foo.c:31: Error: no such instruction: `error_c_source'
|
|
</pre></div>
|
|
|
|
<a name="index-format-of-error-messages"></a>
|
|
<p>Error messages have the format
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">file_name:<b>NNN</b>:FATAL:Error Message Text
|
|
</pre></div>
|
|
|
|
<p>The file name and line number are derived as for warning
|
|
messages. The actual message text may be rather less explanatory
|
|
because many of them aren’t supposed to happen.
|
|
</p>
|
|
<hr>
|
|
<a name="Invoking"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Syntax" accesskey="n" rel="next">Syntax</a>, Previous: <a href="#Overview" accesskey="p" rel="previous">Overview</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Command_002dLine-Options"></a>
|
|
<h2 class="chapter">2 Command-Line Options</h2>
|
|
|
|
<a name="index-options_002c-all-versions-of-assembler"></a>
|
|
<p>This chapter describes command-line options available in <em>all</em>
|
|
versions of the <small>GNU</small> assembler; see <a href="#Machine-Dependencies">Machine Dependencies</a>,
|
|
for options specific
|
|
to particular machine architectures.
|
|
</p>
|
|
|
|
<p>If you are invoking <code>as</code> via the <small>GNU</small> C compiler,
|
|
you can use the ‘<samp>-Wa</samp>’ option to pass arguments through to the assembler.
|
|
The assembler arguments must be separated from each other (and the ‘<samp>-Wa</samp>’)
|
|
by commas. For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">gcc -c -g -O -Wa,-alh,-L file.c
|
|
</pre></div>
|
|
|
|
<p>This passes two options to the assembler: ‘<samp>-alh</samp>’ (emit a listing to
|
|
standard output with high-level and assembly source) and ‘<samp>-L</samp>’ (retain
|
|
local symbols in the symbol table).
|
|
</p>
|
|
<p>Usually you do not need to use this ‘<samp>-Wa</samp>’ mechanism, since many compiler
|
|
command-line options are automatically passed to the assembler by the compiler.
|
|
(You can call the <small>GNU</small> compiler driver with the ‘<samp>-v</samp>’ option to see
|
|
precisely what options it passes to each compilation pass, including the
|
|
assembler.)
|
|
</p>
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#a" accesskey="1">a</a>:</td><td> </td><td align="left" valign="top">-a[cdghlns] enable listings
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#alternate" accesskey="2">alternate</a>:</td><td> </td><td align="left" valign="top">–alternate enable alternate macro syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D" accesskey="3">D</a>:</td><td> </td><td align="left" valign="top">-D for compatibility
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#f" accesskey="4">f</a>:</td><td> </td><td align="left" valign="top">-f to work faster
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#I" accesskey="5">I</a>:</td><td> </td><td align="left" valign="top">-I for .include search path
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#K" accesskey="6">K</a>:</td><td> </td><td align="left" valign="top">-K for difference tables
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#L" accesskey="7">L</a>:</td><td> </td><td align="left" valign="top">-L to retain local symbols
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#listing" accesskey="8">listing</a>:</td><td> </td><td align="left" valign="top">–listing-XXX to configure listing output
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M" accesskey="9">M</a>:</td><td> </td><td align="left" valign="top">-M or –mri to assemble in MRI compatibility mode
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MD">MD</a>:</td><td> </td><td align="left" valign="top">–MD for dependency tracking
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#no_002dpad_002dsections">no-pad-sections</a>:</td><td> </td><td align="left" valign="top">–no-pad-sections to stop section padding
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#o">o</a>:</td><td> </td><td align="left" valign="top">-o to name the object file
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#R">R</a>:</td><td> </td><td align="left" valign="top">-R to join data and text sections
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#statistics">statistics</a>:</td><td> </td><td align="left" valign="top">–statistics to see statistics about assembly
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#traditional_002dformat">traditional-format</a>:</td><td> </td><td align="left" valign="top">–traditional-format for compatible output
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#v">v</a>:</td><td> </td><td align="left" valign="top">-v to announce version
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#W">W</a>:</td><td> </td><td align="left" valign="top">-W, –no-warn, –warn, –fatal-warnings to control warnings
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z">Z</a>:</td><td> </td><td align="left" valign="top">-Z to make object file even after errors
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="a"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#alternate" accesskey="n" rel="next">alternate</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Enable-Listings_003a-_002da_005bcdghlns_005d"></a>
|
|
<h3 class="section">2.1 Enable Listings: <samp>-a[cdghlns]</samp></h3>
|
|
|
|
<a name="index-_002da"></a>
|
|
<a name="index-_002dac"></a>
|
|
<a name="index-_002dad"></a>
|
|
<a name="index-_002dag"></a>
|
|
<a name="index-_002dah"></a>
|
|
<a name="index-_002dal"></a>
|
|
<a name="index-_002dan"></a>
|
|
<a name="index-_002das"></a>
|
|
<a name="index-listings_002c-enabling"></a>
|
|
<a name="index-assembly-listings_002c-enabling"></a>
|
|
|
|
<p>These options enable listing output from the assembler. By itself,
|
|
‘<samp>-a</samp>’ requests high-level, assembly, and symbols listing.
|
|
You can use other letters to select specific options for the list:
|
|
‘<samp>-ah</samp>’ requests a high-level language listing,
|
|
‘<samp>-al</samp>’ requests an output-program assembly listing, and
|
|
‘<samp>-as</samp>’ requests a symbol table listing.
|
|
High-level listings require that a compiler debugging option like
|
|
‘<samp>-g</samp>’ be used, and that assembly listings (‘<samp>-al</samp>’) be requested
|
|
also.
|
|
</p>
|
|
<p>Use the ‘<samp>-ag</samp>’ option to print a first section with general assembly
|
|
information, like as version, switches passed, or time stamp.
|
|
</p>
|
|
<p>Use the ‘<samp>-ac</samp>’ option to omit false conditionals from a listing. Any lines
|
|
which are not assembled because of a false <code>.if</code> (or <code>.ifdef</code>, or any
|
|
other conditional), or a true <code>.if</code> followed by an <code>.else</code>, will be
|
|
omitted from the listing.
|
|
</p>
|
|
<p>Use the ‘<samp>-ad</samp>’ option to omit debugging directives from the
|
|
listing.
|
|
</p>
|
|
<p>Once you have specified one of these options, you can further control
|
|
listing output and its appearance using the directives <code>.list</code>,
|
|
<code>.nolist</code>, <code>.psize</code>, <code>.eject</code>, <code>.title</code>, and
|
|
<code>.sbttl</code>.
|
|
The ‘<samp>-an</samp>’ option turns off all forms processing.
|
|
If you do not request listing output with one of the ‘<samp>-a</samp>’ options, the
|
|
listing-control directives have no effect.
|
|
</p>
|
|
<p>The letters after ‘<samp>-a</samp>’ may be combined into one option,
|
|
<em>e.g.</em>, ‘<samp>-aln</samp>’.
|
|
</p>
|
|
<p>Note if the assembler source is coming from the standard input (e.g.,
|
|
because it
|
|
is being created by <code>gcc</code> and the ‘<samp>-pipe</samp>’ command-line switch
|
|
is being used) then the listing will not contain any comments or preprocessor
|
|
directives. This is because the listing code buffers input source lines from
|
|
stdin only after they have been preprocessed by the assembler. This reduces
|
|
memory usage and makes the code more efficient.
|
|
</p>
|
|
<hr>
|
|
<a name="alternate"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D" accesskey="n" rel="next">D</a>, Previous: <a href="#a" accesskey="p" rel="previous">a</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002d_002dalternate"></a>
|
|
<h3 class="section">2.2 <samp>--alternate</samp></h3>
|
|
|
|
<a name="index-_002d_002dalternate"></a>
|
|
<p>Begin in alternate macro mode, see <a href="#Altmacro"><code>.altmacro</code></a>.
|
|
</p>
|
|
<hr>
|
|
<a name="D"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#f" accesskey="n" rel="next">f</a>, Previous: <a href="#alternate" accesskey="p" rel="previous">alternate</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002dD"></a>
|
|
<h3 class="section">2.3 <samp>-D</samp></h3>
|
|
|
|
<a name="index-_002dD"></a>
|
|
<p>This option has no effect whatsoever, but it is accepted to make it more
|
|
likely that scripts written for other assemblers also work with
|
|
<code>as</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="f"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#I" accesskey="n" rel="next">I</a>, Previous: <a href="#D" accesskey="p" rel="previous">D</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Work-Faster_003a-_002df"></a>
|
|
<h3 class="section">2.4 Work Faster: <samp>-f</samp></h3>
|
|
|
|
<a name="index-_002df"></a>
|
|
<a name="index-trusted-compiler"></a>
|
|
<a name="index-faster-processing-_0028_002df_0029"></a>
|
|
<p>‘<samp>-f</samp>’ should only be used when assembling programs written by a
|
|
(trusted) compiler. ‘<samp>-f</samp>’ stops the assembler from doing whitespace
|
|
and comment preprocessing on
|
|
the input file(s) before assembling them. See <a href="#Preprocessing">Preprocessing</a>.
|
|
</p>
|
|
<blockquote>
|
|
<p><em>Warning:</em> if you use ‘<samp>-f</samp>’ when the files actually need to be
|
|
preprocessed (if they contain comments, for example), <code>as</code> does
|
|
not work correctly.
|
|
</p></blockquote>
|
|
|
|
<hr>
|
|
<a name="I"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#K" accesskey="n" rel="next">K</a>, Previous: <a href="#f" accesskey="p" rel="previous">f</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002einclude-Search-Path_003a-_002dI-path"></a>
|
|
<h3 class="section">2.5 <code>.include</code> Search Path: <samp>-I</samp> <var>path</var></h3>
|
|
|
|
<a name="index-_002dI-path"></a>
|
|
<a name="index-paths-for-_002einclude"></a>
|
|
<a name="index-search-path-for-_002einclude"></a>
|
|
<a name="index-include-directive-search-path"></a>
|
|
<p>Use this option to add a <var>path</var> to the list of directories
|
|
<code>as</code> searches for files specified in <code>.include</code>
|
|
directives (see <a href="#Include"><code>.include</code></a>). You may use <samp>-I</samp> as
|
|
many times as necessary to include a variety of paths. The current
|
|
working directory is always searched first; after that, <code>as</code>
|
|
searches any ‘<samp>-I</samp>’ directories in the same order as they were
|
|
specified (left to right) on the command line.
|
|
</p>
|
|
<hr>
|
|
<a name="K"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#L" accesskey="n" rel="next">L</a>, Previous: <a href="#I" accesskey="p" rel="previous">I</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Difference-Tables_003a-_002dK"></a>
|
|
<h3 class="section">2.6 Difference Tables: <samp>-K</samp></h3>
|
|
|
|
<a name="index-_002dK"></a>
|
|
|
|
<a name="index-difference-tables_002c-warning"></a>
|
|
<a name="index-warning-for-altered-difference-tables"></a>
|
|
<p><code>as</code> sometimes alters the code emitted for directives of the
|
|
form ‘<samp>.word <var>sym1</var>-<var>sym2</var></samp>’. See <a href="#Word"><code>.word</code></a>.
|
|
You can use the ‘<samp>-K</samp>’ option if you want a warning issued when this
|
|
is done.
|
|
</p>
|
|
<hr>
|
|
<a name="L"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#listing" accesskey="n" rel="next">listing</a>, Previous: <a href="#K" accesskey="p" rel="previous">K</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Include-Local-Symbols_003a-_002dL"></a>
|
|
<h3 class="section">2.7 Include Local Symbols: <samp>-L</samp></h3>
|
|
|
|
<a name="index-_002dL"></a>
|
|
<a name="index-local-symbols_002c-retaining-in-output"></a>
|
|
<p>Symbols beginning with system-specific local label prefixes, typically
|
|
‘<samp>.L</samp>’ for ELF systems or ‘<samp>L</samp>’ for traditional a.out systems, are
|
|
called <em>local symbols</em>. See <a href="#Symbol-Names">Symbol Names</a>. Normally you do not see
|
|
such symbols when debugging, because they are intended for the use of
|
|
programs (like compilers) that compose assembler programs, not for your
|
|
notice. Normally both <code>as</code> and <code>ld</code> discard
|
|
such symbols, so you do not normally debug with them.
|
|
</p>
|
|
<p>This option tells <code>as</code> to retain those local symbols
|
|
in the object file. Usually if you do this you also tell the linker
|
|
<code>ld</code> to preserve those symbols.
|
|
</p>
|
|
<hr>
|
|
<a name="listing"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M" accesskey="n" rel="next">M</a>, Previous: <a href="#L" accesskey="p" rel="previous">L</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Configuring-listing-output_003a-_002d_002dlisting"></a>
|
|
<h3 class="section">2.8 Configuring listing output: <samp>--listing</samp></h3>
|
|
|
|
<p>The listing feature of the assembler can be enabled via the command-line switch
|
|
‘<samp>-a</samp>’ (see <a href="#a">a</a>). This feature combines the input source file(s) with a
|
|
hex dump of the corresponding locations in the output object file, and displays
|
|
them as a listing file. The format of this listing can be controlled by
|
|
directives inside the assembler source (i.e., <code>.list</code> (see <a href="#List">List</a>),
|
|
<code>.title</code> (see <a href="#Title">Title</a>), <code>.sbttl</code> (see <a href="#Sbttl">Sbttl</a>),
|
|
<code>.psize</code> (see <a href="#Psize">Psize</a>), and
|
|
<code>.eject</code> (see <a href="#Eject">Eject</a>) and also by the following switches:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>--listing-lhs-width=‘<samp>number</samp>’</code></dt>
|
|
<dd><a name="index-_002d_002dlisting_002dlhs_002dwidth"></a>
|
|
<a name="index-Width-of-first-line-disassembly-output"></a>
|
|
<p>Sets the maximum width, in words, of the first line of the hex byte dump. This
|
|
dump appears on the left hand side of the listing output.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--listing-lhs-width2=‘<samp>number</samp>’</code></dt>
|
|
<dd><a name="index-_002d_002dlisting_002dlhs_002dwidth2"></a>
|
|
<a name="index-Width-of-continuation-lines-of-disassembly-output"></a>
|
|
<p>Sets the maximum width, in words, of any further lines of the hex byte dump for
|
|
a given input source line. If this value is not specified, it defaults to being
|
|
the same as the value specified for ‘<samp>--listing-lhs-width</samp>’. If neither
|
|
switch is used the default is to one.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--listing-rhs-width=‘<samp>number</samp>’</code></dt>
|
|
<dd><a name="index-_002d_002dlisting_002drhs_002dwidth"></a>
|
|
<a name="index-Width-of-source-line-output"></a>
|
|
<p>Sets the maximum width, in characters, of the source line that is displayed
|
|
alongside the hex dump. The default value for this parameter is 100. The
|
|
source line is displayed on the right hand side of the listing output.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--listing-cont-lines=‘<samp>number</samp>’</code></dt>
|
|
<dd><a name="index-_002d_002dlisting_002dcont_002dlines"></a>
|
|
<a name="index-Maximum-number-of-continuation-lines"></a>
|
|
<p>Sets the maximum number of continuation lines of hex dump that will be
|
|
displayed for a given single line of source input. The default value is 4.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MD" accesskey="n" rel="next">MD</a>, Previous: <a href="#listing" accesskey="p" rel="previous">listing</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assemble-in-MRI-Compatibility-Mode_003a-_002dM"></a>
|
|
<h3 class="section">2.9 Assemble in MRI Compatibility Mode: <samp>-M</samp></h3>
|
|
|
|
<a name="index-_002dM"></a>
|
|
<a name="index-MRI-compatibility-mode"></a>
|
|
<p>The <samp>-M</samp> or <samp>--mri</samp> option selects MRI compatibility mode. This
|
|
changes the syntax and pseudo-op handling of <code>as</code> to make it
|
|
compatible with the <code>ASM68K</code> assembler from Microtec Research.
|
|
The exact nature of the
|
|
MRI syntax will not be documented here; see the MRI manuals for more
|
|
information. Note in particular that the handling of macros and macro
|
|
arguments is somewhat different. The purpose of this option is to permit
|
|
assembling existing MRI assembler code using <code>as</code>.
|
|
</p>
|
|
<p>The MRI compatibility is not complete. Certain operations of the MRI assembler
|
|
depend upon its object file format, and can not be supported using other object
|
|
file formats. Supporting these would require enhancing each object file format
|
|
individually. These are:
|
|
</p>
|
|
<ul>
|
|
<li> global symbols in common section
|
|
|
|
<p>The m68k MRI assembler supports common sections which are merged by the linker.
|
|
Other object file formats do not support this. <code>as</code> handles
|
|
common sections by treating them as a single common symbol. It permits local
|
|
symbols to be defined within a common section, but it can not support global
|
|
symbols, since it has no way to describe them.
|
|
</p>
|
|
</li><li> complex relocations
|
|
|
|
<p>The MRI assemblers support relocations against a negated section address, and
|
|
relocations which combine the start addresses of two or more sections. These
|
|
are not support by other object file formats.
|
|
</p>
|
|
</li><li> <code>END</code> pseudo-op specifying start address
|
|
|
|
<p>The MRI <code>END</code> pseudo-op permits the specification of a start address.
|
|
This is not supported by other object file formats. The start address may
|
|
instead be specified using the <samp>-e</samp> option to the linker, or in a linker
|
|
script.
|
|
</p>
|
|
</li><li> <code>IDNT</code>, <code>.ident</code> and <code>NAME</code> pseudo-ops
|
|
|
|
<p>The MRI <code>IDNT</code>, <code>.ident</code> and <code>NAME</code> pseudo-ops assign a module
|
|
name to the output file. This is not supported by other object file formats.
|
|
</p>
|
|
</li><li> <code>ORG</code> pseudo-op
|
|
|
|
<p>The m68k MRI <code>ORG</code> pseudo-op begins an absolute section at a given
|
|
address. This differs from the usual <code>as</code> <code>.org</code> pseudo-op,
|
|
which changes the location within the current section. Absolute sections are
|
|
not supported by other object file formats. The address of a section may be
|
|
assigned within a linker script.
|
|
</p></li></ul>
|
|
|
|
<p>There are some other features of the MRI assembler which are not supported by
|
|
<code>as</code>, typically either because they are difficult or because they
|
|
seem of little consequence. Some of these may be supported in future releases.
|
|
</p>
|
|
<ul>
|
|
<li> EBCDIC strings
|
|
|
|
<p>EBCDIC strings are not supported.
|
|
</p>
|
|
</li><li> packed binary coded decimal
|
|
|
|
<p>Packed binary coded decimal is not supported. This means that the <code>DC.P</code>
|
|
and <code>DCB.P</code> pseudo-ops are not supported.
|
|
</p>
|
|
</li><li> <code>FEQU</code> pseudo-op
|
|
|
|
<p>The m68k <code>FEQU</code> pseudo-op is not supported.
|
|
</p>
|
|
</li><li> <code>NOOBJ</code> pseudo-op
|
|
|
|
<p>The m68k <code>NOOBJ</code> pseudo-op is not supported.
|
|
</p>
|
|
</li><li> <code>OPT</code> branch control options
|
|
|
|
<p>The m68k <code>OPT</code> branch control options—<code>B</code>, <code>BRS</code>, <code>BRB</code>,
|
|
<code>BRL</code>, and <code>BRW</code>—are ignored. <code>as</code> automatically
|
|
relaxes all branches, whether forward or backward, to an appropriate size, so
|
|
these options serve no purpose.
|
|
</p>
|
|
</li><li> <code>OPT</code> list control options
|
|
|
|
<p>The following m68k <code>OPT</code> list control options are ignored: <code>C</code>,
|
|
<code>CEX</code>, <code>CL</code>, <code>CRE</code>, <code>E</code>, <code>G</code>, <code>I</code>, <code>M</code>,
|
|
<code>MEX</code>, <code>MC</code>, <code>MD</code>, <code>X</code>.
|
|
</p>
|
|
</li><li> other <code>OPT</code> options
|
|
|
|
<p>The following m68k <code>OPT</code> options are ignored: <code>NEST</code>, <code>O</code>,
|
|
<code>OLD</code>, <code>OP</code>, <code>P</code>, <code>PCO</code>, <code>PCR</code>, <code>PCS</code>, <code>R</code>.
|
|
</p>
|
|
</li><li> <code>OPT</code> <code>D</code> option is default
|
|
|
|
<p>The m68k <code>OPT</code> <code>D</code> option is the default, unlike the MRI assembler.
|
|
<code>OPT NOD</code> may be used to turn it off.
|
|
</p>
|
|
</li><li> <code>XREF</code> pseudo-op.
|
|
|
|
<p>The m68k <code>XREF</code> pseudo-op is ignored.
|
|
</p>
|
|
</li></ul>
|
|
|
|
<hr>
|
|
<a name="MD"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#no_002dpad_002dsections" accesskey="n" rel="next">no-pad-sections</a>, Previous: <a href="#M" accesskey="p" rel="previous">M</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Dependency-Tracking_003a-_002d_002dMD"></a>
|
|
<h3 class="section">2.10 Dependency Tracking: <samp>--MD</samp></h3>
|
|
|
|
<a name="index-_002d_002dMD"></a>
|
|
<a name="index-dependency-tracking"></a>
|
|
<a name="index-make-rules"></a>
|
|
|
|
<p><code>as</code> can generate a dependency file for the file it creates. This
|
|
file consists of a single rule suitable for <code>make</code> describing the
|
|
dependencies of the main source file.
|
|
</p>
|
|
<p>The rule is written to the file named in its argument.
|
|
</p>
|
|
<p>This feature is used in the automatic updating of makefiles.
|
|
</p>
|
|
<hr>
|
|
<a name="no_002dpad_002dsections"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#o" accesskey="n" rel="next">o</a>, Previous: <a href="#MD" accesskey="p" rel="previous">MD</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Output-Section-Padding"></a>
|
|
<h3 class="section">2.11 Output Section Padding</h3>
|
|
<a name="index-_002d_002dno_002dpad_002dsections"></a>
|
|
<a name="index-output-section-padding"></a>
|
|
<p>Normally the assembler will pad the end of each output section up to its
|
|
alignment boundary. But this can waste space, which can be significant on
|
|
memory constrained targets. So the <samp>--no-pad-sections</samp> option will
|
|
disable this behaviour.
|
|
</p>
|
|
<hr>
|
|
<a name="o"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#R" accesskey="n" rel="next">R</a>, Previous: <a href="#no_002dpad_002dsections" accesskey="p" rel="previous">no-pad-sections</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Name-the-Object-File_003a-_002do"></a>
|
|
<h3 class="section">2.12 Name the Object File: <samp>-o</samp></h3>
|
|
|
|
<a name="index-_002do"></a>
|
|
<a name="index-naming-object-file"></a>
|
|
<a name="index-object-file-name"></a>
|
|
<p>There is always one object file output when you run <code>as</code>. By
|
|
default it has the name <samp>a.out</samp>.
|
|
You use this option (which takes exactly one filename) to give the
|
|
object file a different name.
|
|
</p>
|
|
<p>Whatever the object file is called, <code>as</code> overwrites any
|
|
existing file of the same name.
|
|
</p>
|
|
<hr>
|
|
<a name="R"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#statistics" accesskey="n" rel="next">statistics</a>, Previous: <a href="#o" accesskey="p" rel="previous">o</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Join-Data-and-Text-Sections_003a-_002dR"></a>
|
|
<h3 class="section">2.13 Join Data and Text Sections: <samp>-R</samp></h3>
|
|
|
|
<a name="index-_002dR"></a>
|
|
<a name="index-data-and-text-sections_002c-joining"></a>
|
|
<a name="index-text-and-data-sections_002c-joining"></a>
|
|
<a name="index-joining-text-and-data-sections"></a>
|
|
<a name="index-merging-text-and-data-sections"></a>
|
|
<p><samp>-R</samp> tells <code>as</code> to write the object file as if all
|
|
data-section data lives in the text section. This is only done at
|
|
the very last moment: your binary data are the same, but data
|
|
section parts are relocated differently. The data section part of
|
|
your object file is zero bytes long because all its bytes are
|
|
appended to the text section. (See <a href="#Sections">Sections and Relocation</a>.)
|
|
</p>
|
|
<p>When you specify <samp>-R</samp> it would be possible to generate shorter
|
|
address displacements (because we do not have to cross between text and
|
|
data section). We refrain from doing this simply for compatibility with
|
|
older versions of <code>as</code>. In future, <samp>-R</samp> may work this way.
|
|
</p>
|
|
<p>When <code>as</code> is configured for COFF or ELF output,
|
|
this option is only useful if you use sections named ‘<samp>.text</samp>’ and
|
|
‘<samp>.data</samp>’.
|
|
</p>
|
|
<p><samp>-R</samp> is not supported for any of the HPPA targets. Using
|
|
<samp>-R</samp> generates a warning from <code>as</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="statistics"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#traditional_002dformat" accesskey="n" rel="next">traditional-format</a>, Previous: <a href="#R" accesskey="p" rel="previous">R</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Display-Assembly-Statistics_003a-_002d_002dstatistics"></a>
|
|
<h3 class="section">2.14 Display Assembly Statistics: <samp>--statistics</samp></h3>
|
|
|
|
<a name="index-_002d_002dstatistics"></a>
|
|
<a name="index-statistics_002c-about-assembly"></a>
|
|
<a name="index-time_002c-total-for-assembly"></a>
|
|
<a name="index-space-used_002c-maximum-for-assembly"></a>
|
|
<p>Use ‘<samp>--statistics</samp>’ to display two statistics about the resources used by
|
|
<code>as</code>: the maximum amount of space allocated during the assembly
|
|
(in bytes), and the total execution time taken for the assembly (in <small>CPU</small>
|
|
seconds).
|
|
</p>
|
|
<hr>
|
|
<a name="traditional_002dformat"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#v" accesskey="n" rel="next">v</a>, Previous: <a href="#statistics" accesskey="p" rel="previous">statistics</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Compatible-Output_003a-_002d_002dtraditional_002dformat"></a>
|
|
<h3 class="section">2.15 Compatible Output: <samp>--traditional-format</samp></h3>
|
|
|
|
<a name="index-_002d_002dtraditional_002dformat"></a>
|
|
<p>For some targets, the output of <code>as</code> is different in some ways
|
|
from the output of some existing assembler. This switch requests
|
|
<code>as</code> to use the traditional format instead.
|
|
</p>
|
|
<p>For example, it disables the exception frame optimizations which
|
|
<code>as</code> normally does by default on <code>gcc</code> output.
|
|
</p>
|
|
<hr>
|
|
<a name="v"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#W" accesskey="n" rel="next">W</a>, Previous: <a href="#traditional_002dformat" accesskey="p" rel="previous">traditional-format</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Announce-Version_003a-_002dv"></a>
|
|
<h3 class="section">2.16 Announce Version: <samp>-v</samp></h3>
|
|
|
|
<a name="index-_002dv"></a>
|
|
<a name="index-_002dversion"></a>
|
|
<a name="index-assembler-version"></a>
|
|
<a name="index-version-of-assembler"></a>
|
|
<p>You can find out what version of as is running by including the
|
|
option ‘<samp>-v</samp>’ (which you can also spell as ‘<samp>-version</samp>’) on the
|
|
command line.
|
|
</p>
|
|
<hr>
|
|
<a name="W"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z" accesskey="n" rel="next">Z</a>, Previous: <a href="#v" accesskey="p" rel="previous">v</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Control-Warnings_003a-_002dW_002c-_002d_002dwarn_002c-_002d_002dno_002dwarn_002c-_002d_002dfatal_002dwarnings"></a>
|
|
<h3 class="section">2.17 Control Warnings: <samp>-W</samp>, <samp>--warn</samp>, <samp>--no-warn</samp>, <samp>--fatal-warnings</samp></h3>
|
|
|
|
<p><code>as</code> should never give a warning or error message when
|
|
assembling compiler output. But programs written by people often
|
|
cause <code>as</code> to give a warning that a particular assumption was
|
|
made. All such warnings are directed to the standard error file.
|
|
</p>
|
|
<a name="index-_002dW"></a>
|
|
<a name="index-_002d_002dno_002dwarn"></a>
|
|
<a name="index-suppressing-warnings"></a>
|
|
<a name="index-warnings_002c-suppressing"></a>
|
|
<p>If you use the <samp>-W</samp> and <samp>--no-warn</samp> options, no warnings are issued.
|
|
This only affects the warning messages: it does not change any particular of
|
|
how <code>as</code> assembles your file. Errors, which stop the assembly,
|
|
are still reported.
|
|
</p>
|
|
<a name="index-_002d_002dfatal_002dwarnings"></a>
|
|
<a name="index-errors_002c-caused-by-warnings"></a>
|
|
<a name="index-warnings_002c-causing-error"></a>
|
|
<p>If you use the <samp>--fatal-warnings</samp> option, <code>as</code> considers
|
|
files that generate warnings to be in error.
|
|
</p>
|
|
<a name="index-_002d_002dwarn"></a>
|
|
<a name="index-warnings_002c-switching-on"></a>
|
|
<p>You can switch these options off again by specifying <samp>--warn</samp>, which
|
|
causes warnings to be output as usual.
|
|
</p>
|
|
<hr>
|
|
<a name="Z"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#W" accesskey="p" rel="previous">W</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Generate-Object-File-in-Spite-of-Errors_003a-_002dZ"></a>
|
|
<h3 class="section">2.18 Generate Object File in Spite of Errors: <samp>-Z</samp></h3>
|
|
<a name="index-object-file_002c-after-errors"></a>
|
|
<a name="index-errors_002c-continuing-after"></a>
|
|
<p>After an error message, <code>as</code> normally produces no output. If for
|
|
some reason you are interested in object file output even after
|
|
<code>as</code> gives an error message on your program, use the ‘<samp>-Z</samp>’
|
|
option. If there are any errors, <code>as</code> continues anyways, and
|
|
writes an object file after a final warning message of the form ‘<samp><var>n</var>
|
|
errors, <var>m</var> warnings, generating bad object file.</samp>’
|
|
</p>
|
|
<hr>
|
|
<a name="Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Sections" accesskey="n" rel="next">Sections</a>, Previous: <a href="#Invoking" accesskey="p" rel="previous">Invoking</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-1"></a>
|
|
<h2 class="chapter">3 Syntax</h2>
|
|
|
|
<a name="index-machine_002dindependent-syntax"></a>
|
|
<a name="index-syntax_002c-machine_002dindependent"></a>
|
|
<p>This chapter describes the machine-independent syntax allowed in a
|
|
source file. <code>as</code> syntax is similar to what many other
|
|
assemblers use; it is inspired by the BSD 4.2
|
|
assembler, except that <code>as</code> does not assemble Vax bit-fields.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Preprocessing" accesskey="1">Preprocessing</a>:</td><td> </td><td align="left" valign="top">Preprocessing
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Whitespace" accesskey="2">Whitespace</a>:</td><td> </td><td align="left" valign="top">Whitespace
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Comments" accesskey="3">Comments</a>:</td><td> </td><td align="left" valign="top">Comments
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Symbol-Intro" accesskey="4">Symbol Intro</a>:</td><td> </td><td align="left" valign="top">Symbols
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Statements" accesskey="5">Statements</a>:</td><td> </td><td align="left" valign="top">Statements
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Constants" accesskey="6">Constants</a>:</td><td> </td><td align="left" valign="top">Constants
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Preprocessing"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Whitespace" accesskey="n" rel="next">Whitespace</a>, Up: <a href="#Syntax" accesskey="u" rel="up">Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Preprocessing-1"></a>
|
|
<h3 class="section">3.1 Preprocessing</h3>
|
|
|
|
<a name="index-preprocessing"></a>
|
|
<p>The <code>as</code> internal preprocessor:
|
|
</p><ul>
|
|
<li> <a name="index-whitespace_002c-removed-by-preprocessor"></a>
|
|
adjusts and removes extra whitespace. It leaves one space or tab before
|
|
the keywords on a line, and turns any other whitespace on the line into
|
|
a single space.
|
|
|
|
</li><li> <a name="index-comments_002c-removed-by-preprocessor"></a>
|
|
removes all comments, replacing them with a single space, or an
|
|
appropriate number of newlines.
|
|
|
|
</li><li> <a name="index-constants_002c-converted-by-preprocessor"></a>
|
|
converts character constants into the appropriate numeric values.
|
|
</li></ul>
|
|
|
|
<p>It does not do macro processing, include file handling, or
|
|
anything else you may get from your C compiler’s preprocessor. You can
|
|
do include file processing with the <code>.include</code> directive
|
|
(see <a href="#Include"><code>.include</code></a>). You can use the <small>GNU</small> C compiler driver
|
|
to get other “CPP” style preprocessing by giving the input file a
|
|
‘<samp>.S</samp>’ suffix. <a href="https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html#Overall-Options">See the ’Options Controlling the Kind of Output’ section of the GCC manual for
|
|
more details</a>
|
|
</p>
|
|
<p>Excess whitespace, comments, and character constants
|
|
cannot be used in the portions of the input text that are not
|
|
preprocessed.
|
|
</p>
|
|
<a name="index-turning-preprocessing-on-and-off"></a>
|
|
<a name="index-preprocessing_002c-turning-on-and-off"></a>
|
|
<a name="index-_0023NO_005fAPP"></a>
|
|
<a name="index-_0023APP"></a>
|
|
<p>If the first line of an input file is <code>#NO_APP</code> or if you use the
|
|
‘<samp>-f</samp>’ option, whitespace and comments are not removed from the input file.
|
|
Within an input file, you can ask for whitespace and comment removal in
|
|
specific portions of the by putting a line that says <code>#APP</code> before the
|
|
text that may contain whitespace or comments, and putting a line that says
|
|
<code>#NO_APP</code> after this text. This feature is mainly intend to support
|
|
<code>asm</code> statements in compilers whose output is otherwise free of comments
|
|
and whitespace.
|
|
</p>
|
|
<hr>
|
|
<a name="Whitespace"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Comments" accesskey="n" rel="next">Comments</a>, Previous: <a href="#Preprocessing" accesskey="p" rel="previous">Preprocessing</a>, Up: <a href="#Syntax" accesskey="u" rel="up">Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Whitespace-1"></a>
|
|
<h3 class="section">3.2 Whitespace</h3>
|
|
|
|
<a name="index-whitespace"></a>
|
|
<p><em>Whitespace</em> is one or more blanks or tabs, in any order.
|
|
Whitespace is used to separate symbols, and to make programs neater for
|
|
people to read. Unless within character constants
|
|
(see <a href="#Characters">Character Constants</a>), any whitespace means the same
|
|
as exactly one space.
|
|
</p>
|
|
<hr>
|
|
<a name="Comments"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Symbol-Intro" accesskey="n" rel="next">Symbol Intro</a>, Previous: <a href="#Whitespace" accesskey="p" rel="previous">Whitespace</a>, Up: <a href="#Syntax" accesskey="u" rel="up">Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Comments-1"></a>
|
|
<h3 class="section">3.3 Comments</h3>
|
|
|
|
<a name="index-comments"></a>
|
|
<p>There are two ways of rendering comments to <code>as</code>. In both
|
|
cases the comment is equivalent to one space.
|
|
</p>
|
|
<p>Anything from ‘<samp>/*</samp>’ through the next ‘<samp>*/</samp>’ is a comment.
|
|
This means you may not nest these comments.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">/*
|
|
The only way to include a newline ('\n') in a comment
|
|
is to use this sort of comment.
|
|
*/
|
|
|
|
/* This sort of comment does not nest. */
|
|
</pre></div>
|
|
|
|
<a name="index-line-comment-character"></a>
|
|
<p>Anything from a <em>line comment</em> character up to the next newline is
|
|
considered a comment and is ignored. The line comment character is target
|
|
specific, and some targets multiple comment characters. Some targets also have
|
|
line comment characters that only work if they are the first character on a
|
|
line. Some targets use a sequence of two characters to introduce a line
|
|
comment. Some targets can also change their line comment characters depending
|
|
upon command-line options that have been used. For more details see the
|
|
<em>Syntax</em> section in the documentation for individual targets.
|
|
</p>
|
|
<p>If the line comment character is the hash sign (‘<samp>#</samp>’) then it still has the
|
|
special ability to enable and disable preprocessing (see <a href="#Preprocessing">Preprocessing</a>) and
|
|
to specify logical line numbers:
|
|
</p>
|
|
<a name="index-_0023"></a>
|
|
<a name="index-lines-starting-with-_0023"></a>
|
|
<a name="index-logical-line-numbers"></a>
|
|
<p>To be compatible with past assemblers, lines that begin with ‘<samp>#</samp>’ have a
|
|
special interpretation. Following the ‘<samp>#</samp>’ should be an absolute
|
|
expression (see <a href="#Expressions">Expressions</a>): the logical line number of the <em>next</em>
|
|
line. Then a string (see <a href="#Strings">Strings</a>) is allowed: if present it is a
|
|
new logical file name. The rest of the line, if any, should be whitespace.
|
|
</p>
|
|
<p>If the first non-whitespace characters on the line are not numeric,
|
|
the line is ignored. (Just like a comment.)
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> # This is an ordinary comment.
|
|
# 42-6 "new_file_name" # New logical file name
|
|
# This is logical line # 36.
|
|
</pre></div>
|
|
<p>This feature is deprecated, and may disappear from future versions
|
|
of <code>as</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="Symbol-Intro"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Statements" accesskey="n" rel="next">Statements</a>, Previous: <a href="#Comments" accesskey="p" rel="previous">Comments</a>, Up: <a href="#Syntax" accesskey="u" rel="up">Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbols-1"></a>
|
|
<h3 class="section">3.4 Symbols</h3>
|
|
|
|
<a name="index-characters-used-in-symbols"></a>
|
|
<p>A <em>symbol</em> is one or more characters chosen from the set of all
|
|
letters (both upper and lower case), digits and the three characters
|
|
‘<samp>_.$</samp>’.
|
|
On most machines, you can also use <code>$</code> in symbol names; exceptions
|
|
are noted in <a href="#Machine-Dependencies">Machine Dependencies</a>.
|
|
No symbol may begin with a digit. Case is significant.
|
|
There is no length limit; all characters are significant. Multibyte characters
|
|
are supported, but note that the setting of the
|
|
<samp>--multibyte-handling</samp> option might prevent their use. Symbols
|
|
are delimited by characters not in that set, or by the beginning of a file
|
|
(since the source program must end with a newline, the end of a file is not a
|
|
possible symbol delimiter). See <a href="#Symbols">Symbols</a>.
|
|
</p>
|
|
<p>Symbol names may also be enclosed in double quote <code>"</code> characters. In such
|
|
cases any characters are allowed, except for the NUL character. If a double
|
|
quote character is to be included in the symbol name it must be preceded by a
|
|
backslash <code>\</code> character.
|
|
<a name="index-length-of-symbols"></a>
|
|
</p>
|
|
<hr>
|
|
<a name="Statements"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Constants" accesskey="n" rel="next">Constants</a>, Previous: <a href="#Symbol-Intro" accesskey="p" rel="previous">Symbol Intro</a>, Up: <a href="#Syntax" accesskey="u" rel="up">Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Statements-1"></a>
|
|
<h3 class="section">3.5 Statements</h3>
|
|
|
|
<a name="index-statements_002c-structure-of"></a>
|
|
<a name="index-line-separator-character"></a>
|
|
<a name="index-statement-separator-character"></a>
|
|
|
|
<p>A <em>statement</em> ends at a newline character (‘<samp>\n</samp>’) or a
|
|
<em>line separator character</em>. The line separator character is target
|
|
specific and described in the <em>Syntax</em> section of each
|
|
target’s documentation. Not all targets support a line separator character.
|
|
The newline or line separator character is considered to be part of the
|
|
preceding statement. Newlines and separators within character constants are an
|
|
exception: they do not end statements.
|
|
</p>
|
|
<a name="index-newline_002c-required-at-file-end"></a>
|
|
<a name="index-EOF_002c-newline-must-precede"></a>
|
|
<p>It is an error to end any statement with end-of-file: the last
|
|
character of any input file should be a newline.
|
|
</p>
|
|
<p>An empty statement is allowed, and may include whitespace. It is ignored.
|
|
</p>
|
|
<a name="index-instructions-and-directives"></a>
|
|
<a name="index-directives-and-instructions"></a>
|
|
<p>A statement begins with zero or more labels, optionally followed by a
|
|
key symbol which determines what kind of statement it is. The key
|
|
symbol determines the syntax of the rest of the statement. If the
|
|
symbol begins with a dot ‘<samp>.</samp>’ then the statement is an assembler
|
|
directive: typically valid for any computer. If the symbol begins with
|
|
a letter the statement is an assembly language <em>instruction</em>: it
|
|
assembles into a machine language instruction.
|
|
Different versions of <code>as</code> for different computers
|
|
recognize different instructions. In fact, the same symbol may
|
|
represent a different instruction in a different computer’s assembly
|
|
language.
|
|
</p>
|
|
<a name="index-_003a-_0028label_0029"></a>
|
|
<a name="index-label-_0028_003a_0029"></a>
|
|
<p>A label is a symbol immediately followed by a colon (<code>:</code>).
|
|
Whitespace before a label or after a colon is permitted, but you may not
|
|
have whitespace between a label’s symbol and its colon. See <a href="#Labels">Labels</a>.
|
|
</p>
|
|
<p>For HPPA targets, labels need not be immediately followed by a colon, but
|
|
the definition of a label must begin in column zero. This also implies that
|
|
only one label may be defined on each line.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">label: .directive followed by something
|
|
another_label: # This is an empty statement.
|
|
instruction operand_1, operand_2, …
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="Constants"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Statements" accesskey="p" rel="previous">Statements</a>, Up: <a href="#Syntax" accesskey="u" rel="up">Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Constants-1"></a>
|
|
<h3 class="section">3.6 Constants</h3>
|
|
|
|
<a name="index-constants"></a>
|
|
<p>A constant is a number, written so that its value is known by
|
|
inspection, without knowing any context. Like this:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">.byte 74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value.
|
|
.ascii "Ring the bell\7" # A string constant.
|
|
.octa 0x123456789abcdef0123456789ABCDEF0 # A bignum.
|
|
.float 0f-314159265358979323846264338327\
|
|
95028841971.693993751E-40 # - pi, a flonum.
|
|
</pre></div>
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Characters" accesskey="1">Characters</a>:</td><td> </td><td align="left" valign="top">Character Constants
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Numbers" accesskey="2">Numbers</a>:</td><td> </td><td align="left" valign="top">Number Constants
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Characters"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Numbers" accesskey="n" rel="next">Numbers</a>, Up: <a href="#Constants" accesskey="u" rel="up">Constants</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Character-Constants"></a>
|
|
<h4 class="subsection">3.6.1 Character Constants</h4>
|
|
|
|
<a name="index-character-constants"></a>
|
|
<a name="index-constants_002c-character"></a>
|
|
<p>There are two kinds of character constants. A <em>character</em> stands
|
|
for one character in one byte and its value may be used in
|
|
numeric expressions. String constants (properly called string
|
|
<em>literals</em>) are potentially many bytes and their values may not be
|
|
used in arithmetic expressions.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Strings" accesskey="1">Strings</a>:</td><td> </td><td align="left" valign="top">Strings
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Chars" accesskey="2">Chars</a>:</td><td> </td><td align="left" valign="top">Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Strings"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Chars" accesskey="n" rel="next">Chars</a>, Up: <a href="#Characters" accesskey="u" rel="up">Characters</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Strings-1"></a>
|
|
<h4 class="subsubsection">3.6.1.1 Strings</h4>
|
|
|
|
<a name="index-string-constants"></a>
|
|
<a name="index-constants_002c-string"></a>
|
|
<p>A <em>string</em> is written between double-quotes. It may contain
|
|
double-quotes or null characters. The way to get special characters
|
|
into a string is to <em>escape</em> these characters: precede them with
|
|
a backslash ‘<samp>\</samp>’ character. For example ‘<samp>\\</samp>’ represents
|
|
one backslash: the first <code>\</code> is an escape which tells
|
|
<code>as</code> to interpret the second character literally as a backslash
|
|
(which prevents <code>as</code> from recognizing the second <code>\</code> as an
|
|
escape character). The complete list of escapes follows.
|
|
</p>
|
|
<a name="index-escape-codes_002c-character"></a>
|
|
<a name="index-character-escape-codes"></a>
|
|
<dl compact="compact">
|
|
<dd><a name="index--_005cb-_0028backspace-character_0029"></a>
|
|
<a name="index-backspace-_0028_005cb_0029"></a>
|
|
</dd>
|
|
<dt><kbd>\b</kbd></dt>
|
|
<dd><p>Mnemonic for backspace; for ASCII this is octal code 010.
|
|
</p>
|
|
<a name="index--_005cf-_0028formfeed-character_0029"></a>
|
|
<a name="index-formfeed-_0028_005cf_0029"></a>
|
|
</dd>
|
|
<dt><kbd>backslash-f</kbd></dt>
|
|
<dd><p>Mnemonic for FormFeed; for ASCII this is octal code 014.
|
|
</p>
|
|
<a name="index--_005cn-_0028newline-character_0029"></a>
|
|
<a name="index-newline-_0028_005cn_0029"></a>
|
|
</dd>
|
|
<dt><kbd>\n</kbd></dt>
|
|
<dd><p>Mnemonic for newline; for ASCII this is octal code 012.
|
|
</p>
|
|
<a name="index--_005cr-_0028carriage-return-character_0029"></a>
|
|
<a name="index-carriage-return-_0028backslash_002dr_0029"></a>
|
|
</dd>
|
|
<dt><kbd>\r</kbd></dt>
|
|
<dd><p>Mnemonic for carriage-Return; for ASCII this is octal code 015.
|
|
</p>
|
|
<a name="index--_005ct-_0028tab_0029"></a>
|
|
<a name="index-tab-_0028_005ct_0029"></a>
|
|
</dd>
|
|
<dt><kbd>\t</kbd></dt>
|
|
<dd><p>Mnemonic for horizontal Tab; for ASCII this is octal code 011.
|
|
</p>
|
|
<a name="index--_005cddd-_0028octal-character-code_0029"></a>
|
|
<a name="index-octal-character-code-_0028_005cddd_0029"></a>
|
|
</dd>
|
|
<dt><kbd>\ <var>digit</var> <var>digit</var> <var>digit</var></kbd></dt>
|
|
<dd><p>An octal character code. The numeric code is 3 octal digits.
|
|
For compatibility with other Unix systems, 8 and 9 are accepted as digits:
|
|
for example, <code>\008</code> has the value 010, and <code>\009</code> the value 011.
|
|
</p>
|
|
<a name="index--_005cxd_002e_002e_002e-_0028hex-character-code_0029"></a>
|
|
<a name="index-hex-character-code-_0028_005cxd_002e_002e_002e_0029"></a>
|
|
</dd>
|
|
<dt><kbd>\<code>x</code> <var>hex-digits...</var></kbd></dt>
|
|
<dd><p>A hex character code. All trailing hex digits are combined. Either upper or
|
|
lower case <code>x</code> works.
|
|
</p>
|
|
<a name="index--_005c_005c-_0028_005c-character_0029"></a>
|
|
<a name="index-backslash-_0028_005c_005c_0029"></a>
|
|
</dd>
|
|
<dt><kbd>\\</kbd></dt>
|
|
<dd><p>Represents one ‘<samp>\</samp>’ character.
|
|
</p>
|
|
<a name="index--_005c_0022-_0028doublequote-character_0029"></a>
|
|
<a name="index-doublequote-_0028_005c_0022_0029"></a>
|
|
</dd>
|
|
<dt><kbd>\"</kbd></dt>
|
|
<dd><p>Represents one ‘<samp>"</samp>’ character. Needed in strings to represent
|
|
this character, because an unescaped ‘<samp>"</samp>’ would end the string.
|
|
</p>
|
|
</dd>
|
|
<dt><kbd>\ <var>anything-else</var></kbd></dt>
|
|
<dd><p>Any other character when escaped by <kbd>\</kbd> gives a warning, but
|
|
assembles as if the ‘<samp>\</samp>’ was not present. The idea is that if
|
|
you used an escape sequence you clearly didn’t want the literal
|
|
interpretation of the following character. However <code>as</code> has no
|
|
other interpretation, so <code>as</code> knows it is giving you the wrong
|
|
code and warns you of the fact.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Which characters are escapable, and what those escapes represent,
|
|
varies widely among assemblers. The current set is what we think
|
|
the BSD 4.2 assembler recognizes, and is a subset of what most C
|
|
compilers recognize. If you are in doubt, do not use an escape
|
|
sequence.
|
|
</p>
|
|
<hr>
|
|
<a name="Chars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Strings" accesskey="p" rel="previous">Strings</a>, Up: <a href="#Characters" accesskey="u" rel="up">Characters</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Characters-1"></a>
|
|
<h4 class="subsubsection">3.6.1.2 Characters</h4>
|
|
|
|
<a name="index-single-character-constant"></a>
|
|
<a name="index-character_002c-single"></a>
|
|
<a name="index-constant_002c-single-character"></a>
|
|
<p>A single character may be written as a single quote immediately followed by
|
|
that character. Some backslash escapes apply to characters, <code>\b</code>,
|
|
<code>\f</code>, <code>\n</code>, <code>\r</code>, <code>\t</code>, and <code>\"</code> with the same meaning
|
|
as for strings, plus <code>\'</code> for a single quote. So if you want to write the
|
|
character backslash, you must write <kbd>'\\</kbd> where the first <code>\</code> escapes
|
|
the second <code>\</code>. As you can see, the quote is an acute accent, not a grave
|
|
accent. A newline
|
|
immediately following an acute accent is taken as a literal character
|
|
and does not count as the end of a statement. The value of a character
|
|
constant in a numeric expression is the machine’s byte-wide code for
|
|
that character. <code>as</code> assumes your character code is ASCII:
|
|
<kbd>'A</kbd> means 65, <kbd>'B</kbd> means 66, and so on.
|
|
</p>
|
|
<hr>
|
|
<a name="Numbers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Characters" accesskey="p" rel="previous">Characters</a>, Up: <a href="#Constants" accesskey="u" rel="up">Constants</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Number-Constants"></a>
|
|
<h4 class="subsection">3.6.2 Number Constants</h4>
|
|
|
|
<a name="index-constants_002c-number"></a>
|
|
<a name="index-number-constants"></a>
|
|
<p><code>as</code> distinguishes three kinds of numbers according to how they
|
|
are stored in the target machine. <em>Integers</em> are numbers that
|
|
would fit into an <code>int</code> in the C language. <em>Bignums</em> are
|
|
integers, but they are stored in more than 32 bits. <em>Flonums</em>
|
|
are floating point numbers, described below.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Integers" accesskey="1">Integers</a>:</td><td> </td><td align="left" valign="top">Integers
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Bignums" accesskey="2">Bignums</a>:</td><td> </td><td align="left" valign="top">Bignums
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Flonums" accesskey="3">Flonums</a>:</td><td> </td><td align="left" valign="top">Flonums
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Integers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Bignums" accesskey="n" rel="next">Bignums</a>, Up: <a href="#Numbers" accesskey="u" rel="up">Numbers</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Integers-1"></a>
|
|
<h4 class="subsubsection">3.6.2.1 Integers</h4>
|
|
<a name="index-integers"></a>
|
|
<a name="index-constants_002c-integer"></a>
|
|
|
|
<a name="index-binary-integers"></a>
|
|
<a name="index-integers_002c-binary"></a>
|
|
<p>A binary integer is ‘<samp>0b</samp>’ or ‘<samp>0B</samp>’ followed by zero or more of
|
|
the binary digits ‘<samp>01</samp>’.
|
|
</p>
|
|
<a name="index-octal-integers"></a>
|
|
<a name="index-integers_002c-octal"></a>
|
|
<p>An octal integer is ‘<samp>0</samp>’ followed by zero or more of the octal
|
|
digits (‘<samp>01234567</samp>’).
|
|
</p>
|
|
<a name="index-decimal-integers"></a>
|
|
<a name="index-integers_002c-decimal"></a>
|
|
<p>A decimal integer starts with a non-zero digit followed by zero or
|
|
more digits (‘<samp>0123456789</samp>’).
|
|
</p>
|
|
<a name="index-hexadecimal-integers"></a>
|
|
<a name="index-integers_002c-hexadecimal"></a>
|
|
<p>A hexadecimal integer is ‘<samp>0x</samp>’ or ‘<samp>0X</samp>’ followed by one or
|
|
more hexadecimal digits chosen from ‘<samp>0123456789abcdefABCDEF</samp>’.
|
|
</p>
|
|
<p>Integers have the usual values. To denote a negative integer, use
|
|
the prefix operator ‘<samp>-</samp>’ discussed under expressions
|
|
(see <a href="#Prefix-Ops">Prefix Operators</a>).
|
|
</p>
|
|
<hr>
|
|
<a name="Bignums"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Flonums" accesskey="n" rel="next">Flonums</a>, Previous: <a href="#Integers" accesskey="p" rel="previous">Integers</a>, Up: <a href="#Numbers" accesskey="u" rel="up">Numbers</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Bignums-1"></a>
|
|
<h4 class="subsubsection">3.6.2.2 Bignums</h4>
|
|
|
|
<a name="index-bignums"></a>
|
|
<a name="index-constants_002c-bignum"></a>
|
|
<p>A <em>bignum</em> has the same syntax and semantics as an integer
|
|
except that the number (or its negative) takes more than 32 bits to
|
|
represent in binary. The distinction is made because in some places
|
|
integers are permitted while bignums are not.
|
|
</p>
|
|
<hr>
|
|
<a name="Flonums"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Bignums" accesskey="p" rel="previous">Bignums</a>, Up: <a href="#Numbers" accesskey="u" rel="up">Numbers</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Flonums-1"></a>
|
|
<h4 class="subsubsection">3.6.2.3 Flonums</h4>
|
|
<a name="index-flonums"></a>
|
|
<a name="index-floating-point-numbers"></a>
|
|
<a name="index-constants_002c-floating-point"></a>
|
|
|
|
<a name="index-precision_002c-floating-point"></a>
|
|
<p>A <em>flonum</em> represents a floating point number. The translation is
|
|
indirect: a decimal floating point number from the text is converted by
|
|
<code>as</code> to a generic binary floating point number of more than
|
|
sufficient precision. This generic floating point number is converted
|
|
to a particular computer’s floating point format (or formats) by a
|
|
portion of <code>as</code> specialized to that computer.
|
|
</p>
|
|
<p>A flonum is written by writing (in order)
|
|
</p><ul>
|
|
<li> The digit ‘<samp>0</samp>’.
|
|
(‘<samp>0</samp>’ is optional on the HPPA.)
|
|
|
|
</li><li> A letter, to tell <code>as</code> the rest of the number is a flonum.
|
|
<kbd>e</kbd> is recommended. Case is not important.
|
|
|
|
<p>On the H8/300 and Renesas / SuperH SH architectures, the letter must be
|
|
one of the letters ‘<samp>DFPRSX</samp>’ (in upper or lower case).
|
|
</p>
|
|
<p>On the ARC, the letter must be one of the letters ‘<samp>DFRS</samp>’
|
|
(in upper or lower case).
|
|
</p>
|
|
<p>On the HPPA architecture, the letter must be ‘<samp>E</samp>’ (upper case only).
|
|
</p>
|
|
</li><li> An optional sign: either ‘<samp>+</samp>’ or ‘<samp>-</samp>’.
|
|
|
|
</li><li> An optional <em>integer part</em>: zero or more decimal digits.
|
|
|
|
</li><li> An optional <em>fractional part</em>: ‘<samp>.</samp>’ followed by zero
|
|
or more decimal digits.
|
|
|
|
</li><li> An optional exponent, consisting of:
|
|
|
|
<ul>
|
|
<li> An ‘<samp>E</samp>’ or ‘<samp>e</samp>’.
|
|
</li><li> Optional sign: either ‘<samp>+</samp>’ or ‘<samp>-</samp>’.
|
|
</li><li> One or more decimal digits.
|
|
</li></ul>
|
|
|
|
</li></ul>
|
|
|
|
<p>At least one of the integer part or the fractional part must be
|
|
present. The floating point number has the usual base-10 value.
|
|
</p>
|
|
<p><code>as</code> does all processing using integers. Flonums are computed
|
|
independently of any floating point hardware in the computer running
|
|
<code>as</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="Sections"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Symbols" accesskey="n" rel="next">Symbols</a>, Previous: <a href="#Syntax" accesskey="p" rel="previous">Syntax</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Sections-and-Relocation"></a>
|
|
<h2 class="chapter">4 Sections and Relocation</h2>
|
|
<a name="index-sections"></a>
|
|
<a name="index-relocation"></a>
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Secs-Background" accesskey="1">Secs Background</a>:</td><td> </td><td align="left" valign="top">Background
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Ld-Sections" accesskey="2">Ld Sections</a>:</td><td> </td><td align="left" valign="top">Linker Sections
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#As-Sections" accesskey="3">As Sections</a>:</td><td> </td><td align="left" valign="top">Assembler Internal Sections
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Sub_002dSections" accesskey="4">Sub-Sections</a>:</td><td> </td><td align="left" valign="top">Sub-Sections
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#bss" accesskey="5">bss</a>:</td><td> </td><td align="left" valign="top">bss Section
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Secs-Background"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Ld-Sections" accesskey="n" rel="next">Ld Sections</a>, Up: <a href="#Sections" accesskey="u" rel="up">Sections</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Background"></a>
|
|
<h3 class="section">4.1 Background</h3>
|
|
|
|
<p>Roughly, a section is a range of addresses, with no gaps; all data
|
|
“in” those addresses is treated the same for some particular purpose.
|
|
For example there may be a “read only” section.
|
|
</p>
|
|
<a name="index-linker_002c-and-assembler"></a>
|
|
<a name="index-assembler_002c-and-linker"></a>
|
|
<p>The linker <code>ld</code> reads many object files (partial programs) and
|
|
combines their contents to form a runnable program. When <code>as</code>
|
|
emits an object file, the partial program is assumed to start at address 0.
|
|
<code>ld</code> assigns the final addresses for the partial program, so that
|
|
different partial programs do not overlap. This is actually an
|
|
oversimplification, but it suffices to explain how <code>as</code> uses
|
|
sections.
|
|
</p>
|
|
<p><code>ld</code> moves blocks of bytes of your program to their run-time
|
|
addresses. These blocks slide to their run-time addresses as rigid
|
|
units; their length does not change and neither does the order of bytes
|
|
within them. Such a rigid unit is called a <em>section</em>. Assigning
|
|
run-time addresses to sections is called <em>relocation</em>. It includes
|
|
the task of adjusting mentions of object-file addresses so they refer to
|
|
the proper run-time addresses.
|
|
For the H8/300, and for the Renesas / SuperH SH,
|
|
<code>as</code> pads sections if needed to
|
|
ensure they end on a word (sixteen bit) boundary.
|
|
</p>
|
|
<a name="index-standard-assembler-sections"></a>
|
|
<p>An object file written by <code>as</code> has at least three sections, any
|
|
of which may be empty. These are named <em>text</em>, <em>data</em> and
|
|
<em>bss</em> sections.
|
|
</p>
|
|
<p>When it generates COFF or ELF output,
|
|
<code>as</code> can also generate whatever other named sections you specify
|
|
using the ‘<samp>.section</samp>’ directive (see <a href="#Section"><code>.section</code></a>).
|
|
If you do not use any directives that place output in the ‘<samp>.text</samp>’
|
|
or ‘<samp>.data</samp>’ sections, these sections still exist, but are empty.
|
|
</p>
|
|
<p>When <code>as</code> generates SOM or ELF output for the HPPA,
|
|
<code>as</code> can also generate whatever other named sections you
|
|
specify using the ‘<samp>.space</samp>’ and ‘<samp>.subspace</samp>’ directives. See
|
|
<cite>HP9000 Series 800 Assembly Language Reference Manual</cite>
|
|
(HP 92432-90001) for details on the ‘<samp>.space</samp>’ and ‘<samp>.subspace</samp>’
|
|
assembler directives.
|
|
</p>
|
|
<p>Additionally, <code>as</code> uses different names for the standard
|
|
text, data, and bss sections when generating SOM output. Program text
|
|
is placed into the ‘<samp>$CODE$</samp>’ section, data into ‘<samp>$DATA$</samp>’, and
|
|
BSS into ‘<samp>$BSS$</samp>’.
|
|
</p>
|
|
<p>Within the object file, the text section starts at address <code>0</code>, the
|
|
data section follows, and the bss section follows the data section.
|
|
</p>
|
|
<p>When generating either SOM or ELF output files on the HPPA, the text
|
|
section starts at address <code>0</code>, the data section at address
|
|
<code>0x4000000</code>, and the bss section follows the data section.
|
|
</p>
|
|
<p>To let <code>ld</code> know which data changes when the sections are
|
|
relocated, and how to change that data, <code>as</code> also writes to the
|
|
object file details of the relocation needed. To perform relocation
|
|
<code>ld</code> must know, each time an address in the object
|
|
file is mentioned:
|
|
</p><ul>
|
|
<li> Where in the object file is the beginning of this reference to
|
|
an address?
|
|
</li><li> How long (in bytes) is this reference?
|
|
</li><li> Which section does the address refer to? What is the numeric value of
|
|
<div class="display">
|
|
<pre class="display">(<var>address</var>) - (<var>start-address of section</var>)?
|
|
</pre></div>
|
|
</li><li> Is the reference to an address “Program-Counter relative”?
|
|
</li></ul>
|
|
|
|
<a name="index-addresses_002c-format-of"></a>
|
|
<a name="index-section_002drelative-addressing"></a>
|
|
<p>In fact, every address <code>as</code> ever uses is expressed as
|
|
</p><div class="display">
|
|
<pre class="display">(<var>section</var>) + (<var>offset into section</var>)
|
|
</pre></div>
|
|
<p>Further, most expressions <code>as</code> computes have this section-relative
|
|
nature.
|
|
(For some object formats, such as SOM for the HPPA, some expressions are
|
|
symbol-relative instead.)
|
|
</p>
|
|
<p>In this manual we use the notation {<var>secname</var> <var>N</var>} to mean “offset
|
|
<var>N</var> into section <var>secname</var>.”
|
|
</p>
|
|
<p>Apart from text, data and bss sections you need to know about the
|
|
<em>absolute</em> section. When <code>ld</code> mixes partial programs,
|
|
addresses in the absolute section remain unchanged. For example, address
|
|
<code>{absolute 0}</code> is “relocated” to run-time address 0 by
|
|
<code>ld</code>. Although the linker never arranges two partial programs’
|
|
data sections with overlapping addresses after linking, <em>by definition</em>
|
|
their absolute sections must overlap. Address <code>{absolute 239}</code> in one
|
|
part of a program is always the same address when the program is running as
|
|
address <code>{absolute 239}</code> in any other part of the program.
|
|
</p>
|
|
<p>The idea of sections is extended to the <em>undefined</em> section. Any
|
|
address whose section is unknown at assembly time is by definition
|
|
rendered {undefined <var>U</var>}—where <var>U</var> is filled in later.
|
|
Since numbers are always defined, the only way to generate an undefined
|
|
address is to mention an undefined symbol. A reference to a named
|
|
common block would be such a symbol: its value is unknown at assembly
|
|
time so it has section <em>undefined</em>.
|
|
</p>
|
|
<p>By analogy the word <em>section</em> is used to describe groups of sections in
|
|
the linked program. <code>ld</code> puts all partial programs’ text
|
|
sections in contiguous addresses in the linked program. It is
|
|
customary to refer to the <em>text section</em> of a program, meaning all
|
|
the addresses of all partial programs’ text sections. Likewise for
|
|
data and bss sections.
|
|
</p>
|
|
<p>Some sections are manipulated by <code>ld</code>; others are invented for
|
|
use of <code>as</code> and have no meaning except during assembly.
|
|
</p>
|
|
<hr>
|
|
<a name="Ld-Sections"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#As-Sections" accesskey="n" rel="next">As Sections</a>, Previous: <a href="#Secs-Background" accesskey="p" rel="previous">Secs Background</a>, Up: <a href="#Sections" accesskey="u" rel="up">Sections</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Linker-Sections"></a>
|
|
<h3 class="section">4.2 Linker Sections</h3>
|
|
<p><code>ld</code> deals with just four kinds of sections, summarized below.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-named-sections"></a>
|
|
<a name="index-sections_002c-named"></a>
|
|
</dd>
|
|
<dt><strong>named sections</strong></dt>
|
|
<dd><a name="index-text-section"></a>
|
|
<a name="index-data-section"></a>
|
|
</dd>
|
|
<dt><strong>text section</strong></dt>
|
|
<dt><strong>data section</strong></dt>
|
|
<dd><p>These sections hold your program. <code>as</code> and <code>ld</code> treat them as
|
|
separate but equal sections. Anything you can say of one section is
|
|
true of another.
|
|
When the program is running, however, it is
|
|
customary for the text section to be unalterable. The
|
|
text section is often shared among processes: it contains
|
|
instructions, constants and the like. The data section of a running
|
|
program is usually alterable: for example, C variables would be stored
|
|
in the data section.
|
|
</p>
|
|
<a name="index-bss-section"></a>
|
|
</dd>
|
|
<dt><strong>bss section</strong></dt>
|
|
<dd><p>This section contains zeroed bytes when your program begins running. It
|
|
is used to hold uninitialized variables or common storage. The length of
|
|
each partial program’s bss section is important, but because it starts
|
|
out containing zeroed bytes there is no need to store explicit zero
|
|
bytes in the object file. The bss section was invented to eliminate
|
|
those explicit zeros from object files.
|
|
</p>
|
|
<a name="index-absolute-section"></a>
|
|
</dd>
|
|
<dt><strong>absolute section</strong></dt>
|
|
<dd><p>Address 0 of this section is always “relocated” to runtime address 0.
|
|
This is useful if you want to refer to an address that <code>ld</code> must
|
|
not change when relocating. In this sense we speak of absolute
|
|
addresses being “unrelocatable”: they do not change during relocation.
|
|
</p>
|
|
<a name="index-undefined-section"></a>
|
|
</dd>
|
|
<dt><strong>undefined section</strong></dt>
|
|
<dd><p>This “section” is a catch-all for address references to objects not in
|
|
the preceding sections.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="index-relocation-example"></a>
|
|
<p>An idealized example of three relocatable sections follows.
|
|
The example uses the traditional section names ‘<samp>.text</samp>’ and ‘<samp>.data</samp>’.
|
|
Memory addresses are on the horizontal axis.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> +-----+----+--+
|
|
partial program # 1: |ttttt|dddd|00|
|
|
+-----+----+--+
|
|
|
|
text data bss
|
|
seg. seg. seg.
|
|
|
|
+---+---+---+
|
|
partial program # 2: |TTT|DDD|000|
|
|
+---+---+---+
|
|
|
|
+--+---+-----+--+----+---+-----+~~
|
|
linked program: | |TTT|ttttt| |dddd|DDD|00000|
|
|
+--+---+-----+--+----+---+-----+~~
|
|
|
|
addresses: 0 …
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="As-Sections"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Sub_002dSections" accesskey="n" rel="next">Sub-Sections</a>, Previous: <a href="#Ld-Sections" accesskey="p" rel="previous">Ld Sections</a>, Up: <a href="#Sections" accesskey="u" rel="up">Sections</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-Internal-Sections"></a>
|
|
<h3 class="section">4.3 Assembler Internal Sections</h3>
|
|
|
|
<a name="index-internal-assembler-sections"></a>
|
|
<a name="index-sections-in-messages_002c-internal"></a>
|
|
<p>These sections are meant only for the internal use of <code>as</code>. They
|
|
have no meaning at run-time. You do not really need to know about these
|
|
sections for most purposes; but they can be mentioned in <code>as</code>
|
|
warning messages, so it might be helpful to have an idea of their
|
|
meanings to <code>as</code>. These sections are used to permit the
|
|
value of every expression in your assembly language program to be a
|
|
section-relative address.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-assembler-internal-logic-error"></a>
|
|
</dd>
|
|
<dt><b>ASSEMBLER-INTERNAL-LOGIC-ERROR!</b></dt>
|
|
<dd><p>An internal assembler logic error has been found. This means there is a
|
|
bug in the assembler.
|
|
</p>
|
|
<a name="index-expr-_0028internal-section_0029"></a>
|
|
</dd>
|
|
<dt><b>expr section</b></dt>
|
|
<dd><p>The assembler stores complex expression internally as combinations of
|
|
symbols. When it needs to represent an expression as a symbol, it puts
|
|
it in the expr section.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Sub_002dSections"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#bss" accesskey="n" rel="next">bss</a>, Previous: <a href="#As-Sections" accesskey="p" rel="previous">As Sections</a>, Up: <a href="#Sections" accesskey="u" rel="up">Sections</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Sub_002dSections-1"></a>
|
|
<h3 class="section">4.4 Sub-Sections</h3>
|
|
|
|
<a name="index-numbered-subsections"></a>
|
|
<a name="index-grouping-data"></a>
|
|
<p>Assembled bytes
|
|
conventionally
|
|
fall into two sections: text and data.
|
|
You may have separate groups of
|
|
data in named sections
|
|
that you want to end up near to each other in the object file, even though they
|
|
are not contiguous in the assembler source. <code>as</code> allows you to
|
|
use <em>subsections</em> for this purpose. Within each section, there can be
|
|
numbered subsections with values from 0 to 8192. Objects assembled into the
|
|
same subsection go into the object file together with other objects in the same
|
|
subsection. For example, a compiler might want to store constants in the text
|
|
section, but might not want to have them interspersed with the program being
|
|
assembled. In this case, the compiler could issue a ‘<samp>.text 0</samp>’ before each
|
|
section of code being output, and a ‘<samp>.text 1</samp>’ before each group of
|
|
constants being output.
|
|
</p>
|
|
<p>Subsections are optional. If you do not use subsections, everything
|
|
goes in subsection number zero.
|
|
</p>
|
|
<p>Each subsection is zero-padded up to a multiple of four bytes.
|
|
(Subsections may be padded a different amount on different flavors
|
|
of <code>as</code>.)
|
|
</p>
|
|
<p>Subsections appear in your object file in numeric order, lowest numbered
|
|
to highest. (All this to be compatible with other people’s assemblers.)
|
|
The object file contains no representation of subsections; <code>ld</code> and
|
|
other programs that manipulate object files see no trace of them.
|
|
They just see all your text subsections as a text section, and all your
|
|
data subsections as a data section.
|
|
</p>
|
|
<p>To specify which subsection you want subsequent statements assembled
|
|
into, use a numeric argument to specify it, in a ‘<samp>.text
|
|
<var>expression</var></samp>’ or a ‘<samp>.data <var>expression</var></samp>’ statement.
|
|
When generating COFF output, you
|
|
can also use an extra subsection
|
|
argument with arbitrary named sections: ‘<samp>.section <var>name</var>,
|
|
<var>expression</var></samp>’.
|
|
When generating ELF output, you
|
|
can also use the <code>.subsection</code> directive (see <a href="#SubSection">SubSection</a>)
|
|
to specify a subsection: ‘<samp>.subsection <var>expression</var></samp>’.
|
|
<var>Expression</var> should be an absolute expression
|
|
(see <a href="#Expressions">Expressions</a>). If you just say ‘<samp>.text</samp>’ then ‘<samp>.text 0</samp>’
|
|
is assumed. Likewise ‘<samp>.data</samp>’ means ‘<samp>.data 0</samp>’. Assembly
|
|
begins in <code>text 0</code>. For instance:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">.text 0 # The default subsection is text 0 anyway.
|
|
.ascii "This lives in the first text subsection. *"
|
|
.text 1
|
|
.ascii "But this lives in the second text subsection."
|
|
.data 0
|
|
.ascii "This lives in the data section,"
|
|
.ascii "in the first data subsection."
|
|
.text 0
|
|
.ascii "This lives in the first text section,"
|
|
.ascii "immediately following the asterisk (*)."
|
|
</pre></div>
|
|
|
|
<p>Each section has a <em>location counter</em> incremented by one for every byte
|
|
assembled into that section. Because subsections are merely a convenience
|
|
restricted to <code>as</code> there is no concept of a subsection location
|
|
counter. There is no way to directly manipulate a location counter—but the
|
|
<code>.align</code> directive changes it, and any label definition captures its
|
|
current value. The location counter of the section where statements are being
|
|
assembled is said to be the <em>active</em> location counter.
|
|
</p>
|
|
<hr>
|
|
<a name="bss"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Sub_002dSections" accesskey="p" rel="previous">Sub-Sections</a>, Up: <a href="#Sections" accesskey="u" rel="up">Sections</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="bss-Section"></a>
|
|
<h3 class="section">4.5 bss Section</h3>
|
|
|
|
<a name="index-bss-section-1"></a>
|
|
<a name="index-common-variable-storage"></a>
|
|
<p>The bss section is used for local common variable storage.
|
|
You may allocate address space in the bss section, but you may
|
|
not dictate data to load into it before your program executes. When
|
|
your program starts running, all the contents of the bss
|
|
section are zeroed bytes.
|
|
</p>
|
|
<p>The <code>.lcomm</code> pseudo-op defines a symbol in the bss section; see
|
|
<a href="#Lcomm"><code>.lcomm</code></a>.
|
|
</p>
|
|
<p>The <code>.comm</code> pseudo-op may be used to declare a common symbol, which is
|
|
another form of uninitialized symbol; see <a href="#Comm"><code>.comm</code></a>.
|
|
</p>
|
|
<p>When assembling for a target which supports multiple sections, such as ELF or
|
|
COFF, you may switch into the <code>.bss</code> section and define symbols as usual;
|
|
see <a href="#Section"><code>.section</code></a>. You may only assemble zero values into the
|
|
section. Typically the section will only contain symbol definitions and
|
|
<code>.skip</code> directives (see <a href="#Skip"><code>.skip</code></a>).
|
|
</p>
|
|
<hr>
|
|
<a name="Symbols"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Expressions" accesskey="n" rel="next">Expressions</a>, Previous: <a href="#Sections" accesskey="p" rel="previous">Sections</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbols-2"></a>
|
|
<h2 class="chapter">5 Symbols</h2>
|
|
|
|
<a name="index-symbols"></a>
|
|
<p>Symbols are a central concept: the programmer uses symbols to name
|
|
things, the linker uses symbols to link, and the debugger uses symbols
|
|
to debug.
|
|
</p>
|
|
<blockquote>
|
|
<a name="index-debuggers_002c-and-symbol-order"></a>
|
|
<p><em>Warning:</em> <code>as</code> does not place symbols in the object file in
|
|
the same order they were declared. This may break some debuggers.
|
|
</p></blockquote>
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Labels" accesskey="1">Labels</a>:</td><td> </td><td align="left" valign="top">Labels
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Setting-Symbols" accesskey="2">Setting Symbols</a>:</td><td> </td><td align="left" valign="top">Giving Symbols Other Values
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Symbol-Names" accesskey="3">Symbol Names</a>:</td><td> </td><td align="left" valign="top">Symbol Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Dot" accesskey="4">Dot</a>:</td><td> </td><td align="left" valign="top">The Special Dot Symbol
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Symbol-Attributes" accesskey="5">Symbol Attributes</a>:</td><td> </td><td align="left" valign="top">Symbol Attributes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Labels"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Setting-Symbols" accesskey="n" rel="next">Setting Symbols</a>, Up: <a href="#Symbols" accesskey="u" rel="up">Symbols</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Labels-1"></a>
|
|
<h3 class="section">5.1 Labels</h3>
|
|
|
|
<a name="index-labels"></a>
|
|
<p>A <em>label</em> is written as a symbol immediately followed by a colon
|
|
‘<samp>:</samp>’. The symbol then represents the current value of the
|
|
active location counter, and is, for example, a suitable instruction
|
|
operand. You are warned if you use the same symbol to represent two
|
|
different locations: the first definition overrides any other
|
|
definitions.
|
|
</p>
|
|
<p>On the HPPA, the usual form for a label need not be immediately followed by a
|
|
colon, but instead must start in column zero. Only one label may be defined on
|
|
a single line. To work around this, the HPPA version of <code>as</code> also
|
|
provides a special directive <code>.label</code> for defining labels more flexibly.
|
|
</p>
|
|
<hr>
|
|
<a name="Setting-Symbols"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Symbol-Names" accesskey="n" rel="next">Symbol Names</a>, Previous: <a href="#Labels" accesskey="p" rel="previous">Labels</a>, Up: <a href="#Symbols" accesskey="u" rel="up">Symbols</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Giving-Symbols-Other-Values"></a>
|
|
<h3 class="section">5.2 Giving Symbols Other Values</h3>
|
|
|
|
<a name="index-assigning-values-to-symbols"></a>
|
|
<a name="index-symbol-values_002c-assigning"></a>
|
|
<p>A symbol can be given an arbitrary value by writing a symbol, followed
|
|
by an equals sign ‘<samp>=</samp>’, followed by an expression
|
|
(see <a href="#Expressions">Expressions</a>). This is equivalent to using the <code>.set</code>
|
|
directive. See <a href="#Set"><code>.set</code></a>. In the same way, using a double
|
|
equals sign ‘<samp>=</samp>’‘<samp>=</samp>’ here represents an equivalent of the
|
|
<code>.eqv</code> directive. See <a href="#Eqv"><code>.eqv</code></a>.
|
|
</p>
|
|
<p>Blackfin does not support symbol assignment with ‘<samp>=</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="Symbol-Names"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Dot" accesskey="n" rel="next">Dot</a>, Previous: <a href="#Setting-Symbols" accesskey="p" rel="previous">Setting Symbols</a>, Up: <a href="#Symbols" accesskey="u" rel="up">Symbols</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbol-Names-1"></a>
|
|
<h3 class="section">5.3 Symbol Names</h3>
|
|
|
|
<a name="index-symbol-names"></a>
|
|
<a name="index-names_002c-symbol"></a>
|
|
<p>Symbol names begin with a letter or with one of ‘<samp>._</samp>’. On most
|
|
machines, you can also use <code>$</code> in symbol names; exceptions are
|
|
noted in <a href="#Machine-Dependencies">Machine Dependencies</a>. That character may be followed by any
|
|
string of digits, letters, dollar signs (unless otherwise noted for a
|
|
particular target machine), and underscores. These restrictions do not
|
|
apply when quoting symbol names by ‘<samp>"</samp>’, which is permitted for most
|
|
targets. Escaping characters in quoted symbol names with ‘<samp>\</samp>’ generally
|
|
extends only to ‘<samp>\</samp>’ itself and ‘<samp>"</samp>’, at the time of writing.
|
|
</p>
|
|
<p>Case of letters is significant: <code>foo</code> is a different symbol name
|
|
than <code>Foo</code>.
|
|
</p>
|
|
<p>Symbol names do not start with a digit. An exception to this rule is made for
|
|
Local Labels. See below.
|
|
</p>
|
|
<p>Multibyte characters are supported, but note that the setting of the
|
|
<samp>multibyte-handling</samp> option might prevent their use.
|
|
To generate a symbol name containing
|
|
multibyte characters enclose it within double quotes and use escape codes. cf
|
|
See <a href="#Strings">Strings</a>. Generating a multibyte symbol name from a label is not
|
|
currently supported.
|
|
</p>
|
|
<p>Since multibyte symbol names are unusual, and could possibly be used
|
|
maliciously, <code>as</code> provides a command line option
|
|
(<samp>--multibyte-handling=warn-sym-only</samp>) which can be used to generate a
|
|
warning message whenever a symbol name containing multibyte characters is defined.
|
|
</p>
|
|
<p>Each symbol has exactly one name. Each name in an assembly language program
|
|
refers to exactly one symbol. You may use that symbol name any number of times
|
|
in a program.
|
|
</p>
|
|
<a name="Local-Symbol-Names"></a>
|
|
<h4 class="subheading">Local Symbol Names</h4>
|
|
|
|
<a name="index-local-symbol-names"></a>
|
|
<a name="index-symbol-names_002c-local"></a>
|
|
<p>A local symbol is any symbol beginning with certain local label prefixes.
|
|
By default, the local label prefix is ‘<samp>.L</samp>’ for ELF systems or
|
|
‘<samp>L</samp>’ for traditional a.out systems, but each target may have its own
|
|
set of local label prefixes.
|
|
On the HPPA local symbols begin with ‘<samp>L$</samp>’.
|
|
</p>
|
|
<p>Local symbols are defined and used within the assembler, but they are
|
|
normally not saved in object files. Thus, they are not visible when debugging.
|
|
You may use the ‘<samp>-L</samp>’ option (see <a href="#L">Include Local Symbols</a>)
|
|
to retain the local symbols in the object files.
|
|
</p>
|
|
<a name="Local-Labels-1"></a>
|
|
<h4 class="subheading">Local Labels</h4>
|
|
|
|
<a name="index-local-labels"></a>
|
|
<a name="index-temporary-symbol-names"></a>
|
|
<a name="index-symbol-names_002c-temporary"></a>
|
|
<p>Local labels are different from local symbols. Local labels help compilers and
|
|
programmers use names temporarily. They create symbols which are guaranteed to
|
|
be unique over the entire scope of the input source code and which can be
|
|
referred to by a simple notation. To define a local label, write a label of
|
|
the form ‘<samp><b>N</b>:</samp>’ (where <b>N</b> represents any non-negative integer).
|
|
To refer to the most recent previous definition of that label write
|
|
‘<samp><b>N</b>b</samp>’, using the same number as when you defined the label. To refer
|
|
to the next definition of a local label, write ‘<samp><b>N</b>f</samp>’. The ‘<samp>b</samp>’
|
|
stands for “backwards” and the ‘<samp>f</samp>’ stands for “forwards”.
|
|
</p>
|
|
<p>There is no restriction on how you can use these labels, and you can reuse them
|
|
too. So that it is possible to repeatedly define the same local label (using
|
|
the same number ‘<samp><b>N</b></samp>’), although you can only refer to the most recently
|
|
defined local label of that number (for a backwards reference) or the next
|
|
definition of a specific local label for a forward reference. It is also worth
|
|
noting that the first 10 local labels (‘<samp><b>0:</b></samp>’…‘<samp><b>9:</b></samp>’) are
|
|
implemented in a slightly more efficient manner than the others.
|
|
</p>
|
|
<p>Here is an example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">1: branch 1f
|
|
2: branch 1b
|
|
1: branch 2f
|
|
2: branch 1b
|
|
</pre></div>
|
|
|
|
<p>Which is the equivalent of:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">label_1: branch label_3
|
|
label_2: branch label_1
|
|
label_3: branch label_4
|
|
label_4: branch label_3
|
|
</pre></div>
|
|
|
|
<p>Local label names are only a notational device. They are immediately
|
|
transformed into more conventional symbol names before the assembler uses them.
|
|
The symbol names are stored in the symbol table, appear in error messages, and
|
|
are optionally emitted to the object file. The names are constructed using
|
|
these parts:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code><em>local label prefix</em></code></dt>
|
|
<dd><p>All local symbols begin with the system-specific local label prefix.
|
|
Normally both <code>as</code> and <code>ld</code> forget symbols
|
|
that start with the local label prefix. These labels are
|
|
used for symbols you are never intended to see. If you use the
|
|
‘<samp>-L</samp>’ option then <code>as</code> retains these symbols in the
|
|
object file. If you also instruct <code>ld</code> to retain these symbols,
|
|
you may use them in debugging.
|
|
</p>
|
|
</dd>
|
|
<dt><code><var>number</var></code></dt>
|
|
<dd><p>This is the number that was used in the local label definition. So if the
|
|
label is written ‘<samp>55:</samp>’ then the number is ‘<samp>55</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code><kbd>C-B</kbd></code></dt>
|
|
<dd><p>This unusual character is included so you do not accidentally invent a symbol
|
|
of the same name. The character has ASCII value of ‘<samp>\002</samp>’ (control-B).
|
|
</p>
|
|
</dd>
|
|
<dt><code><em>ordinal number</em></code></dt>
|
|
<dd><p>This is a serial number to keep the labels distinct. The first definition of
|
|
‘<samp>0:</samp>’ gets the number ‘<samp>1</samp>’. The 15th definition of ‘<samp>0:</samp>’ gets the
|
|
number ‘<samp>15</samp>’, and so on. Likewise the first definition of ‘<samp>1:</samp>’ gets
|
|
the number ‘<samp>1</samp>’ and its 15th definition gets ‘<samp>15</samp>’ as well.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>So for example, the first <code>1:</code> may be named <code>.L1<kbd>C-B</kbd>1</code>, and
|
|
the 44th <code>3:</code> may be named <code>.L3<kbd>C-B</kbd>44</code>.
|
|
</p>
|
|
<a name="Dollar-Local-Labels"></a>
|
|
<h4 class="subheading">Dollar Local Labels</h4>
|
|
<a name="index-dollar-local-symbols"></a>
|
|
|
|
<p>On some targets <code>as</code> also supports an even more local form of
|
|
local labels called dollar labels. These labels go out of scope (i.e., they
|
|
become undefined) as soon as a non-local label is defined. Thus they remain
|
|
valid for only a small region of the input source code. Normal local labels,
|
|
by contrast, remain in scope for the entire file, or until they are redefined
|
|
by another occurrence of the same local label.
|
|
</p>
|
|
<p>Dollar labels are defined in exactly the same way as ordinary local labels,
|
|
except that they have a dollar sign suffix to their numeric value, e.g.,
|
|
‘<samp><b>55$:</b></samp>’.
|
|
</p>
|
|
<p>They can also be distinguished from ordinary local labels by their transformed
|
|
names which use ASCII character ‘<samp>\001</samp>’ (control-A) as the magic character
|
|
to distinguish them from ordinary labels. For example, the fifth definition of
|
|
‘<samp>6$</samp>’ may be named ‘<samp>.L6<kbd>C-A</kbd>5</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="Dot"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Symbol-Attributes" accesskey="n" rel="next">Symbol Attributes</a>, Previous: <a href="#Symbol-Names" accesskey="p" rel="previous">Symbol Names</a>, Up: <a href="#Symbols" accesskey="u" rel="up">Symbols</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="The-Special-Dot-Symbol"></a>
|
|
<h3 class="section">5.4 The Special Dot Symbol</h3>
|
|
|
|
<a name="index-dot-_0028symbol_0029"></a>
|
|
<a name="index-_002e-_0028symbol_0029"></a>
|
|
<a name="index-current-address"></a>
|
|
<a name="index-location-counter"></a>
|
|
<p>The special symbol ‘<samp>.</samp>’ refers to the current address that
|
|
<code>as</code> is assembling into. Thus, the expression ‘<samp>melvin:
|
|
.long .</samp>’ defines <code>melvin</code> to contain its own address.
|
|
Assigning a value to <code>.</code> is treated the same as a <code>.org</code>
|
|
directive.
|
|
Thus, the expression ‘<samp>.=.+4</samp>’ is the same as saying
|
|
‘<samp>.space 4</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="Symbol-Attributes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Dot" accesskey="p" rel="previous">Dot</a>, Up: <a href="#Symbols" accesskey="u" rel="up">Symbols</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbol-Attributes-1"></a>
|
|
<h3 class="section">5.5 Symbol Attributes</h3>
|
|
|
|
<a name="index-symbol-attributes"></a>
|
|
<a name="index-attributes_002c-symbol"></a>
|
|
<p>Every symbol has, as well as its name, the attributes “Value” and
|
|
“Type”. Depending on output format, symbols can also have auxiliary
|
|
attributes.
|
|
</p>
|
|
<p>If you use a symbol without defining it, <code>as</code> assumes zero for
|
|
all these attributes, and probably won’t warn you. This makes the
|
|
symbol an externally defined symbol, which is generally what you
|
|
would want.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Symbol-Value" accesskey="1">Symbol Value</a>:</td><td> </td><td align="left" valign="top">Value
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Symbol-Type" accesskey="2">Symbol Type</a>:</td><td> </td><td align="left" valign="top">Type
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#a_002eout-Symbols" accesskey="3">a.out Symbols</a>:</td><td> </td><td align="left" valign="top">Symbol Attributes: <code>a.out</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#COFF-Symbols" accesskey="4">COFF Symbols</a>:</td><td> </td><td align="left" valign="top">Symbol Attributes for COFF
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#SOM-Symbols" accesskey="5">SOM Symbols</a>:</td><td> </td><td align="left" valign="top">Symbol Attributes for SOM
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Symbol-Value"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Symbol-Type" accesskey="n" rel="next">Symbol Type</a>, Up: <a href="#Symbol-Attributes" accesskey="u" rel="up">Symbol Attributes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Value"></a>
|
|
<h4 class="subsection">5.5.1 Value</h4>
|
|
|
|
<a name="index-value-of-a-symbol"></a>
|
|
<a name="index-symbol-value"></a>
|
|
<p>The value of a symbol is (usually) 32 bits. For a symbol which labels a
|
|
location in the text, data, bss or absolute sections the value is the
|
|
number of addresses from the start of that section to the label.
|
|
Naturally for text, data and bss sections the value of a symbol changes
|
|
as <code>ld</code> changes section base addresses during linking. Absolute
|
|
symbols’ values do not change during linking: that is why they are
|
|
called absolute.
|
|
</p>
|
|
<p>The value of an undefined symbol is treated in a special way. If it is
|
|
0 then the symbol is not defined in this assembler source file, and
|
|
<code>ld</code> tries to determine its value from other files linked into the
|
|
same program. You make this kind of symbol simply by mentioning a symbol
|
|
name without defining it. A non-zero value represents a <code>.comm</code>
|
|
common declaration. The value is how much common storage to reserve, in
|
|
bytes (addresses). The symbol refers to the first address of the
|
|
allocated storage.
|
|
</p>
|
|
<hr>
|
|
<a name="Symbol-Type"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#a_002eout-Symbols" accesskey="n" rel="next">a.out Symbols</a>, Previous: <a href="#Symbol-Value" accesskey="p" rel="previous">Symbol Value</a>, Up: <a href="#Symbol-Attributes" accesskey="u" rel="up">Symbol Attributes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Type-1"></a>
|
|
<h4 class="subsection">5.5.2 Type</h4>
|
|
|
|
<a name="index-type-of-a-symbol"></a>
|
|
<a name="index-symbol-type"></a>
|
|
<p>The type attribute of a symbol contains relocation (section)
|
|
information, any flag settings indicating that a symbol is external, and
|
|
(optionally), other information for linkers and debuggers. The exact
|
|
format depends on the object-code output format in use.
|
|
</p>
|
|
<hr>
|
|
<a name="a_002eout-Symbols"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#COFF-Symbols" accesskey="n" rel="next">COFF Symbols</a>, Previous: <a href="#Symbol-Type" accesskey="p" rel="previous">Symbol Type</a>, Up: <a href="#Symbol-Attributes" accesskey="u" rel="up">Symbol Attributes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbol-Attributes_003a-a_002eout"></a>
|
|
<h4 class="subsection">5.5.3 Symbol Attributes: <code>a.out</code></h4>
|
|
|
|
<a name="index-a_002eout-symbol-attributes"></a>
|
|
<a name="index-symbol-attributes_002c-a_002eout"></a>
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Symbol-Desc" accesskey="1">Symbol Desc</a>:</td><td> </td><td align="left" valign="top">Descriptor
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Symbol-Other" accesskey="2">Symbol Other</a>:</td><td> </td><td align="left" valign="top">Other
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Symbol-Desc"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Symbol-Other" accesskey="n" rel="next">Symbol Other</a>, Up: <a href="#a_002eout-Symbols" accesskey="u" rel="up">a.out Symbols</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Descriptor"></a>
|
|
<h4 class="subsubsection">5.5.3.1 Descriptor</h4>
|
|
|
|
<a name="index-descriptor_002c-of-a_002eout-symbol"></a>
|
|
<p>This is an arbitrary 16-bit value. You may establish a symbol’s
|
|
descriptor value by using a <code>.desc</code> statement
|
|
(see <a href="#Desc"><code>.desc</code></a>). A descriptor value means nothing to
|
|
<code>as</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="Symbol-Other"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Symbol-Desc" accesskey="p" rel="previous">Symbol Desc</a>, Up: <a href="#a_002eout-Symbols" accesskey="u" rel="up">a.out Symbols</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Other"></a>
|
|
<h4 class="subsubsection">5.5.3.2 Other</h4>
|
|
|
|
<a name="index-other-attribute_002c-of-a_002eout-symbol"></a>
|
|
<p>This is an arbitrary 8-bit value. It means nothing to <code>as</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="COFF-Symbols"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#SOM-Symbols" accesskey="n" rel="next">SOM Symbols</a>, Previous: <a href="#a_002eout-Symbols" accesskey="p" rel="previous">a.out Symbols</a>, Up: <a href="#Symbol-Attributes" accesskey="u" rel="up">Symbol Attributes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbol-Attributes-for-COFF"></a>
|
|
<h4 class="subsection">5.5.4 Symbol Attributes for COFF</h4>
|
|
|
|
<a name="index-COFF-symbol-attributes"></a>
|
|
<a name="index-symbol-attributes_002c-COFF"></a>
|
|
|
|
<p>The COFF format supports a multitude of auxiliary symbol attributes;
|
|
like the primary symbol attributes, they are set between <code>.def</code> and
|
|
<code>.endef</code> directives.
|
|
</p>
|
|
<a name="Primary-Attributes"></a>
|
|
<h4 class="subsubsection">5.5.4.1 Primary Attributes</h4>
|
|
|
|
<a name="index-primary-attributes_002c-COFF-symbols"></a>
|
|
<p>The symbol name is set with <code>.def</code>; the value and type,
|
|
respectively, with <code>.val</code> and <code>.type</code>.
|
|
</p>
|
|
<a name="Auxiliary-Attributes"></a>
|
|
<h4 class="subsubsection">5.5.4.2 Auxiliary Attributes</h4>
|
|
|
|
<a name="index-auxiliary-attributes_002c-COFF-symbols"></a>
|
|
<p>The <code>as</code> directives <code>.dim</code>, <code>.line</code>, <code>.scl</code>,
|
|
<code>.size</code>, <code>.tag</code>, and <code>.weak</code> can generate auxiliary symbol
|
|
table information for COFF.
|
|
</p>
|
|
<hr>
|
|
<a name="SOM-Symbols"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#COFF-Symbols" accesskey="p" rel="previous">COFF Symbols</a>, Up: <a href="#Symbol-Attributes" accesskey="u" rel="up">Symbol Attributes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbol-Attributes-for-SOM"></a>
|
|
<h4 class="subsection">5.5.5 Symbol Attributes for SOM</h4>
|
|
|
|
<a name="index-SOM-symbol-attributes"></a>
|
|
<a name="index-symbol-attributes_002c-SOM"></a>
|
|
|
|
<p>The SOM format for the HPPA supports a multitude of symbol attributes set with
|
|
the <code>.EXPORT</code> and <code>.IMPORT</code> directives.
|
|
</p>
|
|
<p>The attributes are described in <cite>HP9000 Series 800 Assembly
|
|
Language Reference Manual</cite> (HP 92432-90001) under the <code>IMPORT</code> and
|
|
<code>EXPORT</code> assembler directive documentation.
|
|
</p>
|
|
<hr>
|
|
<a name="Expressions"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Pseudo-Ops" accesskey="n" rel="next">Pseudo Ops</a>, Previous: <a href="#Symbols" accesskey="p" rel="previous">Symbols</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Expressions-1"></a>
|
|
<h2 class="chapter">6 Expressions</h2>
|
|
|
|
<a name="index-expressions"></a>
|
|
<a name="index-addresses"></a>
|
|
<a name="index-numeric-values"></a>
|
|
<p>An <em>expression</em> specifies an address or numeric value.
|
|
Whitespace may precede and/or follow an expression.
|
|
</p>
|
|
<p>The result of an expression must be an absolute number, or else an offset into
|
|
a particular section. If an expression is not absolute, and there is not
|
|
enough information when <code>as</code> sees the expression to know its
|
|
section, a second pass over the source program might be necessary to interpret
|
|
the expression—but the second pass is currently not implemented.
|
|
<code>as</code> aborts with an error message in this situation.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Empty-Exprs" accesskey="1">Empty Exprs</a>:</td><td> </td><td align="left" valign="top">Empty Expressions
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Integer-Exprs" accesskey="2">Integer Exprs</a>:</td><td> </td><td align="left" valign="top">Integer Expressions
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Empty-Exprs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Integer-Exprs" accesskey="n" rel="next">Integer Exprs</a>, Up: <a href="#Expressions" accesskey="u" rel="up">Expressions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Empty-Expressions"></a>
|
|
<h3 class="section">6.1 Empty Expressions</h3>
|
|
|
|
<a name="index-empty-expressions"></a>
|
|
<a name="index-expressions_002c-empty"></a>
|
|
<p>An empty expression has no value: it is just whitespace or null.
|
|
Wherever an absolute expression is required, you may omit the
|
|
expression, and <code>as</code> assumes a value of (absolute) 0. This
|
|
is compatible with other assemblers.
|
|
</p>
|
|
<hr>
|
|
<a name="Integer-Exprs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Empty-Exprs" accesskey="p" rel="previous">Empty Exprs</a>, Up: <a href="#Expressions" accesskey="u" rel="up">Expressions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Integer-Expressions"></a>
|
|
<h3 class="section">6.2 Integer Expressions</h3>
|
|
|
|
<a name="index-integer-expressions"></a>
|
|
<a name="index-expressions_002c-integer"></a>
|
|
<p>An <em>integer expression</em> is one or more <em>arguments</em> delimited
|
|
by <em>operators</em>.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Arguments" accesskey="1">Arguments</a>:</td><td> </td><td align="left" valign="top">Arguments
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Operators" accesskey="2">Operators</a>:</td><td> </td><td align="left" valign="top">Operators
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Prefix-Ops" accesskey="3">Prefix Ops</a>:</td><td> </td><td align="left" valign="top">Prefix Operators
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Infix-Ops" accesskey="4">Infix Ops</a>:</td><td> </td><td align="left" valign="top">Infix Operators
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Arguments"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Operators" accesskey="n" rel="next">Operators</a>, Up: <a href="#Integer-Exprs" accesskey="u" rel="up">Integer Exprs</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Arguments-1"></a>
|
|
<h4 class="subsection">6.2.1 Arguments</h4>
|
|
|
|
<a name="index-expression-arguments"></a>
|
|
<a name="index-arguments-in-expressions"></a>
|
|
<a name="index-operands-in-expressions"></a>
|
|
<a name="index-arithmetic-operands"></a>
|
|
<p><em>Arguments</em> are symbols, numbers or subexpressions. In other
|
|
contexts arguments are sometimes called “arithmetic operands”. In
|
|
this manual, to avoid confusing them with the “instruction operands” of
|
|
the machine language, we use the term “argument” to refer to parts of
|
|
expressions only, reserving the word “operand” to refer only to machine
|
|
instruction operands.
|
|
</p>
|
|
<p>Symbols are evaluated to yield {<var>section</var> <var>NNN</var>} where
|
|
<var>section</var> is one of text, data, bss, absolute,
|
|
or undefined. <var>NNN</var> is a signed, 2’s complement 32 bit
|
|
integer.
|
|
</p>
|
|
<p>Numbers are usually integers.
|
|
</p>
|
|
<p>A number can be a flonum or bignum. In this case, you are warned
|
|
that only the low order 32 bits are used, and <code>as</code> pretends
|
|
these 32 bits are an integer. You may write integer-manipulating
|
|
instructions that act on exotic constants, compatible with other
|
|
assemblers.
|
|
</p>
|
|
<a name="index-subexpressions"></a>
|
|
<p>Subexpressions are a left parenthesis ‘<samp>(</samp>’ followed by an integer
|
|
expression, followed by a right parenthesis ‘<samp>)</samp>’; or a prefix
|
|
operator followed by an argument.
|
|
</p>
|
|
<hr>
|
|
<a name="Operators"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Prefix-Ops" accesskey="n" rel="next">Prefix Ops</a>, Previous: <a href="#Arguments" accesskey="p" rel="previous">Arguments</a>, Up: <a href="#Integer-Exprs" accesskey="u" rel="up">Integer Exprs</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Operators-1"></a>
|
|
<h4 class="subsection">6.2.2 Operators</h4>
|
|
|
|
<a name="index-operators_002c-in-expressions"></a>
|
|
<a name="index-arithmetic-functions"></a>
|
|
<a name="index-functions_002c-in-expressions"></a>
|
|
<p><em>Operators</em> are arithmetic functions, like <code>+</code> or <code>%</code>. Prefix
|
|
operators are followed by an argument. Infix operators appear
|
|
between their arguments. Operators may be preceded and/or followed by
|
|
whitespace.
|
|
</p>
|
|
<hr>
|
|
<a name="Prefix-Ops"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Infix-Ops" accesskey="n" rel="next">Infix Ops</a>, Previous: <a href="#Operators" accesskey="p" rel="previous">Operators</a>, Up: <a href="#Integer-Exprs" accesskey="u" rel="up">Integer Exprs</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Prefix-Operator"></a>
|
|
<h4 class="subsection">6.2.3 Prefix Operator</h4>
|
|
|
|
<a name="index-prefix-operators"></a>
|
|
<p><code>as</code> has the following <em>prefix operators</em>. They each take
|
|
one argument, which must be absolute.
|
|
</p>
|
|
|
|
<dl compact="compact">
|
|
<dt><code>-</code></dt>
|
|
<dd><p><em>Negation</em>. Two’s complement negation.
|
|
</p></dd>
|
|
<dt><code>~</code></dt>
|
|
<dd><p><em>Complementation</em>. Bitwise not.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<hr>
|
|
<a name="Infix-Ops"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Prefix-Ops" accesskey="p" rel="previous">Prefix Ops</a>, Up: <a href="#Integer-Exprs" accesskey="u" rel="up">Integer Exprs</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Infix-Operators"></a>
|
|
<h4 class="subsection">6.2.4 Infix Operators</h4>
|
|
|
|
<a name="index-infix-operators"></a>
|
|
<a name="index-operators_002c-permitted-arguments"></a>
|
|
<p><em>Infix operators</em> take two arguments, one on either side. Operators
|
|
have precedence, but operations with equal precedence are performed left
|
|
to right. Apart from <code>+</code> or <samp>-</samp>, both arguments must be
|
|
absolute, and the result is absolute.
|
|
</p>
|
|
<ol>
|
|
<li><a name="index-operator-precedence"></a>
|
|
<a name="index-precedence-of-operators"></a>
|
|
|
|
</li><li> Highest Precedence
|
|
|
|
<dl compact="compact">
|
|
<dt><code>*</code></dt>
|
|
<dd><p><em>Multiplication</em>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>/</code></dt>
|
|
<dd><p><em>Division</em>. Truncation is the same as the C operator ‘<samp>/</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>%</code></dt>
|
|
<dd><p><em>Remainder</em>.
|
|
</p>
|
|
</dd>
|
|
<dt><code><<</code></dt>
|
|
<dd><p><em>Shift Left</em>. Same as the C operator ‘<samp><<</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>>></code></dt>
|
|
<dd><p><em>Shift Right</em>. Same as the C operator ‘<samp>>></samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</li><li> Intermediate precedence
|
|
|
|
<dl compact="compact">
|
|
<dt><code>|</code></dt>
|
|
<dd>
|
|
<p><em>Bitwise Inclusive Or</em>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>&</code></dt>
|
|
<dd><p><em>Bitwise And</em>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>^</code></dt>
|
|
<dd><p><em>Bitwise Exclusive Or</em>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!</code></dt>
|
|
<dd><p><em>Bitwise Or Not</em>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</li><li> Low Precedence
|
|
|
|
<dl compact="compact">
|
|
<dd><a name="index-addition_002c-permitted-arguments"></a>
|
|
<a name="index-plus_002c-permitted-arguments"></a>
|
|
<a name="index-arguments-for-addition"></a>
|
|
</dd>
|
|
<dt><code>+</code></dt>
|
|
<dd><p><em>Addition</em>. If either argument is absolute, the result has the section of
|
|
the other argument. You may not add together arguments from different
|
|
sections.
|
|
</p>
|
|
<a name="index-subtraction_002c-permitted-arguments"></a>
|
|
<a name="index-minus_002c-permitted-arguments"></a>
|
|
<a name="index-arguments-for-subtraction"></a>
|
|
</dd>
|
|
<dt><code>-</code></dt>
|
|
<dd><p><em>Subtraction</em>. If the right argument is absolute, the
|
|
result has the section of the left argument.
|
|
If both arguments are in the same section, the result is absolute.
|
|
You may not subtract arguments from different sections.
|
|
</p>
|
|
<a name="index-comparison-expressions"></a>
|
|
<a name="index-expressions_002c-comparison"></a>
|
|
</dd>
|
|
<dt><code>==</code></dt>
|
|
<dd><p><em>Is Equal To</em>
|
|
</p></dd>
|
|
<dt><code><></code></dt>
|
|
<dt><code>!=</code></dt>
|
|
<dd><p><em>Is Not Equal To</em>
|
|
</p></dd>
|
|
<dt><code><</code></dt>
|
|
<dd><p><em>Is Less Than</em>
|
|
</p></dd>
|
|
<dt><code>></code></dt>
|
|
<dd><p><em>Is Greater Than</em>
|
|
</p></dd>
|
|
<dt><code>>=</code></dt>
|
|
<dd><p><em>Is Greater Than Or Equal To</em>
|
|
</p></dd>
|
|
<dt><code><=</code></dt>
|
|
<dd><p><em>Is Less Than Or Equal To</em>
|
|
</p>
|
|
<p>The comparison operators can be used as infix operators. A true result has a
|
|
value of -1 whereas a false result has a value of 0. Note, these operators
|
|
perform signed comparisons.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</li><li> Lowest Precedence
|
|
|
|
<dl compact="compact">
|
|
<dt><code>&&</code></dt>
|
|
<dd><p><em>Logical And</em>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>||</code></dt>
|
|
<dd><p><em>Logical Or</em>.
|
|
</p>
|
|
<p>These two logical operations can be used to combine the results of sub
|
|
expressions. Note, unlike the comparison operators a true result returns a
|
|
value of 1 but a false results does still return 0. Also note that the logical
|
|
or operator has a slightly lower precedence than logical and.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
</li></ol>
|
|
|
|
<p>In short, it’s only meaningful to add or subtract the <em>offsets</em> in an
|
|
address; you can only have a defined section in one of the two arguments.
|
|
</p>
|
|
<hr>
|
|
<a name="Pseudo-Ops"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Object-Attributes" accesskey="n" rel="next">Object Attributes</a>, Previous: <a href="#Expressions" accesskey="p" rel="previous">Expressions</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-Directives"></a>
|
|
<h2 class="chapter">7 Assembler Directives</h2>
|
|
|
|
<a name="index-directives_002c-machine-independent"></a>
|
|
<a name="index-pseudo_002dops_002c-machine-independent"></a>
|
|
<a name="index-machine-independent-directives"></a>
|
|
<p>All assembler directives have names that begin with a period (‘<samp>.</samp>’).
|
|
The names are case insensitive for most targets, and usually written
|
|
in lower case.
|
|
</p>
|
|
<p>This chapter discusses directives that are available regardless of the
|
|
target machine configuration for the <small>GNU</small> assembler.
|
|
Some machine configurations provide additional directives.
|
|
See <a href="#Machine-Dependencies">Machine Dependencies</a>.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Abort" accesskey="1">Abort</a>:</td><td> </td><td align="left" valign="top"><code>.abort</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ABORT-_0028COFF_0029" accesskey="2">ABORT (COFF)</a>:</td><td> </td><td align="left" valign="top"><code>.ABORT</code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Align" accesskey="3">Align</a>:</td><td> </td><td align="left" valign="top"><code>.align [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Altmacro" accesskey="4">Altmacro</a>:</td><td> </td><td align="left" valign="top"><code>.altmacro</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Ascii" accesskey="5">Ascii</a>:</td><td> </td><td align="left" valign="top"><code>.ascii "<var>string</var>"</code>…
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Asciz" accesskey="6">Asciz</a>:</td><td> </td><td align="left" valign="top"><code>.asciz "<var>string</var>"</code>…
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Attach_005fto_005fgroup" accesskey="7">Attach_to_group</a>:</td><td> </td><td align="left" valign="top"><code>.attach_to_group <var>name</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Balign" accesskey="8">Balign</a>:</td><td> </td><td align="left" valign="top"><code>.balign [<var>abs-expr</var>[, <var>abs-expr</var>]]</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Bss" accesskey="9">Bss</a>:</td><td> </td><td align="left" valign="top"><code>.bss <var>subsection</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Bundle-directives">Bundle directives</a>:</td><td> </td><td align="left" valign="top"><code>.bundle_align_mode <var>abs-expr</var></code>, etc
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Byte">Byte</a>:</td><td> </td><td align="left" valign="top"><code>.byte <var>expressions</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#CFI-directives">CFI directives</a>:</td><td> </td><td align="left" valign="top"><code>.cfi_startproc [simple]</code>, <code>.cfi_endproc</code>, etc.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Comm">Comm</a>:</td><td> </td><td align="left" valign="top"><code>.comm <var>symbol</var> , <var>length</var> </code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Data">Data</a>:</td><td> </td><td align="left" valign="top"><code>.data <var>subsection</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Dc">Dc</a>:</td><td> </td><td align="left" valign="top"><code>.dc[<var>size</var>] <var>expressions</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Dcb">Dcb</a>:</td><td> </td><td align="left" valign="top"><code>.dcb[<var>size</var>] <var>number</var> [,<var>fill</var>]</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Ds">Ds</a>:</td><td> </td><td align="left" valign="top"><code>.ds[<var>size</var>] <var>number</var> [,<var>fill</var>]</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Def">Def</a>:</td><td> </td><td align="left" valign="top"><code>.def <var>name</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Desc">Desc</a>:</td><td> </td><td align="left" valign="top"><code>.desc <var>symbol</var>, <var>abs-expression</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Dim">Dim</a>:</td><td> </td><td align="left" valign="top"><code>.dim</code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Double">Double</a>:</td><td> </td><td align="left" valign="top"><code>.double <var>flonums</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Eject">Eject</a>:</td><td> </td><td align="left" valign="top"><code>.eject</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Else">Else</a>:</td><td> </td><td align="left" valign="top"><code>.else</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Elseif">Elseif</a>:</td><td> </td><td align="left" valign="top"><code>.elseif</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#End">End</a>:</td><td> </td><td align="left" valign="top"><code>.end</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Endef">Endef</a>:</td><td> </td><td align="left" valign="top"><code>.endef</code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Endfunc">Endfunc</a>:</td><td> </td><td align="left" valign="top"><code>.endfunc</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Endif">Endif</a>:</td><td> </td><td align="left" valign="top"><code>.endif</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Equ">Equ</a>:</td><td> </td><td align="left" valign="top"><code>.equ <var>symbol</var>, <var>expression</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Equiv">Equiv</a>:</td><td> </td><td align="left" valign="top"><code>.equiv <var>symbol</var>, <var>expression</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Eqv">Eqv</a>:</td><td> </td><td align="left" valign="top"><code>.eqv <var>symbol</var>, <var>expression</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Err">Err</a>:</td><td> </td><td align="left" valign="top"><code>.err</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Error">Error</a>:</td><td> </td><td align="left" valign="top"><code>.error <var>string</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Exitm">Exitm</a>:</td><td> </td><td align="left" valign="top"><code>.exitm</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Extern">Extern</a>:</td><td> </td><td align="left" valign="top"><code>.extern</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Fail">Fail</a>:</td><td> </td><td align="left" valign="top"><code>.fail</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#File">File</a>:</td><td> </td><td align="left" valign="top"><code>.file</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Fill">Fill</a>:</td><td> </td><td align="left" valign="top"><code>.fill <var>repeat</var> , <var>size</var> , <var>value</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Float">Float</a>:</td><td> </td><td align="left" valign="top"><code>.float <var>flonums</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Func">Func</a>:</td><td> </td><td align="left" valign="top"><code>.func</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Global">Global</a>:</td><td> </td><td align="left" valign="top"><code>.global <var>symbol</var></code>, <code>.globl <var>symbol</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Gnu_005fattribute">Gnu_attribute</a>:</td><td> </td><td align="left" valign="top"><code>.gnu_attribute <var>tag</var>,<var>value</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Hidden">Hidden</a>:</td><td> </td><td align="left" valign="top"><code>.hidden <var>names</var></code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#hword">hword</a>:</td><td> </td><td align="left" valign="top"><code>.hword <var>expressions</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Ident">Ident</a>:</td><td> </td><td align="left" valign="top"><code>.ident</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#If">If</a>:</td><td> </td><td align="left" valign="top"><code>.if <var>absolute expression</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Incbin">Incbin</a>:</td><td> </td><td align="left" valign="top"><code>.incbin "<var>file</var>"[,<var>skip</var>[,<var>count</var>]]</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Include">Include</a>:</td><td> </td><td align="left" valign="top"><code>.include "<var>file</var>"</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Int">Int</a>:</td><td> </td><td align="left" valign="top"><code>.int <var>expressions</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Internal">Internal</a>:</td><td> </td><td align="left" valign="top"><code>.internal <var>names</var></code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Irp">Irp</a>:</td><td> </td><td align="left" valign="top"><code>.irp <var>symbol</var>,<var>values</var></code>…
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Irpc">Irpc</a>:</td><td> </td><td align="left" valign="top"><code>.irpc <var>symbol</var>,<var>values</var></code>…
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Lcomm">Lcomm</a>:</td><td> </td><td align="left" valign="top"><code>.lcomm <var>symbol</var> , <var>length</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Lflags">Lflags</a>:</td><td> </td><td align="left" valign="top"><code>.lflags</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Line">Line</a>:</td><td> </td><td align="left" valign="top"><code>.line <var>line-number</var></code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Linkonce">Linkonce</a>:</td><td> </td><td align="left" valign="top"><code>.linkonce [<var>type</var>]</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#List">List</a>:</td><td> </td><td align="left" valign="top"><code>.list</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Ln">Ln</a>:</td><td> </td><td align="left" valign="top"><code>.ln <var>line-number</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Loc">Loc</a>:</td><td> </td><td align="left" valign="top"><code>.loc <var>fileno</var> <var>lineno</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Loc_005fmark_005flabels">Loc_mark_labels</a>:</td><td> </td><td align="left" valign="top"><code>.loc_mark_labels <var>enable</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Local">Local</a>:</td><td> </td><td align="left" valign="top"><code>.local <var>names</var></code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Long">Long</a>:</td><td> </td><td align="left" valign="top"><code>.long <var>expressions</var></code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Macro">Macro</a>:</td><td> </td><td align="left" valign="top"><code>.macro <var>name</var> <var>args</var></code>…
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MRI">MRI</a>:</td><td> </td><td align="left" valign="top"><code>.mri <var>val</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Noaltmacro">Noaltmacro</a>:</td><td> </td><td align="left" valign="top"><code>.noaltmacro</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Nolist">Nolist</a>:</td><td> </td><td align="left" valign="top"><code>.nolist</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Nop">Nop</a>:</td><td> </td><td align="left" valign="top"><code>.nop</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Nops">Nops</a>:</td><td> </td><td align="left" valign="top"><code>.nops <var>size</var>[, <var>control</var>]</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Octa">Octa</a>:</td><td> </td><td align="left" valign="top"><code>.octa <var>bignums</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Offset">Offset</a>:</td><td> </td><td align="left" valign="top"><code>.offset <var>loc</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Org">Org</a>:</td><td> </td><td align="left" valign="top"><code>.org <var>new-lc</var>, <var>fill</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#P2align">P2align</a>:</td><td> </td><td align="left" valign="top"><code>.p2align [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PopSection">PopSection</a>:</td><td> </td><td align="left" valign="top"><code>.popsection</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Previous">Previous</a>:</td><td> </td><td align="left" valign="top"><code>.previous</code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Print">Print</a>:</td><td> </td><td align="left" valign="top"><code>.print <var>string</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Protected">Protected</a>:</td><td> </td><td align="left" valign="top"><code>.protected <var>names</var></code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Psize">Psize</a>:</td><td> </td><td align="left" valign="top"><code>.psize <var>lines</var>, <var>columns</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Purgem">Purgem</a>:</td><td> </td><td align="left" valign="top"><code>.purgem <var>name</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PushSection">PushSection</a>:</td><td> </td><td align="left" valign="top"><code>.pushsection <var>name</var></code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Quad">Quad</a>:</td><td> </td><td align="left" valign="top"><code>.quad <var>bignums</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Reloc">Reloc</a>:</td><td> </td><td align="left" valign="top"><code>.reloc <var>offset</var>, <var>reloc_name</var>[, <var>expression</var>]</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Rept">Rept</a>:</td><td> </td><td align="left" valign="top"><code>.rept <var>count</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Sbttl">Sbttl</a>:</td><td> </td><td align="left" valign="top"><code>.sbttl "<var>subheading</var>"</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Scl">Scl</a>:</td><td> </td><td align="left" valign="top"><code>.scl <var>class</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Section">Section</a>:</td><td> </td><td align="left" valign="top"><code>.section <var>name</var>[, <var>flags</var>]</code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Set">Set</a>:</td><td> </td><td align="left" valign="top"><code>.set <var>symbol</var>, <var>expression</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Short">Short</a>:</td><td> </td><td align="left" valign="top"><code>.short <var>expressions</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Single">Single</a>:</td><td> </td><td align="left" valign="top"><code>.single <var>flonums</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Size">Size</a>:</td><td> </td><td align="left" valign="top"><code>.size [<var>name</var> , <var>expression</var>]</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Skip">Skip</a>:</td><td> </td><td align="left" valign="top"><code>.skip <var>size</var> [,<var>fill</var>]</code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Sleb128">Sleb128</a>:</td><td> </td><td align="left" valign="top"><code>.sleb128 <var>expressions</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Space">Space</a>:</td><td> </td><td align="left" valign="top"><code>.space <var>size</var> [,<var>fill</var>]</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Stab">Stab</a>:</td><td> </td><td align="left" valign="top"><code>.stabd, .stabn, .stabs</code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#String">String</a>:</td><td> </td><td align="left" valign="top"><code>.string "<var>str</var>"</code>, <code>.string8 "<var>str</var>"</code>, <code>.string16 "<var>str</var>"</code>, <code>.string32 "<var>str</var>"</code>, <code>.string64 "<var>str</var>"</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Struct">Struct</a>:</td><td> </td><td align="left" valign="top"><code>.struct <var>expression</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#SubSection">SubSection</a>:</td><td> </td><td align="left" valign="top"><code>.subsection</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Symver">Symver</a>:</td><td> </td><td align="left" valign="top"><code>.symver <var>name</var>,<var>name2@nodename</var>[,<var>visibility</var>]</code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Tag">Tag</a>:</td><td> </td><td align="left" valign="top"><code>.tag <var>structname</var></code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Text">Text</a>:</td><td> </td><td align="left" valign="top"><code>.text <var>subsection</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Title">Title</a>:</td><td> </td><td align="left" valign="top"><code>.title "<var>heading</var>"</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Tls_005fcommon">Tls_common</a>:</td><td> </td><td align="left" valign="top"><code>.tls_common <var>symbol</var>, <var>length</var>[, <var>alignment</var>]</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Type">Type</a>:</td><td> </td><td align="left" valign="top"><code>.type <<var>int</var> | <var>name</var> , <var>type description</var>></code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Uleb128">Uleb128</a>:</td><td> </td><td align="left" valign="top"><code>.uleb128 <var>expressions</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Val">Val</a>:</td><td> </td><td align="left" valign="top"><code>.val <var>addr</var></code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Version">Version</a>:</td><td> </td><td align="left" valign="top"><code>.version "<var>string</var>"</code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#VTableEntry">VTableEntry</a>:</td><td> </td><td align="left" valign="top"><code>.vtable_entry <var>table</var>, <var>offset</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#VTableInherit">VTableInherit</a>:</td><td> </td><td align="left" valign="top"><code>.vtable_inherit <var>child</var>, <var>parent</var></code>
|
|
</td></tr>
|
|
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
|
|
</pre></th></tr><tr><td align="left" valign="top">• <a href="#Warning">Warning</a>:</td><td> </td><td align="left" valign="top"><code>.warning <var>string</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Weak">Weak</a>:</td><td> </td><td align="left" valign="top"><code>.weak <var>names</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Weakref">Weakref</a>:</td><td> </td><td align="left" valign="top"><code>.weakref <var>alias</var>, <var>symbol</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Word">Word</a>:</td><td> </td><td align="left" valign="top"><code>.word <var>expressions</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Zero">Zero</a>:</td><td> </td><td align="left" valign="top"><code>.zero <var>size</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#g_t2byte">2byte</a>:</td><td> </td><td align="left" valign="top"><code>.2byte <var>expressions</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#g_t4byte">4byte</a>:</td><td> </td><td align="left" valign="top"><code>.4byte <var>expressions</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#g_t8byte">8byte</a>:</td><td> </td><td align="left" valign="top"><code>.8byte <var>bignums</var></code>
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Deprecated">Deprecated</a>:</td><td> </td><td align="left" valign="top">Deprecated Directives
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Abort"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ABORT-_0028COFF_0029" accesskey="n" rel="next">ABORT (COFF)</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eabort"></a>
|
|
<h3 class="section">7.1 <code>.abort</code></h3>
|
|
|
|
<a name="index-abort-directive"></a>
|
|
<a name="index-stopping-the-assembly"></a>
|
|
<p>This directive stops the assembly immediately. It is for
|
|
compatibility with other assemblers. The original idea was that the
|
|
assembly language source would be piped into the assembler. If the sender
|
|
of the source quit, it could use this directive tells <code>as</code> to
|
|
quit also. One day <code>.abort</code> will not be supported.
|
|
</p>
|
|
<hr>
|
|
<a name="ABORT-_0028COFF_0029"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Align" accesskey="n" rel="next">Align</a>, Previous: <a href="#Abort" accesskey="p" rel="previous">Abort</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eABORT-_0028COFF_0029"></a>
|
|
<h3 class="section">7.2 <code>.ABORT</code> (COFF)</h3>
|
|
|
|
<a name="index-ABORT-directive"></a>
|
|
<p>When producing COFF output, <code>as</code> accepts this directive as a
|
|
synonym for ‘<samp>.abort</samp>’.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="Align"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Altmacro" accesskey="n" rel="next">Altmacro</a>, Previous: <a href="#ABORT-_0028COFF_0029" accesskey="p" rel="previous">ABORT (COFF)</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002ealign-_005babs_002dexpr_005b_002c-abs_002dexpr_005b_002c-abs_002dexpr_005d_005d_005d"></a>
|
|
<h3 class="section">7.3 <code>.align [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code></h3>
|
|
|
|
<a name="index-padding-the-location-counter"></a>
|
|
<a name="index-align-directive"></a>
|
|
<p>Pad the location counter (in the current subsection) to a particular storage
|
|
boundary. The first expression (which must be absolute) is the alignment
|
|
required, as described below. If this expression is omitted then a default
|
|
value of 0 is used, effectively disabling alignment requirements.
|
|
</p>
|
|
<p>The second expression (also absolute) gives the fill value to be stored in the
|
|
padding bytes. It (and the comma) may be omitted. If it is omitted, the
|
|
padding bytes are normally zero. However, on most systems, if the section is
|
|
marked as containing code and the fill value is omitted, the space is filled
|
|
with no-op instructions.
|
|
</p>
|
|
<p>The third expression is also absolute, and is also optional. If it is present,
|
|
it is the maximum number of bytes that should be skipped by this alignment
|
|
directive. If doing the alignment would require skipping more bytes than the
|
|
specified maximum, then the alignment is not done at all. You can omit the
|
|
fill value (the second argument) entirely by simply using two commas after the
|
|
required alignment; this can be useful if you want the alignment to be filled
|
|
with no-op instructions when appropriate.
|
|
</p>
|
|
<p>The way the required alignment is specified varies from system to system.
|
|
For the arc, hppa, i386 using ELF, iq2000, m68k, or1k,
|
|
s390, sparc, tic4x and xtensa, the first expression is the
|
|
alignment request in bytes. For example ‘<samp>.align 8</samp>’ advances
|
|
the location counter until it is a multiple of 8. If the location counter
|
|
is already a multiple of 8, no change is needed. For the tic54x, the
|
|
first expression is the alignment request in words.
|
|
</p>
|
|
<p>For other systems, including ppc, i386 using a.out format, arm and
|
|
strongarm, it is the
|
|
number of low-order zero bits the location counter must have after
|
|
advancement. For example ‘<samp>.align 3</samp>’ advances the location
|
|
counter until it is a multiple of 8. If the location counter is already a
|
|
multiple of 8, no change is needed.
|
|
</p>
|
|
<p>This inconsistency is due to the different behaviors of the various
|
|
native assemblers for these systems which GAS must emulate.
|
|
GAS also provides <code>.balign</code> and <code>.p2align</code> directives,
|
|
described later, which have a consistent behavior across all
|
|
architectures (but are specific to GAS).
|
|
</p>
|
|
<hr>
|
|
<a name="Altmacro"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Ascii" accesskey="n" rel="next">Ascii</a>, Previous: <a href="#Align" accesskey="p" rel="previous">Align</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002ealtmacro"></a>
|
|
<h3 class="section">7.4 <code>.altmacro</code></h3>
|
|
<p>Enable alternate macro mode, enabling:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>LOCAL <var>name</var> [ , … ]</code>
|
|
<a name="index-LOCAL-name-_005b-_002c-_2026-_005d"></a>
|
|
</dt>
|
|
<dd><p>One additional directive, <code>LOCAL</code>, is available. It is used to
|
|
generate a string replacement for each of the <var>name</var> arguments, and
|
|
replace any instances of <var>name</var> in each macro expansion. The
|
|
replacement string is unique in the assembly, and different for each
|
|
separate macro expansion. <code>LOCAL</code> allows you to write macros that
|
|
define symbols, without fear of conflict between separate macro expansions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>String delimiters</code>
|
|
<a name="index-String-delimiters"></a>
|
|
</dt>
|
|
<dd><p>You can write strings delimited in these other ways besides
|
|
<code>"<var>string</var>"</code>:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>'<var>string</var>'</code></dt>
|
|
<dd><p>You can delimit strings with single-quote characters.
|
|
</p>
|
|
</dd>
|
|
<dt><code><<var>string</var>></code></dt>
|
|
<dd><p>You can delimit strings with matching angle brackets.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt><code>single-character string escape</code>
|
|
<a name="index-single_002dcharacter-string-escape"></a>
|
|
</dt>
|
|
<dd><p>To include any single character literally in a string (even if the
|
|
character would otherwise have some special meaning), you can prefix the
|
|
character with ‘<samp>!</samp>’ (an exclamation mark). For example, you can
|
|
write ‘<samp><4.3 !> 5.4!!></samp>’ to get the literal text ‘<samp>4.3 > 5.4!</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Expression results as strings</code>
|
|
<a name="index-Expression-results-as-strings"></a>
|
|
</dt>
|
|
<dd><p>You can write ‘<samp>%<var>expr</var></samp>’ to evaluate the expression <var>expr</var>
|
|
and use the result as a string.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Ascii"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Asciz" accesskey="n" rel="next">Asciz</a>, Previous: <a href="#Altmacro" accesskey="p" rel="previous">Altmacro</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eascii-_0022string_0022_2026"></a>
|
|
<h3 class="section">7.5 <code>.ascii "<var>string</var>"</code>…</h3>
|
|
|
|
<a name="index-ascii-directive"></a>
|
|
<a name="index-string-literals"></a>
|
|
<p><code>.ascii</code> expects zero or more string literals (see <a href="#Strings">Strings</a>)
|
|
separated by commas. It assembles each string (with no automatic
|
|
trailing zero byte) into consecutive addresses.
|
|
</p>
|
|
<hr>
|
|
<a name="Asciz"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Attach_005fto_005fgroup" accesskey="n" rel="next">Attach_to_group</a>, Previous: <a href="#Ascii" accesskey="p" rel="previous">Ascii</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002easciz-_0022string_0022_2026"></a>
|
|
<h3 class="section">7.6 <code>.asciz "<var>string</var>"</code>…</h3>
|
|
|
|
<a name="index-asciz-directive"></a>
|
|
<a name="index-zero_002dterminated-strings"></a>
|
|
<a name="index-null_002dterminated-strings"></a>
|
|
<p><code>.asciz</code> is just like <code>.ascii</code>, but each string is followed by
|
|
a zero byte. The “z” in ‘<samp>.asciz</samp>’ stands for “zero”. Note that
|
|
multiple string arguments not separated by commas will be concatenated
|
|
together and only one final zero byte will be stored.
|
|
</p>
|
|
<hr>
|
|
<a name="Attach_005fto_005fgroup"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Balign" accesskey="n" rel="next">Balign</a>, Previous: <a href="#Asciz" accesskey="p" rel="previous">Asciz</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eattach_005fto_005fgroup-name"></a>
|
|
<h3 class="section">7.7 <code>.attach_to_group <var>name</var></code></h3>
|
|
<p>Attaches the current section to the named group. This is like declaring
|
|
the section with the <code>G</code> attribute, but can be done after the section
|
|
has been created. Note if the group section does not exist at the point that
|
|
this directive is used then it will be created.
|
|
</p>
|
|
<hr>
|
|
<a name="Balign"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Bss" accesskey="n" rel="next">Bss</a>, Previous: <a href="#Attach_005fto_005fgroup" accesskey="p" rel="previous">Attach_to_group</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002ebalign_005bwl_005d-_005babs_002dexpr_005b_002c-abs_002dexpr_005b_002c-abs_002dexpr_005d_005d_005d"></a>
|
|
<h3 class="section">7.8 <code>.balign[wl] [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code></h3>
|
|
|
|
<a name="index-padding-the-location-counter-given-number-of-bytes"></a>
|
|
<a name="index-balign-directive"></a>
|
|
<p>Pad the location counter (in the current subsection) to a particular
|
|
storage boundary. The first expression (which must be absolute) is the
|
|
alignment request in bytes. For example ‘<samp>.balign 8</samp>’ advances
|
|
the location counter until it is a multiple of 8. If the location counter
|
|
is already a multiple of 8, no change is needed. If the expression is omitted
|
|
then a default value of 0 is used, effectively disabling alignment requirements.
|
|
</p>
|
|
<p>The second expression (also absolute) gives the fill value to be stored in the
|
|
padding bytes. It (and the comma) may be omitted. If it is omitted, the
|
|
padding bytes are normally zero. However, on most systems, if the section is
|
|
marked as containing code and the fill value is omitted, the space is filled
|
|
with no-op instructions.
|
|
</p>
|
|
<p>The third expression is also absolute, and is also optional. If it is present,
|
|
it is the maximum number of bytes that should be skipped by this alignment
|
|
directive. If doing the alignment would require skipping more bytes than the
|
|
specified maximum, then the alignment is not done at all. You can omit the
|
|
fill value (the second argument) entirely by simply using two commas after the
|
|
required alignment; this can be useful if you want the alignment to be filled
|
|
with no-op instructions when appropriate.
|
|
</p>
|
|
<a name="index-balignw-directive"></a>
|
|
<a name="index-balignl-directive"></a>
|
|
<p>The <code>.balignw</code> and <code>.balignl</code> directives are variants of the
|
|
<code>.balign</code> directive. The <code>.balignw</code> directive treats the fill
|
|
pattern as a two byte word value. The <code>.balignl</code> directives treats the
|
|
fill pattern as a four byte longword value. For example, <code>.balignw
|
|
4,0x368d</code> will align to a multiple of 4. If it skips two bytes, they will be
|
|
filled in with the value 0x368d (the exact placement of the bytes depends upon
|
|
the endianness of the processor). If it skips 1 or 3 bytes, the fill value is
|
|
undefined.
|
|
</p>
|
|
<hr>
|
|
<a name="Bss"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Bundle-directives" accesskey="n" rel="next">Bundle directives</a>, Previous: <a href="#Balign" accesskey="p" rel="previous">Balign</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002ebss-subsection"></a>
|
|
<h3 class="section">7.9 <code>.bss <var>subsection</var></code></h3>
|
|
<a name="index-bss-directive"></a>
|
|
|
|
<p><code>.bss</code> tells <code>as</code> to assemble the following statements
|
|
onto the end of the bss section.
|
|
For ELF based targets an optional <var>subsection</var> expression (which must
|
|
evaluate to a positive integer) can be provided. In this case the statements
|
|
are appended to the end of the indicated bss subsection.
|
|
</p>
|
|
<hr>
|
|
<a name="Bundle-directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Byte" accesskey="n" rel="next">Byte</a>, Previous: <a href="#Bss" accesskey="p" rel="previous">Bss</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Bundle-directives-1"></a>
|
|
<h3 class="section">7.10 Bundle directives</h3>
|
|
<a name="g_t_002ebundle_005falign_005fmode-abs_002dexpr"></a>
|
|
<h4 class="subsection">7.10.1 <code>.bundle_align_mode <var>abs-expr</var></code></h4>
|
|
<a name="index-bundle_005falign_005fmode-directive"></a>
|
|
<a name="index-bundle"></a>
|
|
<a name="index-instruction-bundle"></a>
|
|
<a name="index-aligned-instruction-bundle"></a>
|
|
<p><code>.bundle_align_mode</code> enables or disables <em>aligned instruction
|
|
bundle</em> mode. In this mode, sequences of adjacent instructions are grouped
|
|
into fixed-sized <em>bundles</em>. If the argument is zero, this mode is
|
|
disabled (which is the default state). If the argument it not zero, it
|
|
gives the size of an instruction bundle as a power of two (as for the
|
|
<code>.p2align</code> directive, see <a href="#P2align">P2align</a>).
|
|
</p>
|
|
<p>For some targets, it’s an ABI requirement that no instruction may span a
|
|
certain aligned boundary. A <em>bundle</em> is simply a sequence of
|
|
instructions that starts on an aligned boundary. For example, if
|
|
<var>abs-expr</var> is <code>5</code> then the bundle size is 32, so each aligned
|
|
chunk of 32 bytes is a bundle. When aligned instruction bundle mode is in
|
|
effect, no single instruction may span a boundary between bundles. If an
|
|
instruction would start too close to the end of a bundle for the length of
|
|
that particular instruction to fit within the bundle, then the space at the
|
|
end of that bundle is filled with no-op instructions so the instruction
|
|
starts in the next bundle. As a corollary, it’s an error if any single
|
|
instruction’s encoding is longer than the bundle size.
|
|
</p>
|
|
<a name="g_t_002ebundle_005flock-and-_002ebundle_005funlock"></a>
|
|
<h4 class="subsection">7.10.2 <code>.bundle_lock</code> and <code>.bundle_unlock</code></h4>
|
|
<a name="index-bundle_005flock-directive"></a>
|
|
<a name="index-bundle_005funlock-directive"></a>
|
|
<p>The <code>.bundle_lock</code> and directive <code>.bundle_unlock</code> directives
|
|
allow explicit control over instruction bundle padding. These directives
|
|
are only valid when <code>.bundle_align_mode</code> has been used to enable
|
|
aligned instruction bundle mode. It’s an error if they appear when
|
|
<code>.bundle_align_mode</code> has not been used at all, or when the last
|
|
directive was <code><span class="nolinebreak">.bundle_align_mode</span> 0</code><!-- /@w -->.
|
|
</p>
|
|
<a name="index-bundle_002dlocked"></a>
|
|
<p>For some targets, it’s an ABI requirement that certain instructions may
|
|
appear only as part of specified permissible sequences of multiple
|
|
instructions, all within the same bundle. A pair of <code>.bundle_lock</code>
|
|
and <code>.bundle_unlock</code> directives define a <em>bundle-locked</em>
|
|
instruction sequence. For purposes of aligned instruction bundle mode, a
|
|
sequence starting with <code>.bundle_lock</code> and ending with
|
|
<code>.bundle_unlock</code> is treated as a single instruction. That is, the
|
|
entire sequence must fit into a single bundle and may not span a bundle
|
|
boundary. If necessary, no-op instructions will be inserted before the
|
|
first instruction of the sequence so that the whole sequence starts on an
|
|
aligned bundle boundary. It’s an error if the sequence is longer than the
|
|
bundle size.
|
|
</p>
|
|
<p>For convenience when using <code>.bundle_lock</code> and <code>.bundle_unlock</code>
|
|
inside assembler macros (see <a href="#Macro">Macro</a>), bundle-locked sequences may be
|
|
nested. That is, a second <code>.bundle_lock</code> directive before the next
|
|
<code>.bundle_unlock</code> directive has no effect except that it must be
|
|
matched by another closing <code>.bundle_unlock</code> so that there is the
|
|
same number of <code>.bundle_lock</code> and <code>.bundle_unlock</code> directives.
|
|
</p>
|
|
<hr>
|
|
<a name="Byte"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#CFI-directives" accesskey="n" rel="next">CFI directives</a>, Previous: <a href="#Bundle-directives" accesskey="p" rel="previous">Bundle directives</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002ebyte-expressions"></a>
|
|
<h3 class="section">7.11 <code>.byte <var>expressions</var></code></h3>
|
|
|
|
<a name="index-byte-directive"></a>
|
|
<a name="index-integers_002c-one-byte"></a>
|
|
<p><code>.byte</code> expects zero or more expressions, separated by commas.
|
|
Each expression is assembled into the next byte.
|
|
</p>
|
|
<hr>
|
|
<a name="CFI-directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Comm" accesskey="n" rel="next">Comm</a>, Previous: <a href="#Byte" accesskey="p" rel="previous">Byte</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="CFI-directives-1"></a>
|
|
<h3 class="section">7.12 CFI directives</h3>
|
|
<a name="g_t_002ecfi_005fsections-section_005flist"></a>
|
|
<h4 class="subsection">7.12.1 <code>.cfi_sections <var>section_list</var></code></h4>
|
|
<a name="index-cfi_005fsections-directive"></a>
|
|
<p><code>.cfi_sections</code> may be used to specify whether CFI directives
|
|
should emit <code>.eh_frame</code> section and/or <code>.debug_frame</code> section.
|
|
If <var>section_list</var> is <code>.eh_frame</code>, <code>.eh_frame</code> is emitted,
|
|
if <var>section_list</var> is <code>.debug_frame</code>, <code>.debug_frame</code> is emitted.
|
|
To emit both use <code>.eh_frame, .debug_frame</code>. The default if this
|
|
directive is not used is <code>.cfi_sections .eh_frame</code>.
|
|
</p>
|
|
<p>On targets that support compact unwinding tables these can be generated
|
|
by specifying <code>.eh_frame_entry</code> instead of <code>.eh_frame</code>.
|
|
</p>
|
|
<p>Some targets may support an additional name, such as <code>.c6xabi.exidx</code>
|
|
which is used by the target.
|
|
</p>
|
|
<p>The <code>.cfi_sections</code> directive can be repeated, with the same or different
|
|
arguments, provided that CFI generation has not yet started. Once CFI
|
|
generation has started however the section list is fixed and any attempts to
|
|
redefine it will result in an error.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fstartproc-_005bsimple_005d"></a>
|
|
<h4 class="subsection">7.12.2 <code>.cfi_startproc [simple]</code></h4>
|
|
<a name="index-cfi_005fstartproc-directive"></a>
|
|
<p><code>.cfi_startproc</code> is used at the beginning of each function that
|
|
should have an entry in <code>.eh_frame</code>. It initializes some internal
|
|
data structures. Don’t forget to close the function by
|
|
<code>.cfi_endproc</code>.
|
|
</p>
|
|
<p>Unless <code>.cfi_startproc</code> is used along with parameter <code>simple</code>
|
|
it also emits some architecture dependent initial CFI instructions.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fendproc"></a>
|
|
<h4 class="subsection">7.12.3 <code>.cfi_endproc</code></h4>
|
|
<a name="index-cfi_005fendproc-directive"></a>
|
|
<p><code>.cfi_endproc</code> is used at the end of a function where it closes its
|
|
unwind entry previously opened by
|
|
<code>.cfi_startproc</code>, and emits it to <code>.eh_frame</code>.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fpersonality-encoding-_005b_002c-exp_005d"></a>
|
|
<h4 class="subsection">7.12.4 <code>.cfi_personality <var>encoding</var> [, <var>exp</var>]</code></h4>
|
|
<a name="index-cfi_005fpersonality-directive"></a>
|
|
<p><code>.cfi_personality</code> defines personality routine and its encoding.
|
|
<var>encoding</var> must be a constant determining how the personality
|
|
should be encoded. If it is 255 (<code>DW_EH_PE_omit</code>), second
|
|
argument is not present, otherwise second argument should be
|
|
a constant or a symbol name. When using indirect encodings,
|
|
the symbol provided should be the location where personality
|
|
can be loaded from, not the personality routine itself.
|
|
The default after <code>.cfi_startproc</code> is <code>.cfi_personality 0xff</code>,
|
|
no personality routine.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fpersonality_005fid-id"></a>
|
|
<h4 class="subsection">7.12.5 <code>.cfi_personality_id <var>id</var></code></h4>
|
|
<a name="index-cfi_005fpersonality_005fid-directive"></a>
|
|
<p><code>cfi_personality_id</code> defines a personality routine by its index as
|
|
defined in a compact unwinding format.
|
|
Only valid when generating compact EH frames (i.e.
|
|
with <code>.cfi_sections eh_frame_entry</code>.
|
|
</p>
|
|
<a name="g_t_002ecfi_005ffde_005fdata-_005bopcode1-_005b_002c-_2026_005d_005d"></a>
|
|
<h4 class="subsection">7.12.6 <code>.cfi_fde_data [<var>opcode1</var> [, …]]</code></h4>
|
|
<a name="index-cfi_005ffde_005fdata-directive"></a>
|
|
<p><code>cfi_fde_data</code> is used to describe the compact unwind opcodes to be
|
|
used for the current function. These are emitted inline in the
|
|
<code>.eh_frame_entry</code> section if small enough and there is no LSDA, or
|
|
in the <code>.gnu.extab</code> section otherwise.
|
|
Only valid when generating compact EH frames (i.e.
|
|
with <code>.cfi_sections eh_frame_entry</code>.
|
|
</p>
|
|
<a name="g_t_002ecfi_005flsda-encoding-_005b_002c-exp_005d"></a>
|
|
<h4 class="subsection">7.12.7 <code>.cfi_lsda <var>encoding</var> [, <var>exp</var>]</code></h4>
|
|
<p><code>.cfi_lsda</code> defines LSDA and its encoding.
|
|
<var>encoding</var> must be a constant determining how the LSDA
|
|
should be encoded. If it is 255 (<code>DW_EH_PE_omit</code>), the second
|
|
argument is not present, otherwise the second argument should be a constant
|
|
or a symbol name. The default after <code>.cfi_startproc</code> is <code>.cfi_lsda 0xff</code>,
|
|
meaning that no LSDA is present.
|
|
</p>
|
|
<a name="g_t_002ecfi_005finline_005flsda-_005balign_005d"></a>
|
|
<h4 class="subsection">7.12.8 <code>.cfi_inline_lsda</code> [<var>align</var>]</h4>
|
|
<p><code>.cfi_inline_lsda</code> marks the start of a LSDA data section and
|
|
switches to the corresponding <code>.gnu.extab</code> section.
|
|
Must be preceded by a CFI block containing a <code>.cfi_lsda</code> directive.
|
|
Only valid when generating compact EH frames (i.e.
|
|
with <code>.cfi_sections eh_frame_entry</code>.
|
|
</p>
|
|
<p>The table header and unwinding opcodes will be generated at this point,
|
|
so that they are immediately followed by the LSDA data. The symbol
|
|
referenced by the <code>.cfi_lsda</code> directive should still be defined
|
|
in case a fallback FDE based encoding is used. The LSDA data is terminated
|
|
by a section directive.
|
|
</p>
|
|
<p>The optional <var>align</var> argument specifies the alignment required.
|
|
The alignment is specified as a power of two, as with the
|
|
<code>.p2align</code> directive.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fdef_005fcfa-register_002c-offset"></a>
|
|
<h4 class="subsection">7.12.9 <code>.cfi_def_cfa <var>register</var>, <var>offset</var></code></h4>
|
|
<p><code>.cfi_def_cfa</code> defines a rule for computing CFA as: <i>take
|
|
address from <var>register</var> and add <var>offset</var> to it</i>.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fdef_005fcfa_005fregister-register"></a>
|
|
<h4 class="subsection">7.12.10 <code>.cfi_def_cfa_register <var>register</var></code></h4>
|
|
<p><code>.cfi_def_cfa_register</code> modifies a rule for computing CFA. From
|
|
now on <var>register</var> will be used instead of the old one. Offset
|
|
remains the same.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fdef_005fcfa_005foffset-offset"></a>
|
|
<h4 class="subsection">7.12.11 <code>.cfi_def_cfa_offset <var>offset</var></code></h4>
|
|
<p><code>.cfi_def_cfa_offset</code> modifies a rule for computing CFA. Register
|
|
remains the same, but <var>offset</var> is new. Note that it is the
|
|
absolute offset that will be added to a defined register to compute
|
|
CFA address.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fadjust_005fcfa_005foffset-offset"></a>
|
|
<h4 class="subsection">7.12.12 <code>.cfi_adjust_cfa_offset <var>offset</var></code></h4>
|
|
<p>Same as <code>.cfi_def_cfa_offset</code> but <var>offset</var> is a relative
|
|
value that is added/subtracted from the previous offset.
|
|
</p>
|
|
<a name="g_t_002ecfi_005foffset-register_002c-offset"></a>
|
|
<h4 class="subsection">7.12.13 <code>.cfi_offset <var>register</var>, <var>offset</var></code></h4>
|
|
<p>Previous value of <var>register</var> is saved at offset <var>offset</var> from
|
|
CFA.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fval_005foffset-register_002c-offset"></a>
|
|
<h4 class="subsection">7.12.14 <code>.cfi_val_offset <var>register</var>, <var>offset</var></code></h4>
|
|
<p>Previous value of <var>register</var> is CFA + <var>offset</var>.
|
|
</p>
|
|
<a name="g_t_002ecfi_005frel_005foffset-register_002c-offset"></a>
|
|
<h4 class="subsection">7.12.15 <code>.cfi_rel_offset <var>register</var>, <var>offset</var></code></h4>
|
|
<p>Previous value of <var>register</var> is saved at offset <var>offset</var> from
|
|
the current CFA register. This is transformed to <code>.cfi_offset</code>
|
|
using the known displacement of the CFA register from the CFA.
|
|
This is often easier to use, because the number will match the
|
|
code it’s annotating.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fregister-register1_002c-register2"></a>
|
|
<h4 class="subsection">7.12.16 <code>.cfi_register <var>register1</var>, <var>register2</var></code></h4>
|
|
<p>Previous value of <var>register1</var> is saved in register <var>register2</var>.
|
|
</p>
|
|
<a name="g_t_002ecfi_005frestore-register"></a>
|
|
<h4 class="subsection">7.12.17 <code>.cfi_restore <var>register</var></code></h4>
|
|
<p><code>.cfi_restore</code> says that the rule for <var>register</var> is now the
|
|
same as it was at the beginning of the function, after all initial
|
|
instruction added by <code>.cfi_startproc</code> were executed.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fundefined-register"></a>
|
|
<h4 class="subsection">7.12.18 <code>.cfi_undefined <var>register</var></code></h4>
|
|
<p>From now on the previous value of <var>register</var> can’t be restored anymore.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fsame_005fvalue-register"></a>
|
|
<h4 class="subsection">7.12.19 <code>.cfi_same_value <var>register</var></code></h4>
|
|
<p>Current value of <var>register</var> is the same like in the previous frame,
|
|
i.e. no restoration needed.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fremember_005fstate-and-_002ecfi_005frestore_005fstate"></a>
|
|
<h4 class="subsection">7.12.20 <code>.cfi_remember_state</code> and <code>.cfi_restore_state</code></h4>
|
|
<p><code>.cfi_remember_state</code> pushes the set of rules for every register onto an
|
|
implicit stack, while <code>.cfi_restore_state</code> pops them off the stack and
|
|
places them in the current row. This is useful for situations where you have
|
|
multiple <code>.cfi_*</code> directives that need to be undone due to the control
|
|
flow of the program. For example, we could have something like this (assuming
|
|
the CFA is the value of <code>rbp</code>):
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> je label
|
|
popq %rbx
|
|
.cfi_restore %rbx
|
|
popq %r12
|
|
.cfi_restore %r12
|
|
popq %rbp
|
|
.cfi_restore %rbp
|
|
.cfi_def_cfa %rsp, 8
|
|
ret
|
|
label:
|
|
/* Do something else */
|
|
</pre></div>
|
|
|
|
<p>Here, we want the <code>.cfi</code> directives to affect only the rows corresponding
|
|
to the instructions before <code>label</code>. This means we’d have to add multiple
|
|
<code>.cfi</code> directives after <code>label</code> to recreate the original save
|
|
locations of the registers, as well as setting the CFA back to the value of
|
|
<code>rbp</code>. This would be clumsy, and result in a larger binary size. Instead,
|
|
we can write:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> je label
|
|
popq %rbx
|
|
.cfi_remember_state
|
|
.cfi_restore %rbx
|
|
popq %r12
|
|
.cfi_restore %r12
|
|
popq %rbp
|
|
.cfi_restore %rbp
|
|
.cfi_def_cfa %rsp, 8
|
|
ret
|
|
label:
|
|
.cfi_restore_state
|
|
/* Do something else */
|
|
</pre></div>
|
|
|
|
<p>That way, the rules for the instructions after <code>label</code> will be the same
|
|
as before the first <code>.cfi_restore</code> without having to use multiple
|
|
<code>.cfi</code> directives.
|
|
</p>
|
|
<a name="g_t_002ecfi_005freturn_005fcolumn-register"></a>
|
|
<h4 class="subsection">7.12.21 <code>.cfi_return_column <var>register</var></code></h4>
|
|
<p>Change return column <var>register</var>, i.e. the return address is either
|
|
directly in <var>register</var> or can be accessed by rules for <var>register</var>.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fsignal_005fframe"></a>
|
|
<h4 class="subsection">7.12.22 <code>.cfi_signal_frame</code></h4>
|
|
<p>Mark current function as signal trampoline.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fwindow_005fsave"></a>
|
|
<h4 class="subsection">7.12.23 <code>.cfi_window_save</code></h4>
|
|
<p>SPARC register window has been saved.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fescape-expression_005b_002c-_2026_005d"></a>
|
|
<h4 class="subsection">7.12.24 <code>.cfi_escape</code> <var>expression</var>[, …]</h4>
|
|
<p>Allows the user to add arbitrary bytes to the unwind info. One
|
|
might use this to add OS-specific CFI opcodes, or generic CFI
|
|
opcodes that GAS does not yet support.
|
|
</p>
|
|
<a name="g_t_002ecfi_005fval_005fencoded_005faddr-register_002c-encoding_002c-label"></a>
|
|
<h4 class="subsection">7.12.25 <code>.cfi_val_encoded_addr <var>register</var>, <var>encoding</var>, <var>label</var></code></h4>
|
|
<p>The current value of <var>register</var> is <var>label</var>. The value of <var>label</var>
|
|
will be encoded in the output file according to <var>encoding</var>; see the
|
|
description of <code>.cfi_personality</code> for details on this encoding.
|
|
</p>
|
|
<p>The usefulness of equating a register to a fixed label is probably
|
|
limited to the return address register. Here, it can be useful to
|
|
mark a code segment that has only one return address which is reached
|
|
by a direct branch and no copy of the return address exists in memory
|
|
or another register.
|
|
</p>
|
|
<hr>
|
|
<a name="Comm"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Data" accesskey="n" rel="next">Data</a>, Previous: <a href="#CFI-directives" accesskey="p" rel="previous">CFI directives</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002ecomm-symbol-_002c-length-"></a>
|
|
<h3 class="section">7.13 <code>.comm <var>symbol</var> , <var>length</var> </code></h3>
|
|
|
|
<a name="index-comm-directive"></a>
|
|
<a name="index-symbol_002c-common"></a>
|
|
<p><code>.comm</code> declares a common symbol named <var>symbol</var>. When linking, a
|
|
common symbol in one object file may be merged with a defined or common symbol
|
|
of the same name in another object file. If <code>ld</code> does not see a
|
|
definition for the symbol–just one or more common symbols–then it will
|
|
allocate <var>length</var> bytes of uninitialized memory. <var>length</var> must be an
|
|
absolute expression. If <code>ld</code> sees multiple common symbols with
|
|
the same name, and they do not all have the same size, it will allocate space
|
|
using the largest size.
|
|
</p>
|
|
<p>When using ELF or (as a GNU extension) PE, the <code>.comm</code> directive takes
|
|
an optional third argument. This is the desired alignment of the symbol,
|
|
specified for ELF as a byte boundary (for example, an alignment of 16 means
|
|
that the least significant 4 bits of the address should be zero), and for PE
|
|
as a power of two (for example, an alignment of 5 means aligned to a 32-byte
|
|
boundary). The alignment must be an absolute expression, and it must be a
|
|
power of two. If <code>ld</code> allocates uninitialized memory for the
|
|
common symbol, it will use the alignment when placing the symbol. If no
|
|
alignment is specified, <code>as</code> will set the alignment to the
|
|
largest power of two less than or equal to the size of the symbol, up to a
|
|
maximum of 16 on ELF, or the default section alignment of 4 on PE<a name="DOCF1" href="#FOOT1"><sup>1</sup></a>.
|
|
</p>
|
|
<p>The syntax for <code>.comm</code> differs slightly on the HPPA. The syntax is
|
|
‘<samp><var>symbol</var> .comm, <var>length</var></samp>’; <var>symbol</var> is optional.
|
|
</p>
|
|
<hr>
|
|
<a name="Data"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Dc" accesskey="n" rel="next">Dc</a>, Previous: <a href="#Comm" accesskey="p" rel="previous">Comm</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002edata-subsection"></a>
|
|
<h3 class="section">7.14 <code>.data <var>subsection</var></code></h3>
|
|
<a name="index-data-directive"></a>
|
|
|
|
<p><code>.data</code> tells <code>as</code> to assemble the following statements onto the
|
|
end of the data subsection numbered <var>subsection</var> (which is an
|
|
absolute expression). If <var>subsection</var> is omitted, it defaults
|
|
to zero.
|
|
</p>
|
|
<hr>
|
|
<a name="Dc"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Dcb" accesskey="n" rel="next">Dcb</a>, Previous: <a href="#Data" accesskey="p" rel="previous">Data</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002edc_005bsize_005d-expressions"></a>
|
|
<h3 class="section">7.15 <code>.dc[<var>size</var>] <var>expressions</var></code></h3>
|
|
<a name="index-dc-directive"></a>
|
|
|
|
<p>The <code>.dc</code> directive expects zero or more <var>expressions</var> separated by
|
|
commas. These expressions are evaluated and their values inserted into the
|
|
current section. The size of the emitted value depends upon the suffix to the
|
|
<code>.dc</code> directive:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>‘<samp>.a</samp>’</code></dt>
|
|
<dd><p>Emits N-bit values, where N is the size of an address on the target system.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.b</samp>’</code></dt>
|
|
<dd><p>Emits 8-bit values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.d</samp>’</code></dt>
|
|
<dd><p>Emits double precision floating-point values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.l</samp>’</code></dt>
|
|
<dd><p>Emits 32-bit values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.s</samp>’</code></dt>
|
|
<dd><p>Emits single precision floating-point values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.w</samp>’</code></dt>
|
|
<dd><p>Emits 16-bit values.
|
|
Note - this is true even on targets where the <code>.word</code> directive would emit
|
|
32-bit values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.x</samp>’</code></dt>
|
|
<dd><p>Emits long double precision floating-point values.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If no suffix is used then ‘<samp>.w</samp>’ is assumed.
|
|
</p>
|
|
<p>The byte ordering is target dependent, as is the size and format of floating
|
|
point values.
|
|
</p>
|
|
<hr>
|
|
<a name="Dcb"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Ds" accesskey="n" rel="next">Ds</a>, Previous: <a href="#Dc" accesskey="p" rel="previous">Dc</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002edcb_005bsize_005d-number-_005b_002cfill_005d"></a>
|
|
<h3 class="section">7.16 <code>.dcb[<var>size</var>] <var>number</var> [,<var>fill</var>]</code></h3>
|
|
<a name="index-dcb-directive"></a>
|
|
<p>This directive emits <var>number</var> copies of <var>fill</var>, each of <var>size</var>
|
|
bytes. Both <var>number</var> and <var>fill</var> are absolute expressions. If the
|
|
comma and <var>fill</var> are omitted, <var>fill</var> is assumed to be zero. The
|
|
<var>size</var> suffix, if present, must be one of:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>‘<samp>.b</samp>’</code></dt>
|
|
<dd><p>Emits single byte values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.d</samp>’</code></dt>
|
|
<dd><p>Emits double-precision floating point values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.l</samp>’</code></dt>
|
|
<dd><p>Emits 4-byte values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.s</samp>’</code></dt>
|
|
<dd><p>Emits single-precision floating point values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.w</samp>’</code></dt>
|
|
<dd><p>Emits 2-byte values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.x</samp>’</code></dt>
|
|
<dd><p>Emits long double-precision floating point values.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If the <var>size</var> suffix is omitted then ‘<samp>.w</samp>’ is assumed.
|
|
</p>
|
|
<p>The byte ordering is target dependent, as is the size and format of floating
|
|
point values.
|
|
</p>
|
|
<hr>
|
|
<a name="Ds"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Def" accesskey="n" rel="next">Def</a>, Previous: <a href="#Dcb" accesskey="p" rel="previous">Dcb</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eds_005bsize_005d-number-_005b_002cfill_005d"></a>
|
|
<h3 class="section">7.17 <code>.ds[<var>size</var>] <var>number</var> [,<var>fill</var>]</code></h3>
|
|
<a name="index-ds-directive"></a>
|
|
<p>This directive emits <var>number</var> copies of <var>fill</var>, each of <var>size</var>
|
|
bytes. Both <var>number</var> and <var>fill</var> are absolute expressions. If the
|
|
comma and <var>fill</var> are omitted, <var>fill</var> is assumed to be zero. The
|
|
<var>size</var> suffix, if present, must be one of:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>‘<samp>.b</samp>’</code></dt>
|
|
<dd><p>Emits single byte values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.d</samp>’</code></dt>
|
|
<dd><p>Emits 8-byte values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.l</samp>’</code></dt>
|
|
<dd><p>Emits 4-byte values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.p</samp>’</code></dt>
|
|
<dd><p>Emits values with size matching packed-decimal floating-point ones.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.s</samp>’</code></dt>
|
|
<dd><p>Emits 4-byte values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.w</samp>’</code></dt>
|
|
<dd><p>Emits 2-byte values.
|
|
</p></dd>
|
|
<dt><code>‘<samp>.x</samp>’</code></dt>
|
|
<dd><p>Emits values with size matching long double precision floating-point ones.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Note - unlike the <code>.dcb</code> directive the ‘<samp>.d</samp>’, ‘<samp>.s</samp>’ and ‘<samp>.x</samp>’
|
|
suffixes do not indicate that floating-point values are to be inserted.
|
|
</p>
|
|
<p>If the <var>size</var> suffix is omitted then ‘<samp>.w</samp>’ is assumed.
|
|
</p>
|
|
<p>The byte ordering is target dependent.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="Def"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Desc" accesskey="n" rel="next">Desc</a>, Previous: <a href="#Ds" accesskey="p" rel="previous">Ds</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002edef-name"></a>
|
|
<h3 class="section">7.18 <code>.def <var>name</var></code></h3>
|
|
|
|
<a name="index-def-directive"></a>
|
|
<a name="index-COFF-symbols_002c-debugging"></a>
|
|
<a name="index-debugging-COFF-symbols"></a>
|
|
<p>Begin defining debugging information for a symbol <var>name</var>; the
|
|
definition extends until the <code>.endef</code> directive is encountered.
|
|
</p>
|
|
<hr>
|
|
<a name="Desc"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Dim" accesskey="n" rel="next">Dim</a>, Previous: <a href="#Def" accesskey="p" rel="previous">Def</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002edesc-symbol_002c-abs_002dexpression"></a>
|
|
<h3 class="section">7.19 <code>.desc <var>symbol</var>, <var>abs-expression</var></code></h3>
|
|
|
|
<a name="index-desc-directive"></a>
|
|
<a name="index-COFF-symbol-descriptor"></a>
|
|
<a name="index-symbol-descriptor_002c-COFF"></a>
|
|
<p>This directive sets the descriptor of the symbol (see <a href="#Symbol-Attributes">Symbol Attributes</a>)
|
|
to the low 16 bits of an absolute expression.
|
|
</p>
|
|
<p>The ‘<samp>.desc</samp>’ directive is not available when <code>as</code> is
|
|
configured for COFF output; it is only for <code>a.out</code> or <code>b.out</code>
|
|
object format. For the sake of compatibility, <code>as</code> accepts
|
|
it, but produces no output, when configured for COFF.
|
|
</p>
|
|
<hr>
|
|
<a name="Dim"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Double" accesskey="n" rel="next">Double</a>, Previous: <a href="#Desc" accesskey="p" rel="previous">Desc</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002edim"></a>
|
|
<h3 class="section">7.20 <code>.dim</code></h3>
|
|
|
|
<a name="index-dim-directive"></a>
|
|
<a name="index-COFF-auxiliary-symbol-information"></a>
|
|
<a name="index-auxiliary-symbol-information_002c-COFF"></a>
|
|
<p>This directive is generated by compilers to include auxiliary debugging
|
|
information in the symbol table. It is only permitted inside
|
|
<code>.def</code>/<code>.endef</code> pairs.
|
|
</p>
|
|
<hr>
|
|
<a name="Double"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Eject" accesskey="n" rel="next">Eject</a>, Previous: <a href="#Dim" accesskey="p" rel="previous">Dim</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002edouble-flonums"></a>
|
|
<h3 class="section">7.21 <code>.double <var>flonums</var></code></h3>
|
|
|
|
<a name="index-double-directive"></a>
|
|
<a name="index-floating-point-numbers-_0028double_0029"></a>
|
|
<p><code>.double</code> expects zero or more flonums, separated by commas. It
|
|
assembles floating point numbers.
|
|
The exact kind of floating point numbers emitted depends on how
|
|
<code>as</code> is configured. See <a href="#Machine-Dependencies">Machine Dependencies</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Eject"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Else" accesskey="n" rel="next">Else</a>, Previous: <a href="#Double" accesskey="p" rel="previous">Double</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eeject"></a>
|
|
<h3 class="section">7.22 <code>.eject</code></h3>
|
|
|
|
<a name="index-eject-directive"></a>
|
|
<a name="index-new-page_002c-in-listings"></a>
|
|
<a name="index-page_002c-in-listings"></a>
|
|
<a name="index-listing-control_003a-new-page"></a>
|
|
<p>Force a page break at this point, when generating assembly listings.
|
|
</p>
|
|
<hr>
|
|
<a name="Else"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Elseif" accesskey="n" rel="next">Elseif</a>, Previous: <a href="#Eject" accesskey="p" rel="previous">Eject</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eelse"></a>
|
|
<h3 class="section">7.23 <code>.else</code></h3>
|
|
|
|
<a name="index-else-directive"></a>
|
|
<p><code>.else</code> is part of the <code>as</code> support for conditional
|
|
assembly; see <a href="#If"><code>.if</code></a>. It marks the beginning of a section
|
|
of code to be assembled if the condition for the preceding <code>.if</code>
|
|
was false.
|
|
</p>
|
|
<hr>
|
|
<a name="Elseif"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#End" accesskey="n" rel="next">End</a>, Previous: <a href="#Else" accesskey="p" rel="previous">Else</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eelseif"></a>
|
|
<h3 class="section">7.24 <code>.elseif</code></h3>
|
|
|
|
<a name="index-elseif-directive"></a>
|
|
<p><code>.elseif</code> is part of the <code>as</code> support for conditional
|
|
assembly; see <a href="#If"><code>.if</code></a>. It is shorthand for beginning a new
|
|
<code>.if</code> block that would otherwise fill the entire <code>.else</code> section.
|
|
</p>
|
|
<hr>
|
|
<a name="End"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Endef" accesskey="n" rel="next">Endef</a>, Previous: <a href="#Elseif" accesskey="p" rel="previous">Elseif</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eend"></a>
|
|
<h3 class="section">7.25 <code>.end</code></h3>
|
|
|
|
<a name="index-end-directive"></a>
|
|
<p><code>.end</code> marks the end of the assembly file. <code>as</code> does not
|
|
process anything in the file past the <code>.end</code> directive.
|
|
</p>
|
|
<hr>
|
|
<a name="Endef"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Endfunc" accesskey="n" rel="next">Endfunc</a>, Previous: <a href="#End" accesskey="p" rel="previous">End</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eendef"></a>
|
|
<h3 class="section">7.26 <code>.endef</code></h3>
|
|
|
|
<a name="index-endef-directive"></a>
|
|
<p>This directive flags the end of a symbol definition begun with
|
|
<code>.def</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="Endfunc"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Endif" accesskey="n" rel="next">Endif</a>, Previous: <a href="#Endef" accesskey="p" rel="previous">Endef</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eendfunc"></a>
|
|
<h3 class="section">7.27 <code>.endfunc</code></h3>
|
|
<a name="index-endfunc-directive"></a>
|
|
<p><code>.endfunc</code> marks the end of a function specified with <code>.func</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="Endif"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Equ" accesskey="n" rel="next">Equ</a>, Previous: <a href="#Endfunc" accesskey="p" rel="previous">Endfunc</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eendif"></a>
|
|
<h3 class="section">7.28 <code>.endif</code></h3>
|
|
|
|
<a name="index-endif-directive"></a>
|
|
<p><code>.endif</code> is part of the <code>as</code> support for conditional assembly;
|
|
it marks the end of a block of code that is only assembled
|
|
conditionally. See <a href="#If"><code>.if</code></a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Equ"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Equiv" accesskey="n" rel="next">Equiv</a>, Previous: <a href="#Endif" accesskey="p" rel="previous">Endif</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eequ-symbol_002c-expression"></a>
|
|
<h3 class="section">7.29 <code>.equ <var>symbol</var>, <var>expression</var></code></h3>
|
|
|
|
<a name="index-equ-directive"></a>
|
|
<a name="index-assigning-values-to-symbols-1"></a>
|
|
<a name="index-symbols_002c-assigning-values-to"></a>
|
|
<p>This directive sets the value of <var>symbol</var> to <var>expression</var>.
|
|
It is synonymous with ‘<samp>.set</samp>’; see <a href="#Set"><code>.set</code></a>.
|
|
</p>
|
|
<p>The syntax for <code>equ</code> on the HPPA is
|
|
‘<samp><var>symbol</var> .equ <var>expression</var></samp>’.
|
|
</p>
|
|
<p>The syntax for <code>equ</code> on the Z80 is
|
|
‘<samp><var>symbol</var> equ <var>expression</var></samp>’.
|
|
On the Z80 it is an error if <var>symbol</var> is already defined,
|
|
but the symbol is not protected from later redefinition.
|
|
Compare <a href="#Equiv">Equiv</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Equiv"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Eqv" accesskey="n" rel="next">Eqv</a>, Previous: <a href="#Equ" accesskey="p" rel="previous">Equ</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eequiv-symbol_002c-expression"></a>
|
|
<h3 class="section">7.30 <code>.equiv <var>symbol</var>, <var>expression</var></code></h3>
|
|
<a name="index-equiv-directive"></a>
|
|
<p>The <code>.equiv</code> directive is like <code>.equ</code> and <code>.set</code>, except that
|
|
the assembler will signal an error if <var>symbol</var> is already defined. Note a
|
|
symbol which has been referenced but not actually defined is considered to be
|
|
undefined.
|
|
</p>
|
|
<p>Except for the contents of the error message, this is roughly equivalent to
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">.ifdef SYM
|
|
.err
|
|
.endif
|
|
.equ SYM,VAL
|
|
</pre></div>
|
|
<p>plus it protects the symbol from later redefinition.
|
|
</p>
|
|
<hr>
|
|
<a name="Eqv"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Err" accesskey="n" rel="next">Err</a>, Previous: <a href="#Equiv" accesskey="p" rel="previous">Equiv</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eeqv-symbol_002c-expression"></a>
|
|
<h3 class="section">7.31 <code>.eqv <var>symbol</var>, <var>expression</var></code></h3>
|
|
<a name="index-eqv-directive"></a>
|
|
<p>The <code>.eqv</code> directive is like <code>.equiv</code>, but no attempt is made to
|
|
evaluate the expression or any part of it immediately. Instead each time
|
|
the resulting symbol is used in an expression, a snapshot of its current
|
|
value is taken.
|
|
</p>
|
|
<hr>
|
|
<a name="Err"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Error" accesskey="n" rel="next">Error</a>, Previous: <a href="#Eqv" accesskey="p" rel="previous">Eqv</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eerr"></a>
|
|
<h3 class="section">7.32 <code>.err</code></h3>
|
|
<a name="index-err-directive"></a>
|
|
<p>If <code>as</code> assembles a <code>.err</code> directive, it will print an error
|
|
message and, unless the <samp>-Z</samp> option was used, it will not generate an
|
|
object file. This can be used to signal an error in conditionally compiled code.
|
|
</p>
|
|
<hr>
|
|
<a name="Error"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Exitm" accesskey="n" rel="next">Exitm</a>, Previous: <a href="#Err" accesskey="p" rel="previous">Err</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eerror-_0022string_0022"></a>
|
|
<h3 class="section">7.33 <code>.error "<var>string</var>"</code></h3>
|
|
<a name="index-error-directive"></a>
|
|
|
|
<p>Similarly to <code>.err</code>, this directive emits an error, but you can specify a
|
|
string that will be emitted as the error message. If you don’t specify the
|
|
message, it defaults to <code>".error directive invoked in source file"</code>.
|
|
See <a href="#Errors">Error and Warning Messages</a>.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .error "This code has not been assembled and tested."
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="Exitm"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Extern" accesskey="n" rel="next">Extern</a>, Previous: <a href="#Error" accesskey="p" rel="previous">Error</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eexitm"></a>
|
|
<h3 class="section">7.34 <code>.exitm</code></h3>
|
|
<p>Exit early from the current macro definition. See <a href="#Macro">Macro</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Extern"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Fail" accesskey="n" rel="next">Fail</a>, Previous: <a href="#Exitm" accesskey="p" rel="previous">Exitm</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eextern"></a>
|
|
<h3 class="section">7.35 <code>.extern</code></h3>
|
|
|
|
<a name="index-extern-directive"></a>
|
|
<p><code>.extern</code> is accepted in the source program—for compatibility
|
|
with other assemblers—but it is ignored. <code>as</code> treats
|
|
all undefined symbols as external.
|
|
</p>
|
|
<hr>
|
|
<a name="Fail"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#File" accesskey="n" rel="next">File</a>, Previous: <a href="#Extern" accesskey="p" rel="previous">Extern</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002efail-expression"></a>
|
|
<h3 class="section">7.36 <code>.fail <var>expression</var></code></h3>
|
|
|
|
<a name="index-fail-directive"></a>
|
|
<p>Generates an error or a warning. If the value of the <var>expression</var> is 500
|
|
or more, <code>as</code> will print a warning message. If the value is less
|
|
than 500, <code>as</code> will print an error message. The message will
|
|
include the value of <var>expression</var>. This can occasionally be useful inside
|
|
complex nested macros or conditional assembly.
|
|
</p>
|
|
<hr>
|
|
<a name="File"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Fill" accesskey="n" rel="next">Fill</a>, Previous: <a href="#Fail" accesskey="p" rel="previous">Fail</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002efile"></a>
|
|
<h3 class="section">7.37 <code>.file</code></h3>
|
|
<a name="index-file-directive"></a>
|
|
|
|
<p>There are two different versions of the <code>.file</code> directive. Targets
|
|
that support DWARF2 line number information use the DWARF2 version of
|
|
<code>.file</code>. Other targets use the default version.
|
|
</p>
|
|
<a name="Default-Version"></a>
|
|
<h4 class="subheading">Default Version</h4>
|
|
|
|
<a name="index-logical-file-name"></a>
|
|
<a name="index-file-name_002c-logical"></a>
|
|
<p>This version of the <code>.file</code> directive tells <code>as</code> that we
|
|
are about to start a new logical file. The syntax is:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.file <var>string</var>
|
|
</pre></div>
|
|
|
|
<p><var>string</var> is the new file name. In general, the filename is
|
|
recognized whether or not it is surrounded by quotes ‘<samp>"</samp>’; but if you wish
|
|
to specify an empty file name, you must give the quotes–<code>""</code>. This
|
|
statement may go away in future: it is only recognized to be compatible with
|
|
old <code>as</code> programs.
|
|
</p>
|
|
<a name="DWARF2-Version"></a>
|
|
<h4 class="subheading">DWARF2 Version</h4>
|
|
|
|
<p>When emitting DWARF2 line number information, <code>.file</code> assigns filenames
|
|
to the <code>.debug_line</code> file name table. The syntax is:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.file <var>fileno</var> <var>filename</var>
|
|
</pre></div>
|
|
|
|
<p>The <var>fileno</var> operand should be a unique positive integer to use as the
|
|
index of the entry in the table. The <var>filename</var> operand is a C string
|
|
literal enclosed in double quotes. The <var>filename</var> can include directory
|
|
elements. If it does, then the directory will be added to the directory table
|
|
and the basename will be added to the file table.
|
|
</p>
|
|
<p>The detail of filename indices is exposed to the user because the filename
|
|
table is shared with the <code>.debug_info</code> section of the DWARF2 debugging
|
|
information, and thus the user must know the exact indices that table
|
|
entries will have.
|
|
</p>
|
|
<p>If DWARF5 support has been enabled via the <samp>-gdwarf-5</samp> option then
|
|
an extended version of <code>.file</code> is also allowed:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.file <var>fileno</var> [<var>dirname</var>] <var>filename</var> [md5 <var>value</var>]
|
|
</pre></div>
|
|
|
|
<p>With this version a separate directory name is allowed, although if this is
|
|
used then <var>filename</var> should not contain any directory component, except
|
|
for <var>fileno</var> equal to 0: in this case, <var>dirname</var> is expected to be
|
|
the current directory and <var>filename</var> the currently processed file, and
|
|
the latter need not be located in the former. In addtion an MD5 hash value
|
|
of the contents of <var>filename</var> can be provided. This will be stored in
|
|
the the file table as well, and can be used by tools reading the debug
|
|
information to verify that the contents of the source file match the
|
|
contents of the compiled file.
|
|
</p>
|
|
<hr>
|
|
<a name="Fill"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Float" accesskey="n" rel="next">Float</a>, Previous: <a href="#File" accesskey="p" rel="previous">File</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002efill-repeat-_002c-size-_002c-value"></a>
|
|
<h3 class="section">7.38 <code>.fill <var>repeat</var> , <var>size</var> , <var>value</var></code></h3>
|
|
|
|
<a name="index-fill-directive"></a>
|
|
<a name="index-writing-patterns-in-memory"></a>
|
|
<a name="index-patterns_002c-writing-in-memory"></a>
|
|
<p><var>repeat</var>, <var>size</var> and <var>value</var> are absolute expressions.
|
|
This emits <var>repeat</var> copies of <var>size</var> bytes. <var>Repeat</var>
|
|
may be zero or more. <var>Size</var> may be zero or more, but if it is
|
|
more than 8, then it is deemed to have the value 8, compatible with
|
|
other people’s assemblers. The contents of each <var>repeat</var> bytes
|
|
is taken from an 8-byte number. The highest order 4 bytes are
|
|
zero. The lowest order 4 bytes are <var>value</var> rendered in the
|
|
byte-order of an integer on the computer <code>as</code> is assembling for.
|
|
Each <var>size</var> bytes in a repetition is taken from the lowest order
|
|
<var>size</var> bytes of this number. Again, this bizarre behavior is
|
|
compatible with other people’s assemblers.
|
|
</p>
|
|
<p><var>size</var> and <var>value</var> are optional.
|
|
If the second comma and <var>value</var> are absent, <var>value</var> is
|
|
assumed zero. If the first comma and following tokens are absent,
|
|
<var>size</var> is assumed to be 1.
|
|
</p>
|
|
<hr>
|
|
<a name="Float"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Func" accesskey="n" rel="next">Func</a>, Previous: <a href="#Fill" accesskey="p" rel="previous">Fill</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002efloat-flonums"></a>
|
|
<h3 class="section">7.39 <code>.float <var>flonums</var></code></h3>
|
|
|
|
<a name="index-floating-point-numbers-_0028single_0029"></a>
|
|
<a name="index-float-directive"></a>
|
|
<p>This directive assembles zero or more flonums, separated by commas. It
|
|
has the same effect as <code>.single</code>.
|
|
The exact kind of floating point numbers emitted depends on how
|
|
<code>as</code> is configured.
|
|
See <a href="#Machine-Dependencies">Machine Dependencies</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Func"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Global" accesskey="n" rel="next">Global</a>, Previous: <a href="#Float" accesskey="p" rel="previous">Float</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002efunc-name_005b_002clabel_005d"></a>
|
|
<h3 class="section">7.40 <code>.func <var>name</var>[,<var>label</var>]</code></h3>
|
|
<a name="index-func-directive"></a>
|
|
<p><code>.func</code> emits debugging information to denote function <var>name</var>, and
|
|
is ignored unless the file is assembled with debugging enabled.
|
|
Only ‘<samp>--gstabs[+]</samp>’ is currently supported.
|
|
<var>label</var> is the entry point of the function and if omitted <var>name</var>
|
|
prepended with the ‘<samp>leading char</samp>’ is used.
|
|
‘<samp>leading char</samp>’ is usually <code>_</code> or nothing, depending on the target.
|
|
All functions are currently defined to have <code>void</code> return type.
|
|
The function must be terminated with <code>.endfunc</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="Global"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Gnu_005fattribute" accesskey="n" rel="next">Gnu_attribute</a>, Previous: <a href="#Func" accesskey="p" rel="previous">Func</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eglobal-symbol_002c-_002eglobl-symbol"></a>
|
|
<h3 class="section">7.41 <code>.global <var>symbol</var></code>, <code>.globl <var>symbol</var></code></h3>
|
|
|
|
<a name="index-global-directive"></a>
|
|
<a name="index-symbol_002c-making-visible-to-linker"></a>
|
|
<p><code>.global</code> makes the symbol visible to <code>ld</code>. If you define
|
|
<var>symbol</var> in your partial program, its value is made available to
|
|
other partial programs that are linked with it. Otherwise,
|
|
<var>symbol</var> takes its attributes from a symbol of the same name
|
|
from another file linked into the same program.
|
|
</p>
|
|
<p>Both spellings (‘<samp>.globl</samp>’ and ‘<samp>.global</samp>’) are accepted, for
|
|
compatibility with other assemblers.
|
|
</p>
|
|
<p>On the HPPA, <code>.global</code> is not always enough to make it accessible to other
|
|
partial programs. You may need the HPPA-only <code>.EXPORT</code> directive as well.
|
|
See <a href="#HPPA-Directives">HPPA Assembler Directives</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Gnu_005fattribute"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Hidden" accesskey="n" rel="next">Hidden</a>, Previous: <a href="#Global" accesskey="p" rel="previous">Global</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002egnu_005fattribute-tag_002cvalue"></a>
|
|
<h3 class="section">7.42 <code>.gnu_attribute <var>tag</var>,<var>value</var></code></h3>
|
|
<p>Record a <small>GNU</small> object attribute for this file. See <a href="#Object-Attributes">Object Attributes</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Hidden"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#hword" accesskey="n" rel="next">hword</a>, Previous: <a href="#Gnu_005fattribute" accesskey="p" rel="previous">Gnu_attribute</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002ehidden-names"></a>
|
|
<h3 class="section">7.43 <code>.hidden <var>names</var></code></h3>
|
|
|
|
<a name="index-hidden-directive"></a>
|
|
<a name="index-visibility"></a>
|
|
<p>This is one of the ELF visibility directives. The other two are
|
|
<code>.internal</code> (see <a href="#Internal"><code>.internal</code></a>) and
|
|
<code>.protected</code> (see <a href="#Protected"><code>.protected</code></a>).
|
|
</p>
|
|
<p>This directive overrides the named symbols default visibility (which is set by
|
|
their binding: local, global or weak). The directive sets the visibility to
|
|
<code>hidden</code> which means that the symbols are not visible to other components.
|
|
Such symbols are always considered to be <code>protected</code> as well.
|
|
</p>
|
|
<hr>
|
|
<a name="hword"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Ident" accesskey="n" rel="next">Ident</a>, Previous: <a href="#Hidden" accesskey="p" rel="previous">Hidden</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002ehword-expressions"></a>
|
|
<h3 class="section">7.44 <code>.hword <var>expressions</var></code></h3>
|
|
|
|
<a name="index-hword-directive"></a>
|
|
<a name="index-integers_002c-16_002dbit"></a>
|
|
<a name="index-numbers_002c-16_002dbit"></a>
|
|
<a name="index-sixteen-bit-integers"></a>
|
|
<p>This expects zero or more <var>expressions</var>, and emits
|
|
a 16 bit number for each.
|
|
</p>
|
|
<p>This directive is a synonym for ‘<samp>.short</samp>’; depending on the target
|
|
architecture, it may also be a synonym for ‘<samp>.word</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="Ident"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#If" accesskey="n" rel="next">If</a>, Previous: <a href="#hword" accesskey="p" rel="previous">hword</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eident"></a>
|
|
<h3 class="section">7.45 <code>.ident</code></h3>
|
|
|
|
<a name="index-ident-directive"></a>
|
|
|
|
<p>This directive is used by some assemblers to place tags in object files. The
|
|
behavior of this directive varies depending on the target. When using the
|
|
a.out object file format, <code>as</code> simply accepts the directive for
|
|
source-file compatibility with existing assemblers, but does not emit anything
|
|
for it. When using COFF, comments are emitted to the <code>.comment</code> or
|
|
<code>.rdata</code> section, depending on the target. When using ELF, comments are
|
|
emitted to the <code>.comment</code> section.
|
|
</p>
|
|
<hr>
|
|
<a name="If"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Incbin" accesskey="n" rel="next">Incbin</a>, Previous: <a href="#Ident" accesskey="p" rel="previous">Ident</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eif-absolute-expression"></a>
|
|
<h3 class="section">7.46 <code>.if <var>absolute expression</var></code></h3>
|
|
|
|
<a name="index-conditional-assembly"></a>
|
|
<a name="index-if-directive"></a>
|
|
<p><code>.if</code> marks the beginning of a section of code which is only
|
|
considered part of the source program being assembled if the argument
|
|
(which must be an <var>absolute expression</var>) is non-zero. The end of
|
|
the conditional section of code must be marked by <code>.endif</code>
|
|
(see <a href="#Endif"><code>.endif</code></a>); optionally, you may include code for the
|
|
alternative condition, flagged by <code>.else</code> (see <a href="#Else"><code>.else</code></a>).
|
|
If you have several conditions to check, <code>.elseif</code> may be used to avoid
|
|
nesting blocks if/else within each subsequent <code>.else</code> block.
|
|
</p>
|
|
<p>The following variants of <code>.if</code> are also supported:
|
|
</p><dl compact="compact">
|
|
<dd><a name="index-ifdef-directive"></a>
|
|
</dd>
|
|
<dt><code>.ifdef <var>symbol</var></code></dt>
|
|
<dd><p>Assembles the following section of code if the specified <var>symbol</var>
|
|
has been defined. Note a symbol which has been referenced but not yet defined
|
|
is considered to be undefined.
|
|
</p>
|
|
<a name="index-ifb-directive"></a>
|
|
</dd>
|
|
<dt><code>.ifb <var>text</var></code></dt>
|
|
<dd><p>Assembles the following section of code if the operand is blank (empty).
|
|
</p>
|
|
<a name="index-ifc-directive"></a>
|
|
</dd>
|
|
<dt><code>.ifc <var>string1</var>,<var>string2</var></code></dt>
|
|
<dd><p>Assembles the following section of code if the two strings are the same. The
|
|
strings may be optionally quoted with single quotes. If they are not quoted,
|
|
the first string stops at the first comma, and the second string stops at the
|
|
end of the line. Strings which contain whitespace should be quoted. The
|
|
string comparison is case sensitive.
|
|
</p>
|
|
<a name="index-ifeq-directive"></a>
|
|
</dd>
|
|
<dt><code>.ifeq <var>absolute expression</var></code></dt>
|
|
<dd><p>Assembles the following section of code if the argument is zero.
|
|
</p>
|
|
<a name="index-ifeqs-directive"></a>
|
|
</dd>
|
|
<dt><code>.ifeqs <var>string1</var>,<var>string2</var></code></dt>
|
|
<dd><p>Another form of <code>.ifc</code>. The strings must be quoted using double quotes.
|
|
</p>
|
|
<a name="index-ifge-directive"></a>
|
|
</dd>
|
|
<dt><code>.ifge <var>absolute expression</var></code></dt>
|
|
<dd><p>Assembles the following section of code if the argument is greater than or
|
|
equal to zero.
|
|
</p>
|
|
<a name="index-ifgt-directive"></a>
|
|
</dd>
|
|
<dt><code>.ifgt <var>absolute expression</var></code></dt>
|
|
<dd><p>Assembles the following section of code if the argument is greater than zero.
|
|
</p>
|
|
<a name="index-ifle-directive"></a>
|
|
</dd>
|
|
<dt><code>.ifle <var>absolute expression</var></code></dt>
|
|
<dd><p>Assembles the following section of code if the argument is less than or equal
|
|
to zero.
|
|
</p>
|
|
<a name="index-iflt-directive"></a>
|
|
</dd>
|
|
<dt><code>.iflt <var>absolute expression</var></code></dt>
|
|
<dd><p>Assembles the following section of code if the argument is less than zero.
|
|
</p>
|
|
<a name="index-ifnb-directive"></a>
|
|
</dd>
|
|
<dt><code>.ifnb <var>text</var></code></dt>
|
|
<dd><p>Like <code>.ifb</code>, but the sense of the test is reversed: this assembles the
|
|
following section of code if the operand is non-blank (non-empty).
|
|
</p>
|
|
<a name="index-ifnc-directive"></a>
|
|
</dd>
|
|
<dt><code>.ifnc <var>string1</var>,<var>string2</var>.</code></dt>
|
|
<dd><p>Like <code>.ifc</code>, but the sense of the test is reversed: this assembles the
|
|
following section of code if the two strings are not the same.
|
|
</p>
|
|
<a name="index-ifndef-directive"></a>
|
|
<a name="index-ifnotdef-directive"></a>
|
|
</dd>
|
|
<dt><code>.ifndef <var>symbol</var></code></dt>
|
|
<dt><code>.ifnotdef <var>symbol</var></code></dt>
|
|
<dd><p>Assembles the following section of code if the specified <var>symbol</var>
|
|
has not been defined. Both spelling variants are equivalent. Note a symbol
|
|
which has been referenced but not yet defined is considered to be undefined.
|
|
</p>
|
|
<a name="index-ifne-directive"></a>
|
|
</dd>
|
|
<dt><code>.ifne <var>absolute expression</var></code></dt>
|
|
<dd><p>Assembles the following section of code if the argument is not equal to zero
|
|
(in other words, this is equivalent to <code>.if</code>).
|
|
</p>
|
|
<a name="index-ifnes-directive"></a>
|
|
</dd>
|
|
<dt><code>.ifnes <var>string1</var>,<var>string2</var></code></dt>
|
|
<dd><p>Like <code>.ifeqs</code>, but the sense of the test is reversed: this assembles the
|
|
following section of code if the two strings are not the same.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Incbin"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Include" accesskey="n" rel="next">Include</a>, Previous: <a href="#If" accesskey="p" rel="previous">If</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eincbin-_0022file_0022_005b_002cskip_005b_002ccount_005d_005d"></a>
|
|
<h3 class="section">7.47 <code>.incbin "<var>file</var>"[,<var>skip</var>[,<var>count</var>]]</code></h3>
|
|
|
|
<a name="index-incbin-directive"></a>
|
|
<a name="index-binary-files_002c-including"></a>
|
|
<p>The <code>incbin</code> directive includes <var>file</var> verbatim at the current
|
|
location. You can control the search paths used with the ‘<samp>-I</samp>’ command-line
|
|
option (see <a href="#Invoking">Command-Line Options</a>). Quotation marks are required
|
|
around <var>file</var>.
|
|
</p>
|
|
<p>The <var>skip</var> argument skips a number of bytes from the start of the
|
|
<var>file</var>. The <var>count</var> argument indicates the maximum number of bytes to
|
|
read. Note that the data is not aligned in any way, so it is the user’s
|
|
responsibility to make sure that proper alignment is provided both before and
|
|
after the <code>incbin</code> directive.
|
|
</p>
|
|
<hr>
|
|
<a name="Include"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Int" accesskey="n" rel="next">Int</a>, Previous: <a href="#Incbin" accesskey="p" rel="previous">Incbin</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002einclude-_0022file_0022"></a>
|
|
<h3 class="section">7.48 <code>.include "<var>file</var>"</code></h3>
|
|
|
|
<a name="index-include-directive"></a>
|
|
<a name="index-supporting-files_002c-including"></a>
|
|
<a name="index-files_002c-including"></a>
|
|
<p>This directive provides a way to include supporting files at specified
|
|
points in your source program. The code from <var>file</var> is assembled as
|
|
if it followed the point of the <code>.include</code>; when the end of the
|
|
included file is reached, assembly of the original file continues. You
|
|
can control the search paths used with the ‘<samp>-I</samp>’ command-line option
|
|
(see <a href="#Invoking">Command-Line Options</a>). Quotation marks are required
|
|
around <var>file</var>.
|
|
</p>
|
|
<hr>
|
|
<a name="Int"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Internal" accesskey="n" rel="next">Internal</a>, Previous: <a href="#Include" accesskey="p" rel="previous">Include</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eint-expressions"></a>
|
|
<h3 class="section">7.49 <code>.int <var>expressions</var></code></h3>
|
|
|
|
<a name="index-int-directive"></a>
|
|
<a name="index-integers_002c-32_002dbit"></a>
|
|
<p>Expect zero or more <var>expressions</var>, of any section, separated by commas.
|
|
For each expression, emit a number that, at run time, is the value of that
|
|
expression. The byte order and bit size of the number depends on what kind
|
|
of target the assembly is for.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="Internal"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Irp" accesskey="n" rel="next">Irp</a>, Previous: <a href="#Int" accesskey="p" rel="previous">Int</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002einternal-names"></a>
|
|
<h3 class="section">7.50 <code>.internal <var>names</var></code></h3>
|
|
|
|
<a name="index-internal-directive"></a>
|
|
<a name="index-visibility-1"></a>
|
|
<p>This is one of the ELF visibility directives. The other two are
|
|
<code>.hidden</code> (see <a href="#Hidden"><code>.hidden</code></a>) and
|
|
<code>.protected</code> (see <a href="#Protected"><code>.protected</code></a>).
|
|
</p>
|
|
<p>This directive overrides the named symbols default visibility (which is set by
|
|
their binding: local, global or weak). The directive sets the visibility to
|
|
<code>internal</code> which means that the symbols are considered to be <code>hidden</code>
|
|
(i.e., not visible to other components), and that some extra, processor specific
|
|
processing must also be performed upon the symbols as well.
|
|
</p>
|
|
<hr>
|
|
<a name="Irp"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Irpc" accesskey="n" rel="next">Irpc</a>, Previous: <a href="#Internal" accesskey="p" rel="previous">Internal</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eirp-symbol_002cvalues_2026"></a>
|
|
<h3 class="section">7.51 <code>.irp <var>symbol</var>,<var>values</var></code>…</h3>
|
|
|
|
<a name="index-irp-directive"></a>
|
|
<p>Evaluate a sequence of statements assigning different values to <var>symbol</var>.
|
|
The sequence of statements starts at the <code>.irp</code> directive, and is
|
|
terminated by an <code>.endr</code> directive. For each <var>value</var>, <var>symbol</var> is
|
|
set to <var>value</var>, and the sequence of statements is assembled. If no
|
|
<var>value</var> is listed, the sequence of statements is assembled once, with
|
|
<var>symbol</var> set to the null string. To refer to <var>symbol</var> within the
|
|
sequence of statements, use <var>\symbol</var>.
|
|
</p>
|
|
<p>For example, assembling
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> .irp param,1,2,3
|
|
move d\param,sp@-
|
|
.endr
|
|
</pre></div>
|
|
|
|
<p>is equivalent to assembling
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> move d1,sp@-
|
|
move d2,sp@-
|
|
move d3,sp@-
|
|
</pre></div>
|
|
|
|
<p>For some caveats with the spelling of <var>symbol</var>, see also <a href="#Macro">Macro</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Irpc"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Lcomm" accesskey="n" rel="next">Lcomm</a>, Previous: <a href="#Irp" accesskey="p" rel="previous">Irp</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eirpc-symbol_002cvalues_2026"></a>
|
|
<h3 class="section">7.52 <code>.irpc <var>symbol</var>,<var>values</var></code>…</h3>
|
|
|
|
<a name="index-irpc-directive"></a>
|
|
<p>Evaluate a sequence of statements assigning different values to <var>symbol</var>.
|
|
The sequence of statements starts at the <code>.irpc</code> directive, and is
|
|
terminated by an <code>.endr</code> directive. For each character in <var>value</var>,
|
|
<var>symbol</var> is set to the character, and the sequence of statements is
|
|
assembled. If no <var>value</var> is listed, the sequence of statements is
|
|
assembled once, with <var>symbol</var> set to the null string. To refer to
|
|
<var>symbol</var> within the sequence of statements, use <var>\symbol</var>.
|
|
</p>
|
|
<p>For example, assembling
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> .irpc param,123
|
|
move d\param,sp@-
|
|
.endr
|
|
</pre></div>
|
|
|
|
<p>is equivalent to assembling
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> move d1,sp@-
|
|
move d2,sp@-
|
|
move d3,sp@-
|
|
</pre></div>
|
|
|
|
<p>For some caveats with the spelling of <var>symbol</var>, see also the discussion
|
|
at See <a href="#Macro">Macro</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Lcomm"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Lflags" accesskey="n" rel="next">Lflags</a>, Previous: <a href="#Irpc" accesskey="p" rel="previous">Irpc</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002elcomm-symbol-_002c-length"></a>
|
|
<h3 class="section">7.53 <code>.lcomm <var>symbol</var> , <var>length</var></code></h3>
|
|
|
|
<a name="index-lcomm-directive"></a>
|
|
<a name="index-local-common-symbols"></a>
|
|
<a name="index-symbols_002c-local-common"></a>
|
|
<p>Reserve <var>length</var> (an absolute expression) bytes for a local common
|
|
denoted by <var>symbol</var>. The section and value of <var>symbol</var> are
|
|
those of the new local common. The addresses are allocated in the bss
|
|
section, so that at run-time the bytes start off zeroed. <var>Symbol</var>
|
|
is not declared global (see <a href="#Global"><code>.global</code></a>), so is normally
|
|
not visible to <code>ld</code>.
|
|
</p>
|
|
<p>Some targets permit a third argument to be used with <code>.lcomm</code>. This
|
|
argument specifies the desired alignment of the symbol in the bss section.
|
|
</p>
|
|
<p>The syntax for <code>.lcomm</code> differs slightly on the HPPA. The syntax is
|
|
‘<samp><var>symbol</var> .lcomm, <var>length</var></samp>’; <var>symbol</var> is optional.
|
|
</p>
|
|
<hr>
|
|
<a name="Lflags"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Line" accesskey="n" rel="next">Line</a>, Previous: <a href="#Lcomm" accesskey="p" rel="previous">Lcomm</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002elflags"></a>
|
|
<h3 class="section">7.54 <code>.lflags</code></h3>
|
|
|
|
<a name="index-lflags-directive-_0028ignored_0029"></a>
|
|
<p><code>as</code> accepts this directive, for compatibility with other
|
|
assemblers, but ignores it.
|
|
</p>
|
|
<hr>
|
|
<a name="Line"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Linkonce" accesskey="n" rel="next">Linkonce</a>, Previous: <a href="#Lflags" accesskey="p" rel="previous">Lflags</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eline-line_002dnumber"></a>
|
|
<h3 class="section">7.55 <code>.line <var>line-number</var></code></h3>
|
|
|
|
<a name="index-line-directive"></a>
|
|
<a name="index-logical-line-number"></a>
|
|
<p>Change the logical line number. <var>line-number</var> must be an absolute
|
|
expression. The next line has that logical line number. Therefore any other
|
|
statements on the current line (after a statement separator character) are
|
|
reported as on logical line number <var>line-number</var> - 1. One day
|
|
<code>as</code> will no longer support this directive: it is recognized only
|
|
for compatibility with existing assembler programs.
|
|
</p>
|
|
<p>Even though this is a directive associated with the <code>a.out</code> or
|
|
<code>b.out</code> object-code formats, <code>as</code> still recognizes it
|
|
when producing COFF output, and treats ‘<samp>.line</samp>’ as though it
|
|
were the COFF ‘<samp>.ln</samp>’ <em>if</em> it is found outside a
|
|
<code>.def</code>/<code>.endef</code> pair.
|
|
</p>
|
|
<p>Inside a <code>.def</code>, ‘<samp>.line</samp>’ is, instead, one of the directives
|
|
used by compilers to generate auxiliary symbol information for
|
|
debugging.
|
|
</p>
|
|
<hr>
|
|
<a name="Linkonce"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#List" accesskey="n" rel="next">List</a>, Previous: <a href="#Line" accesskey="p" rel="previous">Line</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002elinkonce-_005btype_005d"></a>
|
|
<h3 class="section">7.56 <code>.linkonce [<var>type</var>]</code></h3>
|
|
<a name="index-COMDAT"></a>
|
|
<a name="index-linkonce-directive"></a>
|
|
<a name="index-common-sections"></a>
|
|
<p>Mark the current section so that the linker only includes a single copy of it.
|
|
This may be used to include the same section in several different object files,
|
|
but ensure that the linker will only include it once in the final output file.
|
|
The <code>.linkonce</code> pseudo-op must be used for each instance of the section.
|
|
Duplicate sections are detected based on the section name, so it should be
|
|
unique.
|
|
</p>
|
|
<p>This directive is only supported by a few object file formats; as of this
|
|
writing, the only object file format which supports it is the Portable
|
|
Executable format used on Windows NT.
|
|
</p>
|
|
<p>The <var>type</var> argument is optional. If specified, it must be one of the
|
|
following strings. For example:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">.linkonce same_size
|
|
</pre></div>
|
|
<p>Not all types may be supported on all object file formats.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>discard</code></dt>
|
|
<dd><p>Silently discard duplicate sections. This is the default.
|
|
</p>
|
|
</dd>
|
|
<dt><code>one_only</code></dt>
|
|
<dd><p>Warn if there are duplicate sections, but still keep only one copy.
|
|
</p>
|
|
</dd>
|
|
<dt><code>same_size</code></dt>
|
|
<dd><p>Warn if any of the duplicates have different sizes.
|
|
</p>
|
|
</dd>
|
|
<dt><code>same_contents</code></dt>
|
|
<dd><p>Warn if any of the duplicates do not have exactly the same contents.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="List"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Ln" accesskey="n" rel="next">Ln</a>, Previous: <a href="#Linkonce" accesskey="p" rel="previous">Linkonce</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002elist"></a>
|
|
<h3 class="section">7.57 <code>.list</code></h3>
|
|
|
|
<a name="index-list-directive"></a>
|
|
<a name="index-listing-control_002c-turning-on"></a>
|
|
<p>Control (in conjunction with the <code>.nolist</code> directive) whether or
|
|
not assembly listings are generated. These two directives maintain an
|
|
internal counter (which is zero initially). <code>.list</code> increments the
|
|
counter, and <code>.nolist</code> decrements it. Assembly listings are
|
|
generated whenever the counter is greater than zero.
|
|
</p>
|
|
<p>By default, listings are disabled. When you enable them (with the
|
|
‘<samp>-a</samp>’ command-line option; see <a href="#Invoking">Command-Line Options</a>),
|
|
the initial value of the listing counter is one.
|
|
</p>
|
|
<hr>
|
|
<a name="Ln"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Loc" accesskey="n" rel="next">Loc</a>, Previous: <a href="#List" accesskey="p" rel="previous">List</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eln-line_002dnumber"></a>
|
|
<h3 class="section">7.58 <code>.ln <var>line-number</var></code></h3>
|
|
|
|
<a name="index-ln-directive"></a>
|
|
<p>‘<samp>.ln</samp>’ is a synonym for ‘<samp>.line</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="Loc"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Loc_005fmark_005flabels" accesskey="n" rel="next">Loc_mark_labels</a>, Previous: <a href="#Ln" accesskey="p" rel="previous">Ln</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eloc-fileno-lineno-_005bcolumn_005d-_005boptions_005d"></a>
|
|
<h3 class="section">7.59 <code>.loc <var>fileno</var> <var>lineno</var> [<var>column</var>] [<var>options</var>]</code></h3>
|
|
<a name="index-loc-directive"></a>
|
|
<p>When emitting DWARF2 line number information,
|
|
the <code>.loc</code> directive will add a row to the <code>.debug_line</code> line
|
|
number matrix corresponding to the immediately following assembly
|
|
instruction. The <var>fileno</var>, <var>lineno</var>, and optional <var>column</var>
|
|
arguments will be applied to the <code>.debug_line</code> state machine before
|
|
the row is added. It is an error for the input assembly file to generate
|
|
a non-empty <code>.debug_line</code> and also use <code>loc</code> directives.
|
|
</p>
|
|
<p>The <var>options</var> are a sequence of the following tokens in any order:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>basic_block</code></dt>
|
|
<dd><p>This option will set the <code>basic_block</code> register in the
|
|
<code>.debug_line</code> state machine to <code>true</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>prologue_end</code></dt>
|
|
<dd><p>This option will set the <code>prologue_end</code> register in the
|
|
<code>.debug_line</code> state machine to <code>true</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>epilogue_begin</code></dt>
|
|
<dd><p>This option will set the <code>epilogue_begin</code> register in the
|
|
<code>.debug_line</code> state machine to <code>true</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>is_stmt <var>value</var></code></dt>
|
|
<dd><p>This option will set the <code>is_stmt</code> register in the
|
|
<code>.debug_line</code> state machine to <code>value</code>, which must be
|
|
either 0 or 1.
|
|
</p>
|
|
</dd>
|
|
<dt><code>isa <var>value</var></code></dt>
|
|
<dd><p>This directive will set the <code>isa</code> register in the <code>.debug_line</code>
|
|
state machine to <var>value</var>, which must be an unsigned integer.
|
|
</p>
|
|
</dd>
|
|
<dt><code>discriminator <var>value</var></code></dt>
|
|
<dd><p>This directive will set the <code>discriminator</code> register in the <code>.debug_line</code>
|
|
state machine to <var>value</var>, which must be an unsigned integer.
|
|
</p>
|
|
</dd>
|
|
<dt><code>view <var>value</var></code></dt>
|
|
<dd><p>This option causes a row to be added to <code>.debug_line</code> in reference to the
|
|
current address (which might not be the same as that of the following assembly
|
|
instruction), and to associate <var>value</var> with the <code>view</code> register in the
|
|
<code>.debug_line</code> state machine. If <var>value</var> is a label, both the
|
|
<code>view</code> register and the label are set to the number of prior <code>.loc</code>
|
|
directives at the same program location. If <var>value</var> is the literal
|
|
<code>0</code>, the <code>view</code> register is set to zero, and the assembler asserts
|
|
that there aren’t any prior <code>.loc</code> directives at the same program
|
|
location. If <var>value</var> is the literal <code>-0</code>, the assembler arrange for
|
|
the <code>view</code> register to be reset in this row, even if there are prior
|
|
<code>.loc</code> directives at the same program location.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Loc_005fmark_005flabels"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Local" accesskey="n" rel="next">Local</a>, Previous: <a href="#Loc" accesskey="p" rel="previous">Loc</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eloc_005fmark_005flabels-enable"></a>
|
|
<h3 class="section">7.60 <code>.loc_mark_labels <var>enable</var></code></h3>
|
|
<a name="index-loc_005fmark_005flabels-directive"></a>
|
|
<p>When emitting DWARF2 line number information,
|
|
the <code>.loc_mark_labels</code> directive makes the assembler emit an entry
|
|
to the <code>.debug_line</code> line number matrix with the <code>basic_block</code>
|
|
register in the state machine set whenever a code label is seen.
|
|
The <var>enable</var> argument should be either 1 or 0, to enable or disable
|
|
this function respectively.
|
|
</p>
|
|
<hr>
|
|
<a name="Local"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Long" accesskey="n" rel="next">Long</a>, Previous: <a href="#Loc_005fmark_005flabels" accesskey="p" rel="previous">Loc_mark_labels</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002elocal-names"></a>
|
|
<h3 class="section">7.61 <code>.local <var>names</var></code></h3>
|
|
|
|
<a name="index-local-directive"></a>
|
|
<p>This directive, which is available for ELF targets, marks each symbol in
|
|
the comma-separated list of <code>names</code> as a local symbol so that it
|
|
will not be externally visible. If the symbols do not already exist,
|
|
they will be created.
|
|
</p>
|
|
<p>For targets where the <code>.lcomm</code> directive (see <a href="#Lcomm">Lcomm</a>) does not
|
|
accept an alignment argument, which is the case for most ELF targets,
|
|
the <code>.local</code> directive can be used in combination with <code>.comm</code>
|
|
(see <a href="#Comm">Comm</a>) to define aligned local common data.
|
|
</p>
|
|
<hr>
|
|
<a name="Long"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Macro" accesskey="n" rel="next">Macro</a>, Previous: <a href="#Local" accesskey="p" rel="previous">Local</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002elong-expressions"></a>
|
|
<h3 class="section">7.62 <code>.long <var>expressions</var></code></h3>
|
|
|
|
<a name="index-long-directive"></a>
|
|
<p><code>.long</code> is the same as ‘<samp>.int</samp>’. See <a href="#Int"><code>.int</code></a>.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="Macro"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MRI" accesskey="n" rel="next">MRI</a>, Previous: <a href="#Long" accesskey="p" rel="previous">Long</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002emacro"></a>
|
|
<h3 class="section">7.63 <code>.macro</code></h3>
|
|
|
|
<a name="index-macros"></a>
|
|
<p>The commands <code>.macro</code> and <code>.endm</code> allow you to define macros that
|
|
generate assembly output. For example, this definition specifies a macro
|
|
<code>sum</code> that puts a sequence of numbers into memory:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> .macro sum from=0, to=5
|
|
.long \from
|
|
.if \to-\from
|
|
sum "(\from+1)",\to
|
|
.endif
|
|
.endm
|
|
</pre></div>
|
|
|
|
<p>With that definition, ‘<samp>SUM 0,5</samp>’ is equivalent to this assembly input:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> .long 0
|
|
.long 1
|
|
.long 2
|
|
.long 3
|
|
.long 4
|
|
.long 5
|
|
</pre></div>
|
|
|
|
<dl compact="compact">
|
|
<dt><code>.macro <var>macname</var></code>
|
|
<a name="index-_002emacro-macname"></a>
|
|
</dt>
|
|
<dt><code>.macro <var>macname</var> <var>macargs</var> …</code>
|
|
<a name="index-_002emacro-macname-macargs-_2026"></a>
|
|
</dt>
|
|
<dd><a name="index-macro-directive"></a>
|
|
<p>Begin the definition of a macro called <var>macname</var>. If your macro
|
|
definition requires arguments, specify their names after the macro name,
|
|
separated by commas or spaces. You can qualify the macro argument to
|
|
indicate whether all invocations must specify a non-blank value (through
|
|
‘<samp>:<code>req</code></samp>’), or whether it takes all of the remaining arguments
|
|
(through ‘<samp>:<code>vararg</code></samp>’). You can supply a default value for any
|
|
macro argument by following the name with ‘<samp>=<var>deflt</var></samp>’. You
|
|
cannot define two macros with the same <var>macname</var> unless it has been
|
|
subject to the <code>.purgem</code> directive (see <a href="#Purgem">Purgem</a>) between the two
|
|
definitions. For example, these are all valid <code>.macro</code> statements:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>.macro comm</code></dt>
|
|
<dd><p>Begin the definition of a macro called <code>comm</code>, which takes no
|
|
arguments.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.macro plus1 p, p1</code></dt>
|
|
<dt><code>.macro plus1 p p1</code></dt>
|
|
<dd><p>Either statement begins the definition of a macro called <code>plus1</code>,
|
|
which takes two arguments; within the macro definition, write
|
|
‘<samp>\p</samp>’ or ‘<samp>\p1</samp>’ to evaluate the arguments.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.macro reserve_str p1=0 p2</code></dt>
|
|
<dd><p>Begin the definition of a macro called <code>reserve_str</code>, with two
|
|
arguments. The first argument has a default value, but not the second.
|
|
After the definition is complete, you can call the macro either as
|
|
‘<samp>reserve_str <var>a</var>,<var>b</var></samp>’ (with ‘<samp>\p1</samp>’ evaluating to
|
|
<var>a</var> and ‘<samp>\p2</samp>’ evaluating to <var>b</var>), or as ‘<samp>reserve_str
|
|
,<var>b</var></samp>’ (with ‘<samp>\p1</samp>’ evaluating as the default, in this case
|
|
‘<samp>0</samp>’, and ‘<samp>\p2</samp>’ evaluating to <var>b</var>).
|
|
</p>
|
|
</dd>
|
|
<dt><code>.macro m p1:req, p2=0, p3:vararg</code></dt>
|
|
<dd><p>Begin the definition of a macro called <code>m</code>, with at least three
|
|
arguments. The first argument must always have a value specified, but
|
|
not the second, which instead has a default value. The third formal
|
|
will get assigned all remaining arguments specified at invocation time.
|
|
</p>
|
|
<p>When you call a macro, you can specify the argument values either by
|
|
position, or by keyword. For example, ‘<samp>sum 9,17</samp>’ is equivalent to
|
|
‘<samp>sum to=17, from=9</samp>’.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Note that since each of the <var>macargs</var> can be an identifier exactly
|
|
as any other one permitted by the target architecture, there may be
|
|
occasional problems if the target hand-crafts special meanings to certain
|
|
characters when they occur in a special position. For example, if the colon
|
|
(<code>:</code>) is generally permitted to be part of a symbol name, but the
|
|
architecture specific code special-cases it when occurring as the final
|
|
character of a symbol (to denote a label), then the macro parameter
|
|
replacement code will have no way of knowing that and consider the whole
|
|
construct (including the colon) an identifier, and check only this
|
|
identifier for being the subject to parameter substitution. So for example
|
|
this macro definition:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> .macro label l
|
|
\l:
|
|
.endm
|
|
</pre></div>
|
|
|
|
<p>might not work as expected. Invoking ‘<samp>label foo</samp>’ might not create a label
|
|
called ‘<samp>foo</samp>’ but instead just insert the text ‘<samp>\l:</samp>’ into the
|
|
assembler source, probably generating an error about an unrecognised
|
|
identifier.
|
|
</p>
|
|
<p>Similarly problems might occur with the period character (‘<samp>.</samp>’)
|
|
which is often allowed inside opcode names (and hence identifier names). So
|
|
for example constructing a macro to build an opcode from a base name and a
|
|
length specifier like this:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> .macro opcode base length
|
|
\base.\length
|
|
.endm
|
|
</pre></div>
|
|
|
|
<p>and invoking it as ‘<samp>opcode store l</samp>’ will not create a ‘<samp>store.l</samp>’
|
|
instruction but instead generate some kind of error as the assembler tries to
|
|
interpret the text ‘<samp>\base.\length</samp>’.
|
|
</p>
|
|
<p>There are several possible ways around this problem:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>Insert white space</code></dt>
|
|
<dd><p>If it is possible to use white space characters then this is the simplest
|
|
solution. eg:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> .macro label l
|
|
\l :
|
|
.endm
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>Use ‘<samp>\()</samp>’</code></dt>
|
|
<dd><p>The string ‘<samp>\()</samp>’ can be used to separate the end of a macro argument from
|
|
the following text. eg:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> .macro opcode base length
|
|
\base\().\length
|
|
.endm
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>Use the alternate macro syntax mode</code></dt>
|
|
<dd><p>In the alternative macro syntax mode the ampersand character (‘<samp>&</samp>’) can be
|
|
used as a separator. eg:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> .altmacro
|
|
.macro label l
|
|
l&:
|
|
.endm
|
|
</pre></div>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Note: this problem of correctly identifying string parameters to pseudo ops
|
|
also applies to the identifiers used in <code>.irp</code> (see <a href="#Irp">Irp</a>)
|
|
and <code>.irpc</code> (see <a href="#Irpc">Irpc</a>) as well.
|
|
</p>
|
|
<p>Another issue can occur with the actual arguments passed during macro
|
|
invocation: Multiple arguments can be separated by blanks or commas. To have
|
|
arguments actually contain blanks or commas (or potentially other non-alpha-
|
|
numeric characters), individual arguments will need to be enclosed in either
|
|
parentheses <code>()</code>, square brackets <code>[]</code>, or double quote <code>"</code>
|
|
characters. The latter may be the only viable option in certain situations,
|
|
as only double quotes are actually stripped while establishing arguments. It
|
|
may be important to be aware of two escaping models used when processing such
|
|
quoted argument strings: For one two adjacent double quotes represent a single
|
|
double quote in the resulting argument, going along the lines of the stripping
|
|
of the enclosing quotes. But then double quotes can also be escaped by a
|
|
backslash <code>\</code>, but this backslash will not be retained in the resulting
|
|
actual argument as then seen / used while expanding the macro.
|
|
</p>
|
|
<p>As a consequence to the first of these escaping mechanisms two string literals
|
|
intended to be representing separate macro arguments need to be separated by
|
|
white space (or, better yet, by a comma). To state it differently, such
|
|
adjacent string literals - even if separated only by a blank - will not be
|
|
concatenated when determining macro arguments, even if they’re only separated
|
|
by white space. This is unlike certain other pseudo ops, e.g. <code>.ascii</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.endm</code>
|
|
<a name="index-_002eendm"></a>
|
|
</dt>
|
|
<dd><a name="index-endm-directive"></a>
|
|
<p>Mark the end of a macro definition.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.exitm</code>
|
|
<a name="index-_002eexitm"></a>
|
|
</dt>
|
|
<dd><a name="index-exitm-directive"></a>
|
|
<p>Exit early from the current macro definition.
|
|
</p>
|
|
<a name="index-number-of-macros-executed"></a>
|
|
<a name="index-macros_002c-count-executed"></a>
|
|
</dd>
|
|
<dt><code>\@</code>
|
|
<a name="index-_005c_0040"></a>
|
|
</dt>
|
|
<dd><p><code>as</code> maintains a counter of how many macros it has
|
|
executed in this pseudo-variable; you can copy that number to your
|
|
output with ‘<samp>\@</samp>’, but <em>only within a macro definition</em>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>LOCAL <var>name</var> [ , … ]</code>
|
|
<a name="index-LOCAL-name-_005b-_002c-_2026-_005d-1"></a>
|
|
</dt>
|
|
<dd><p><em>Warning: <code>LOCAL</code> is only available if you select “alternate
|
|
macro syntax” with ‘<samp>--alternate</samp>’ or <code>.altmacro</code>.</em>
|
|
See <a href="#Altmacro"><code>.altmacro</code></a>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="MRI"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Noaltmacro" accesskey="n" rel="next">Noaltmacro</a>, Previous: <a href="#Macro" accesskey="p" rel="previous">Macro</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002emri-val"></a>
|
|
<h3 class="section">7.64 <code>.mri <var>val</var></code></h3>
|
|
|
|
<a name="index-mri-directive"></a>
|
|
<a name="index-MRI-mode_002c-temporarily"></a>
|
|
<p>If <var>val</var> is non-zero, this tells <code>as</code> to enter MRI mode. If
|
|
<var>val</var> is zero, this tells <code>as</code> to exit MRI mode. This change
|
|
affects code assembled until the next <code>.mri</code> directive, or until the end
|
|
of the file. See <a href="#M">MRI mode</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Noaltmacro"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Nolist" accesskey="n" rel="next">Nolist</a>, Previous: <a href="#MRI" accesskey="p" rel="previous">MRI</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002enoaltmacro"></a>
|
|
<h3 class="section">7.65 <code>.noaltmacro</code></h3>
|
|
<p>Disable alternate macro mode. See <a href="#Altmacro">Altmacro</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Nolist"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Nop" accesskey="n" rel="next">Nop</a>, Previous: <a href="#Noaltmacro" accesskey="p" rel="previous">Noaltmacro</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002enolist"></a>
|
|
<h3 class="section">7.66 <code>.nolist</code></h3>
|
|
|
|
<a name="index-nolist-directive"></a>
|
|
<a name="index-listing-control_002c-turning-off"></a>
|
|
<p>Control (in conjunction with the <code>.list</code> directive) whether or
|
|
not assembly listings are generated. These two directives maintain an
|
|
internal counter (which is zero initially). <code>.list</code> increments the
|
|
counter, and <code>.nolist</code> decrements it. Assembly listings are
|
|
generated whenever the counter is greater than zero.
|
|
</p>
|
|
<hr>
|
|
<a name="Nop"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Nops" accesskey="n" rel="next">Nops</a>, Previous: <a href="#Nolist" accesskey="p" rel="previous">Nolist</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002enop-_005bsize_005d"></a>
|
|
<h3 class="section">7.67 <code>.nop [<var>size</var>]</code></h3>
|
|
|
|
<a name="index-nop-directive"></a>
|
|
<a name="index-filling-memory-with-no_002dop-instructions"></a>
|
|
<p>This directive emits no-op instructions. It is provided on all architectures,
|
|
allowing the creation of architecture neutral tests involving actual code. The
|
|
size of the generated instruction is target specific, but if the optional
|
|
<var>size</var> argument is given and resolves to an absolute positive value at that
|
|
point in assembly (no forward expressions allowed) then the fewest no-op
|
|
instructions are emitted that equal or exceed a total <var>size</var> in bytes.
|
|
<code>.nop</code> does affect the generation of DWARF debug line information.
|
|
Some targets do not support using <code>.nop</code> with <var>size</var>.
|
|
</p>
|
|
<hr>
|
|
<a name="Nops"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Octa" accesskey="n" rel="next">Octa</a>, Previous: <a href="#Nop" accesskey="p" rel="previous">Nop</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002enops-size_005b_002c-control_005d"></a>
|
|
<h3 class="section">7.68 <code>.nops <var>size</var>[, <var>control</var>]</code></h3>
|
|
|
|
<a name="index-nops-directive"></a>
|
|
<a name="index-filling-memory-with-no_002dop-instructions-1"></a>
|
|
<p>This directive emits no-op instructions. It is specific to the Intel 80386 and
|
|
AMD x86-64 targets. It takes a <var>size</var> argument and generates <var>size</var>
|
|
bytes of no-op instructions. <var>size</var> must be absolute and positive. These
|
|
bytes do not affect the generation of DWARF debug line information.
|
|
</p>
|
|
<p>The optional <var>control</var> argument specifies a size limit for a single no-op
|
|
instruction. If not provided then a value of 0 is assumed. The valid values
|
|
of <var>control</var> are between 0 and 4 in 16-bit mode, between 0 and 7 when
|
|
tuning for older processors in 32-bit mode, between 0 and 11 in 64-bit mode or
|
|
when tuning for newer processors in 32-bit mode. When 0 is used, the no-op
|
|
instruction size limit is set to the maximum supported size.
|
|
</p>
|
|
<hr>
|
|
<a name="Octa"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Offset" accesskey="n" rel="next">Offset</a>, Previous: <a href="#Nops" accesskey="p" rel="previous">Nops</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eocta-bignums"></a>
|
|
<h3 class="section">7.69 <code>.octa <var>bignums</var></code></h3>
|
|
|
|
<a name="index-octa-directive"></a>
|
|
<a name="index-integer_002c-16_002dbyte"></a>
|
|
<a name="index-sixteen-byte-integer"></a>
|
|
<p>This directive expects zero or more bignums, separated by commas. For each
|
|
bignum, it emits a 16-byte integer.
|
|
</p>
|
|
<p>The term “octa” comes from contexts in which a “word” is two bytes;
|
|
hence <em>octa</em>-word for 16 bytes.
|
|
</p>
|
|
<hr>
|
|
<a name="Offset"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Org" accesskey="n" rel="next">Org</a>, Previous: <a href="#Octa" accesskey="p" rel="previous">Octa</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eoffset-loc"></a>
|
|
<h3 class="section">7.70 <code>.offset <var>loc</var></code></h3>
|
|
|
|
<a name="index-offset-directive"></a>
|
|
<p>Set the location counter to <var>loc</var> in the absolute section. <var>loc</var> must
|
|
be an absolute expression. This directive may be useful for defining
|
|
symbols with absolute values. Do not confuse it with the <code>.org</code>
|
|
directive.
|
|
</p>
|
|
<hr>
|
|
<a name="Org"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#P2align" accesskey="n" rel="next">P2align</a>, Previous: <a href="#Offset" accesskey="p" rel="previous">Offset</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eorg-new_002dlc-_002c-fill"></a>
|
|
<h3 class="section">7.71 <code>.org <var>new-lc</var> , <var>fill</var></code></h3>
|
|
|
|
<a name="index-org-directive"></a>
|
|
<a name="index-location-counter_002c-advancing"></a>
|
|
<a name="index-advancing-location-counter"></a>
|
|
<a name="index-current-address_002c-advancing"></a>
|
|
<p>Advance the location counter of the current section to
|
|
<var>new-lc</var>. <var>new-lc</var> is either an absolute expression or an
|
|
expression with the same section as the current subsection. That is,
|
|
you can’t use <code>.org</code> to cross sections: if <var>new-lc</var> has the
|
|
wrong section, the <code>.org</code> directive is ignored. To be compatible
|
|
with former assemblers, if the section of <var>new-lc</var> is absolute,
|
|
<code>as</code> issues a warning, then pretends the section of <var>new-lc</var>
|
|
is the same as the current subsection.
|
|
</p>
|
|
<p><code>.org</code> may only increase the location counter, or leave it
|
|
unchanged; you cannot use <code>.org</code> to move the location counter
|
|
backwards.
|
|
</p>
|
|
<p>Because <code>as</code> tries to assemble programs in one pass, <var>new-lc</var>
|
|
may not be undefined. If you really detest this restriction we eagerly await
|
|
a chance to share your improved assembler.
|
|
</p>
|
|
<p>Beware that the origin is relative to the start of the section, not
|
|
to the start of the subsection. This is compatible with other
|
|
people’s assemblers.
|
|
</p>
|
|
<p>When the location counter (of the current subsection) is advanced, the
|
|
intervening bytes are filled with <var>fill</var> which should be an
|
|
absolute expression. If the comma and <var>fill</var> are omitted,
|
|
<var>fill</var> defaults to zero.
|
|
</p>
|
|
<hr>
|
|
<a name="P2align"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PopSection" accesskey="n" rel="next">PopSection</a>, Previous: <a href="#Org" accesskey="p" rel="previous">Org</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002ep2align_005bwl_005d-_005babs_002dexpr_005b_002c-abs_002dexpr_005b_002c-abs_002dexpr_005d_005d_005d"></a>
|
|
<h3 class="section">7.72 <code>.p2align[wl] [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code></h3>
|
|
|
|
<a name="index-padding-the-location-counter-given-a-power-of-two"></a>
|
|
<a name="index-p2align-directive"></a>
|
|
<p>Pad the location counter (in the current subsection) to a particular
|
|
storage boundary. The first expression (which must be absolute) is the
|
|
number of low-order zero bits the location counter must have after
|
|
advancement. For example ‘<samp>.p2align 3</samp>’ advances the location
|
|
counter until it is a multiple of 8. If the location counter is already a
|
|
multiple of 8, no change is needed. If the expression is omitted then a
|
|
default value of 0 is used, effectively disabling alignment requirements.
|
|
</p>
|
|
<p>The second expression (also absolute) gives the fill value to be stored in the
|
|
padding bytes. It (and the comma) may be omitted. If it is omitted, the
|
|
padding bytes are normally zero. However, on most systems, if the section is
|
|
marked as containing code and the fill value is omitted, the space is filled
|
|
with no-op instructions.
|
|
</p>
|
|
<p>The third expression is also absolute, and is also optional. If it is present,
|
|
it is the maximum number of bytes that should be skipped by this alignment
|
|
directive. If doing the alignment would require skipping more bytes than the
|
|
specified maximum, then the alignment is not done at all. You can omit the
|
|
fill value (the second argument) entirely by simply using two commas after the
|
|
required alignment; this can be useful if you want the alignment to be filled
|
|
with no-op instructions when appropriate.
|
|
</p>
|
|
<a name="index-p2alignw-directive"></a>
|
|
<a name="index-p2alignl-directive"></a>
|
|
<p>The <code>.p2alignw</code> and <code>.p2alignl</code> directives are variants of the
|
|
<code>.p2align</code> directive. The <code>.p2alignw</code> directive treats the fill
|
|
pattern as a two byte word value. The <code>.p2alignl</code> directives treats the
|
|
fill pattern as a four byte longword value. For example, <code>.p2alignw
|
|
2,0x368d</code> will align to a multiple of 4. If it skips two bytes, they will be
|
|
filled in with the value 0x368d (the exact placement of the bytes depends upon
|
|
the endianness of the processor). If it skips 1 or 3 bytes, the fill value is
|
|
undefined.
|
|
</p>
|
|
<hr>
|
|
<a name="PopSection"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Previous" accesskey="n" rel="next">Previous</a>, Previous: <a href="#P2align" accesskey="p" rel="previous">P2align</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002epopsection"></a>
|
|
<h3 class="section">7.73 <code>.popsection</code></h3>
|
|
|
|
<a name="index-popsection-directive"></a>
|
|
<a name="index-Section-Stack"></a>
|
|
<p>This is one of the ELF section stack manipulation directives. The others are
|
|
<code>.section</code> (see <a href="#Section">Section</a>), <code>.subsection</code> (see <a href="#SubSection">SubSection</a>),
|
|
<code>.pushsection</code> (see <a href="#PushSection">PushSection</a>), and <code>.previous</code>
|
|
(see <a href="#Previous">Previous</a>).
|
|
</p>
|
|
<p>This directive replaces the current section (and subsection) with the top
|
|
section (and subsection) on the section stack. This section is popped off the
|
|
stack.
|
|
</p>
|
|
<hr>
|
|
<a name="Previous"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Print" accesskey="n" rel="next">Print</a>, Previous: <a href="#PopSection" accesskey="p" rel="previous">PopSection</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eprevious"></a>
|
|
<h3 class="section">7.74 <code>.previous</code></h3>
|
|
|
|
<a name="index-previous-directive"></a>
|
|
<a name="index-Section-Stack-1"></a>
|
|
<p>This is one of the ELF section stack manipulation directives. The others are
|
|
<code>.section</code> (see <a href="#Section">Section</a>), <code>.subsection</code> (see <a href="#SubSection">SubSection</a>),
|
|
<code>.pushsection</code> (see <a href="#PushSection">PushSection</a>), and <code>.popsection</code>
|
|
(see <a href="#PopSection">PopSection</a>).
|
|
</p>
|
|
<p>This directive swaps the current section (and subsection) with most recently
|
|
referenced section/subsection pair prior to this one. Multiple
|
|
<code>.previous</code> directives in a row will flip between two sections (and their
|
|
subsections). For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.section A
|
|
.subsection 1
|
|
.word 0x1234
|
|
.subsection 2
|
|
.word 0x5678
|
|
.previous
|
|
.word 0x9abc
|
|
</pre></div>
|
|
|
|
<p>Will place 0x1234 and 0x9abc into subsection 1 and 0x5678 into subsection 2 of
|
|
section A. Whilst:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.section A
|
|
.subsection 1
|
|
# Now in section A subsection 1
|
|
.word 0x1234
|
|
.section B
|
|
.subsection 0
|
|
# Now in section B subsection 0
|
|
.word 0x5678
|
|
.subsection 1
|
|
# Now in section B subsection 1
|
|
.word 0x9abc
|
|
.previous
|
|
# Now in section B subsection 0
|
|
.word 0xdef0
|
|
</pre></div>
|
|
|
|
<p>Will place 0x1234 into section A, 0x5678 and 0xdef0 into subsection 0 of
|
|
section B and 0x9abc into subsection 1 of section B.
|
|
</p>
|
|
<p>In terms of the section stack, this directive swaps the current section with
|
|
the top section on the section stack.
|
|
</p>
|
|
<hr>
|
|
<a name="Print"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Protected" accesskey="n" rel="next">Protected</a>, Previous: <a href="#Previous" accesskey="p" rel="previous">Previous</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eprint-string"></a>
|
|
<h3 class="section">7.75 <code>.print <var>string</var></code></h3>
|
|
|
|
<a name="index-print-directive"></a>
|
|
<p><code>as</code> will print <var>string</var> on the standard output during
|
|
assembly. You must put <var>string</var> in double quotes.
|
|
</p>
|
|
<hr>
|
|
<a name="Protected"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Psize" accesskey="n" rel="next">Psize</a>, Previous: <a href="#Print" accesskey="p" rel="previous">Print</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eprotected-names"></a>
|
|
<h3 class="section">7.76 <code>.protected <var>names</var></code></h3>
|
|
|
|
<a name="index-protected-directive"></a>
|
|
<a name="index-visibility-2"></a>
|
|
<p>This is one of the ELF visibility directives. The other two are
|
|
<code>.hidden</code> (see <a href="#Hidden">Hidden</a>) and <code>.internal</code> (see <a href="#Internal">Internal</a>).
|
|
</p>
|
|
<p>This directive overrides the named symbols default visibility (which is set by
|
|
their binding: local, global or weak). The directive sets the visibility to
|
|
<code>protected</code> which means that any references to the symbols from within the
|
|
components that defines them must be resolved to the definition in that
|
|
component, even if a definition in another component would normally preempt
|
|
this.
|
|
</p>
|
|
<hr>
|
|
<a name="Psize"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Purgem" accesskey="n" rel="next">Purgem</a>, Previous: <a href="#Protected" accesskey="p" rel="previous">Protected</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002epsize-lines-_002c-columns"></a>
|
|
<h3 class="section">7.77 <code>.psize <var>lines</var> , <var>columns</var></code></h3>
|
|
|
|
<a name="index-psize-directive"></a>
|
|
<a name="index-listing-control_003a-paper-size"></a>
|
|
<a name="index-paper-size_002c-for-listings"></a>
|
|
<p>Use this directive to declare the number of lines—and, optionally, the
|
|
number of columns—to use for each page, when generating listings.
|
|
</p>
|
|
<p>If you do not use <code>.psize</code>, listings use a default line-count
|
|
of 60. You may omit the comma and <var>columns</var> specification; the
|
|
default width is 200 columns.
|
|
</p>
|
|
<p><code>as</code> generates formfeeds whenever the specified number of
|
|
lines is exceeded (or whenever you explicitly request one, using
|
|
<code>.eject</code>).
|
|
</p>
|
|
<p>If you specify <var>lines</var> as <code>0</code>, no formfeeds are generated save
|
|
those explicitly specified with <code>.eject</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="Purgem"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PushSection" accesskey="n" rel="next">PushSection</a>, Previous: <a href="#Psize" accesskey="p" rel="previous">Psize</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002epurgem-name"></a>
|
|
<h3 class="section">7.78 <code>.purgem <var>name</var></code></h3>
|
|
|
|
<a name="index-purgem-directive"></a>
|
|
<p>Undefine the macro <var>name</var>, so that later uses of the string will not be
|
|
expanded. See <a href="#Macro">Macro</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="PushSection"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Quad" accesskey="n" rel="next">Quad</a>, Previous: <a href="#Purgem" accesskey="p" rel="previous">Purgem</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002epushsection-name-_005b_002c-subsection_005d-_005b_002c-_0022flags_0022_005b_002c-_0040type_005b_002carguments_005d_005d_005d"></a>
|
|
<h3 class="section">7.79 <code>.pushsection <var>name</var> [, <var>subsection</var>] [, "<var>flags</var>"[, @<var>type</var>[,<var>arguments</var>]]]</code></h3>
|
|
|
|
<a name="index-pushsection-directive"></a>
|
|
<a name="index-Section-Stack-2"></a>
|
|
<p>This is one of the ELF section stack manipulation directives. The others are
|
|
<code>.section</code> (see <a href="#Section">Section</a>), <code>.subsection</code> (see <a href="#SubSection">SubSection</a>),
|
|
<code>.popsection</code> (see <a href="#PopSection">PopSection</a>), and <code>.previous</code>
|
|
(see <a href="#Previous">Previous</a>).
|
|
</p>
|
|
<p>This directive pushes the current section (and subsection) onto the
|
|
top of the section stack, and then replaces the current section and
|
|
subsection with <code>name</code> and <code>subsection</code>. The optional
|
|
<code>flags</code>, <code>type</code> and <code>arguments</code> are treated the same
|
|
as in the <code>.section</code> (see <a href="#Section">Section</a>) directive.
|
|
</p>
|
|
<hr>
|
|
<a name="Quad"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Reloc" accesskey="n" rel="next">Reloc</a>, Previous: <a href="#PushSection" accesskey="p" rel="previous">PushSection</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002equad-bignums"></a>
|
|
<h3 class="section">7.80 <code>.quad <var>bignums</var></code></h3>
|
|
|
|
<a name="index-quad-directive"></a>
|
|
<p><code>.quad</code> expects zero or more bignums, separated by commas. For
|
|
each bignum, it emits
|
|
an 8-byte integer. If the bignum won’t fit in 8 bytes, it prints a
|
|
warning message; and just takes the lowest order 8 bytes of the bignum.
|
|
<a name="index-eight_002dbyte-integer"></a>
|
|
<a name="index-integer_002c-8_002dbyte"></a>
|
|
</p>
|
|
<p>The term “quad” comes from contexts in which a “word” is two bytes;
|
|
hence <em>quad</em>-word for 8 bytes.
|
|
</p>
|
|
<hr>
|
|
<a name="Reloc"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Rept" accesskey="n" rel="next">Rept</a>, Previous: <a href="#Quad" accesskey="p" rel="previous">Quad</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002ereloc-offset_002c-reloc_005fname_005b_002c-expression_005d"></a>
|
|
<h3 class="section">7.81 <code>.reloc <var>offset</var>, <var>reloc_name</var>[, <var>expression</var>]</code></h3>
|
|
|
|
<a name="index-reloc-directive"></a>
|
|
<p>Generate a relocation at <var>offset</var> of type <var>reloc_name</var> with value
|
|
<var>expression</var>. If <var>offset</var> is a number, the relocation is generated in
|
|
the current section. If <var>offset</var> is an expression that resolves to a
|
|
symbol plus offset, the relocation is generated in the given symbol’s section.
|
|
<var>expression</var>, if present, must resolve to a symbol plus addend or to an
|
|
absolute value, but note that not all targets support an addend. e.g. ELF REL
|
|
targets such as i386 store an addend in the section contents rather than in the
|
|
relocation. This low level interface does not support addends stored in the
|
|
section.
|
|
</p>
|
|
<hr>
|
|
<a name="Rept"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Sbttl" accesskey="n" rel="next">Sbttl</a>, Previous: <a href="#Reloc" accesskey="p" rel="previous">Reloc</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002erept-count"></a>
|
|
<h3 class="section">7.82 <code>.rept <var>count</var></code></h3>
|
|
|
|
<a name="index-rept-directive"></a>
|
|
<p>Repeat the sequence of lines between the <code>.rept</code> directive and the next
|
|
<code>.endr</code> directive <var>count</var> times.
|
|
</p>
|
|
<p>For example, assembling
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> .rept 3
|
|
.long 0
|
|
.endr
|
|
</pre></div>
|
|
|
|
<p>is equivalent to assembling
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> .long 0
|
|
.long 0
|
|
.long 0
|
|
</pre></div>
|
|
|
|
<p>A count of zero is allowed, but nothing is generated. Negative counts are not
|
|
allowed and if encountered will be treated as if they were zero.
|
|
</p>
|
|
<hr>
|
|
<a name="Sbttl"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Scl" accesskey="n" rel="next">Scl</a>, Previous: <a href="#Rept" accesskey="p" rel="previous">Rept</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002esbttl-_0022subheading_0022"></a>
|
|
<h3 class="section">7.83 <code>.sbttl "<var>subheading</var>"</code></h3>
|
|
|
|
<a name="index-sbttl-directive"></a>
|
|
<a name="index-subtitles-for-listings"></a>
|
|
<a name="index-listing-control_003a-subtitle"></a>
|
|
<p>Use <var>subheading</var> as the title (third line, immediately after the
|
|
title line) when generating assembly listings.
|
|
</p>
|
|
<p>This directive affects subsequent pages, as well as the current page if
|
|
it appears within ten lines of the top of a page.
|
|
</p>
|
|
<hr>
|
|
<a name="Scl"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Section" accesskey="n" rel="next">Section</a>, Previous: <a href="#Sbttl" accesskey="p" rel="previous">Sbttl</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002escl-class"></a>
|
|
<h3 class="section">7.84 <code>.scl <var>class</var></code></h3>
|
|
|
|
<a name="index-scl-directive"></a>
|
|
<a name="index-symbol-storage-class-_0028COFF_0029"></a>
|
|
<a name="index-COFF-symbol-storage-class"></a>
|
|
<p>Set the storage-class value for a symbol. This directive may only be
|
|
used inside a <code>.def</code>/<code>.endef</code> pair. Storage class may flag
|
|
whether a symbol is static or external, or it may record further
|
|
symbolic debugging information.
|
|
</p>
|
|
<hr>
|
|
<a name="Section"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Set" accesskey="n" rel="next">Set</a>, Previous: <a href="#Scl" accesskey="p" rel="previous">Scl</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002esection-name"></a>
|
|
<h3 class="section">7.85 <code>.section <var>name</var></code></h3>
|
|
|
|
<a name="index-named-section"></a>
|
|
<p>Use the <code>.section</code> directive to assemble the following code into a section
|
|
named <var>name</var>.
|
|
</p>
|
|
<p>This directive is only supported for targets that actually support arbitrarily
|
|
named sections; on <code>a.out</code> targets, for example, it is not accepted, even
|
|
with a standard <code>a.out</code> section name.
|
|
</p>
|
|
<a name="COFF-Version"></a>
|
|
<h4 class="subheading">COFF Version</h4>
|
|
|
|
<a name="index-section-directive-_0028COFF-version_0029"></a>
|
|
<p>For COFF targets, the <code>.section</code> directive is used in one of the following
|
|
ways:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.section <var>name</var>[, "<var>flags</var>"]
|
|
.section <var>name</var>[, <var>subsection</var>]
|
|
</pre></div>
|
|
|
|
<p>If the optional argument is quoted, it is taken as flags to use for the
|
|
section. Each flag is a single character. The following flags are recognized:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>b</code></dt>
|
|
<dd><p>bss section (uninitialized data)
|
|
</p></dd>
|
|
<dt><code>n</code></dt>
|
|
<dd><p>section is not loaded
|
|
</p></dd>
|
|
<dt><code>w</code></dt>
|
|
<dd><p>writable section
|
|
</p></dd>
|
|
<dt><code>d</code></dt>
|
|
<dd><p>data section
|
|
</p></dd>
|
|
<dt><code>e</code></dt>
|
|
<dd><p>exclude section from linking
|
|
</p></dd>
|
|
<dt><code>r</code></dt>
|
|
<dd><p>read-only section
|
|
</p></dd>
|
|
<dt><code>x</code></dt>
|
|
<dd><p>executable section
|
|
</p></dd>
|
|
<dt><code>s</code></dt>
|
|
<dd><p>shared section (meaningful for PE targets)
|
|
</p></dd>
|
|
<dt><code>a</code></dt>
|
|
<dd><p>ignored. (For compatibility with the ELF version)
|
|
</p></dd>
|
|
<dt><code>y</code></dt>
|
|
<dd><p>section is not readable (meaningful for PE targets)
|
|
</p></dd>
|
|
<dt><code>0-9</code></dt>
|
|
<dd><p>single-digit power-of-two section alignment (GNU extension)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If no flags are specified, the default flags depend upon the section name. If
|
|
the section name is not recognized, the default will be for the section to be
|
|
loaded and writable. Note the <code>n</code> and <code>w</code> flags remove attributes
|
|
from the section, rather than adding them, so if they are used on their own it
|
|
will be as if no flags had been specified at all.
|
|
</p>
|
|
<p>If the optional argument to the <code>.section</code> directive is not quoted, it is
|
|
taken as a subsection number (see <a href="#Sub_002dSections">Sub-Sections</a>).
|
|
</p>
|
|
<a name="ELF-Version"></a>
|
|
<h4 class="subheading">ELF Version</h4>
|
|
|
|
<a name="index-Section-Stack-3"></a>
|
|
<p>This is one of the ELF section stack manipulation directives. The others are
|
|
<code>.subsection</code> (see <a href="#SubSection">SubSection</a>), <code>.pushsection</code>
|
|
(see <a href="#PushSection">PushSection</a>), <code>.popsection</code> (see <a href="#PopSection">PopSection</a>), and
|
|
<code>.previous</code> (see <a href="#Previous">Previous</a>).
|
|
</p>
|
|
<a name="index-section-directive-_0028ELF-version_0029"></a>
|
|
<p>For ELF targets, the <code>.section</code> directive is used like this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.section <var>name</var> [, "<var>flags</var>"[, @<var>type</var>[,<var>flag_specific_arguments</var>]]]
|
|
</pre></div>
|
|
|
|
<a name="Section-Name-Substitutions"></a><a name="index-_002d_002dsectname_002dsubst"></a>
|
|
<a name="index-section-name-substitution"></a>
|
|
<p>If the ‘<samp>--sectname-subst</samp>’ command-line option is provided, the <var>name</var>
|
|
argument may contain a substitution sequence. Only <code>%S</code> is supported
|
|
at the moment, and substitutes the current section name. For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.macro exception_code
|
|
.section %S.exception
|
|
[exception code here]
|
|
.previous
|
|
.endm
|
|
|
|
.text
|
|
[code]
|
|
exception_code
|
|
[...]
|
|
|
|
.section .init
|
|
[init code]
|
|
exception_code
|
|
[...]
|
|
</pre></div>
|
|
|
|
<p>The two <code>exception_code</code> invocations above would create the
|
|
<code>.text.exception</code> and <code>.init.exception</code> sections respectively.
|
|
This is useful e.g. to discriminate between ancillary sections that are
|
|
tied to setup code to be discarded after use from ancillary sections that
|
|
need to stay resident without having to define multiple <code>exception_code</code>
|
|
macros just for that purpose.
|
|
</p>
|
|
<p>The optional <var>flags</var> argument is a quoted string which may contain any
|
|
combination of the following characters:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>a</code></dt>
|
|
<dd><p>section is allocatable
|
|
</p></dd>
|
|
<dt><code>d</code></dt>
|
|
<dd><p>section is a GNU_MBIND section
|
|
</p></dd>
|
|
<dt><code>e</code></dt>
|
|
<dd><p>section is excluded from executable and shared library.
|
|
</p></dd>
|
|
<dt><code>o</code></dt>
|
|
<dd><p>section references a symbol defined in another section (the linked-to
|
|
section) in the same file.
|
|
</p></dd>
|
|
<dt><code>w</code></dt>
|
|
<dd><p>section is writable
|
|
</p></dd>
|
|
<dt><code>x</code></dt>
|
|
<dd><p>section is executable
|
|
</p></dd>
|
|
<dt><code>M</code></dt>
|
|
<dd><p>section is mergeable
|
|
</p></dd>
|
|
<dt><code>S</code></dt>
|
|
<dd><p>section contains zero terminated strings
|
|
</p></dd>
|
|
<dt><code>G</code></dt>
|
|
<dd><p>section is a member of a section group
|
|
</p></dd>
|
|
<dt><code>T</code></dt>
|
|
<dd><p>section is used for thread-local-storage
|
|
</p></dd>
|
|
<dt><code>?</code></dt>
|
|
<dd><p>section is a member of the previously-current section’s group, if any
|
|
</p></dd>
|
|
<dt><code>R</code></dt>
|
|
<dd><p>retained section (apply SHF_GNU_RETAIN to prevent linker garbage
|
|
collection, GNU ELF extension)
|
|
</p></dd>
|
|
<dt><code><code><number></code></code></dt>
|
|
<dd><p>a numeric value indicating the bits to be set in the ELF section header’s flags
|
|
field. Note - if one or more of the alphabetic characters described above is
|
|
also included in the flags field, their bit values will be ORed into the
|
|
resulting value.
|
|
</p></dd>
|
|
<dt><code><code><target specific></code></code></dt>
|
|
<dd><p>some targets extend this list with their own flag characters
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Note - once a section’s flags have been set they cannot be changed. There are
|
|
a few exceptions to this rule however. Processor and application specific
|
|
flags can be added to an already defined section. The <code>.interp</code>,
|
|
<code>.strtab</code> and <code>.symtab</code> sections can have the allocate flag
|
|
(<code>a</code>) set after they are initially defined, and the <code>.note-GNU-stack</code>
|
|
section may have the executable (<code>x</code>) flag added. Also note that the
|
|
<code>.attach_to_group</code> directive can be used to add a section to a group even
|
|
if the section was not originally declared to be part of that group.
|
|
</p>
|
|
<p>The optional <var>type</var> argument may contain one of the following constants:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>@progbits</code></dt>
|
|
<dd><p>section contains data
|
|
</p></dd>
|
|
<dt><code>@nobits</code></dt>
|
|
<dd><p>section does not contain data (i.e., section only occupies space)
|
|
</p></dd>
|
|
<dt><code>@note</code></dt>
|
|
<dd><p>section contains data which is used by things other than the program
|
|
</p></dd>
|
|
<dt><code>@init_array</code></dt>
|
|
<dd><p>section contains an array of pointers to init functions
|
|
</p></dd>
|
|
<dt><code>@fini_array</code></dt>
|
|
<dd><p>section contains an array of pointers to finish functions
|
|
</p></dd>
|
|
<dt><code>@preinit_array</code></dt>
|
|
<dd><p>section contains an array of pointers to pre-init functions
|
|
</p></dd>
|
|
<dt><code>@<code><number></code></code></dt>
|
|
<dd><p>a numeric value to be set as the ELF section header’s type field.
|
|
</p></dd>
|
|
<dt><code>@<code><target specific></code></code></dt>
|
|
<dd><p>some targets extend this list with their own types
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Many targets only support the first three section types. The type may be
|
|
enclosed in double quotes if necessary.
|
|
</p>
|
|
<p>Note on targets where the <code>@</code> character is the start of a comment (eg
|
|
ARM) then another character is used instead. For example the ARM port uses the
|
|
<code>%</code> character.
|
|
</p>
|
|
<p>Note - some sections, eg <code>.text</code> and <code>.data</code> are considered to be
|
|
special and have fixed types. Any attempt to declare them with a different
|
|
type will generate an error from the assembler.
|
|
</p>
|
|
<p>If <var>flags</var> contains the <code>M</code> symbol then the <var>type</var> argument must
|
|
be specified as well as an extra argument—<var>entsize</var>—like this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.section <var>name</var> , "<var>flags</var>"M, @<var>type</var>, <var>entsize</var>
|
|
</pre></div>
|
|
|
|
<p>Sections with the <code>M</code> flag but not <code>S</code> flag must contain fixed size
|
|
constants, each <var>entsize</var> octets long. Sections with both <code>M</code> and
|
|
<code>S</code> must contain zero terminated strings where each character is
|
|
<var>entsize</var> bytes long. The linker may remove duplicates within sections with
|
|
the same name, same entity size and same flags. <var>entsize</var> must be an
|
|
absolute expression. For sections with both <code>M</code> and <code>S</code>, a string
|
|
which is a suffix of a larger string is considered a duplicate. Thus
|
|
<code>"def"</code> will be merged with <code>"abcdef"</code>; A reference to the first
|
|
<code>"def"</code> will be changed to a reference to <code>"abcdef"+3</code>.
|
|
</p>
|
|
<p>If <var>flags</var> contains the <code>o</code> flag, then the <var>type</var> argument
|
|
must be present along with an additional field like this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.section <var>name</var>,"<var>flags</var>"o,@<var>type</var>,<var>SymbolName</var>|<var>SectionIndex</var>
|
|
</pre></div>
|
|
|
|
<p>The <var>SymbolName</var> field specifies the symbol name which the section
|
|
references. Alternatively a numeric <var>SectionIndex</var> can be provided. This
|
|
is not generally a good idea as section indicies are rarely known at assembly
|
|
time, but the facility is provided for testing purposes. An index of zero is
|
|
allowed. It indicates that the linked-to section has already been discarded.
|
|
</p>
|
|
<p>Note: If both the <var>M</var> and <var>o</var> flags are present, then the fields
|
|
for the Merge flag should come first, like this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.section <var>name</var>,"<var>flags</var>"Mo,@<var>type</var>,<var>entsize</var>,<var>SymbolName</var>
|
|
</pre></div>
|
|
|
|
<p>If <var>flags</var> contains the <code>G</code> symbol then the <var>type</var> argument must
|
|
be present along with an additional field like this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.section <var>name</var> , "<var>flags</var>"G, @<var>type</var>, <var>GroupName</var>[, <var>linkage</var>]
|
|
</pre></div>
|
|
|
|
<p>The <var>GroupName</var> field specifies the name of the section group to which this
|
|
particular section belongs. The optional linkage field can contain:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>comdat</code></dt>
|
|
<dd><p>indicates that only one copy of this section should be retained
|
|
</p></dd>
|
|
<dt><code>.gnu.linkonce</code></dt>
|
|
<dd><p>an alias for comdat
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Note: if both the <var>M</var> and <var>G</var> flags are present then the fields for
|
|
the Merge flag should come first, like this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.section <var>name</var> , "<var>flags</var>"MG, @<var>type</var>, <var>entsize</var>, <var>GroupName</var>[, <var>linkage</var>]
|
|
</pre></div>
|
|
|
|
<p>If both <code>o</code> flag and <code>G</code> flag are present, then the
|
|
<var>SymbolName</var> field for <code>o</code> comes first, like this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.section <var>name</var>,"<var>flags</var>"oG,@<var>type</var>,<var>SymbolName</var>,<var>GroupName</var>[,<var>linkage</var>]
|
|
</pre></div>
|
|
|
|
<p>If <var>flags</var> contains the <code>?</code> symbol then it may not also contain the
|
|
<code>G</code> symbol and the <var>GroupName</var> or <var>linkage</var> fields should not be
|
|
present. Instead, <code>?</code> says to consider the section that’s current before
|
|
this directive. If that section used <code>G</code>, then the new section will use
|
|
<code>G</code> with those same <var>GroupName</var> and <var>linkage</var> fields implicitly.
|
|
If not, then the <code>?</code> symbol has no effect.
|
|
</p>
|
|
<p>The optional <var>unique,<code><number></code></var> argument must come last. It
|
|
assigns <var><code><number></code></var> as a unique section ID to distinguish
|
|
different sections with the same section name like these:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.section <var>name</var>,"<var>flags</var>",@<var>type</var>,<var>unique,<code><number></code></var>
|
|
.section <var>name</var>,"<var>flags</var>"G,@<var>type</var>,<var>GroupName</var>,[<var>linkage</var>],<var>unique,<code><number></code></var>
|
|
.section <var>name</var>,"<var>flags</var>"MG,@<var>type</var>,<var>entsize</var>,<var>GroupName</var>[,<var>linkage</var>],<var>unique,<code><number></code></var>
|
|
</pre></div>
|
|
|
|
<p>The valid values of <var><code><number></code></var> are between 0 and 4294967295.
|
|
</p>
|
|
<p>If no flags are specified, the default flags depend upon the section name. If
|
|
the section name is not recognized, the default will be for the section to have
|
|
none of the above flags: it will not be allocated in memory, nor writable, nor
|
|
executable. The section will contain data.
|
|
</p>
|
|
<p>For ELF targets, the assembler supports another type of <code>.section</code>
|
|
directive for compatibility with the Solaris assembler:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.section "<var>name</var>"[, <var>flags</var>...]
|
|
</pre></div>
|
|
|
|
<p>Note that the section name is quoted. There may be a sequence of comma
|
|
separated flags:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>#alloc</code></dt>
|
|
<dd><p>section is allocatable
|
|
</p></dd>
|
|
<dt><code>#write</code></dt>
|
|
<dd><p>section is writable
|
|
</p></dd>
|
|
<dt><code>#execinstr</code></dt>
|
|
<dd><p>section is executable
|
|
</p></dd>
|
|
<dt><code>#exclude</code></dt>
|
|
<dd><p>section is excluded from executable and shared library.
|
|
</p></dd>
|
|
<dt><code>#tls</code></dt>
|
|
<dd><p>section is used for thread local storage
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>This directive replaces the current section and subsection. See the
|
|
contents of the gas testsuite directory <code>gas/testsuite/gas/elf</code> for
|
|
some examples of how this directive and the other section stack directives
|
|
work.
|
|
</p>
|
|
<hr>
|
|
<a name="Set"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Short" accesskey="n" rel="next">Short</a>, Previous: <a href="#Section" accesskey="p" rel="previous">Section</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eset-symbol_002c-expression"></a>
|
|
<h3 class="section">7.86 <code>.set <var>symbol</var>, <var>expression</var></code></h3>
|
|
|
|
<a name="index-set-directive"></a>
|
|
<a name="index-symbol-value_002c-setting"></a>
|
|
<p>Set the value of <var>symbol</var> to <var>expression</var>. This
|
|
changes <var>symbol</var>’s value and type to conform to
|
|
<var>expression</var>. If <var>symbol</var> was flagged as external, it remains
|
|
flagged (see <a href="#Symbol-Attributes">Symbol Attributes</a>).
|
|
</p>
|
|
<p>You may <code>.set</code> a symbol many times in the same assembly provided that the
|
|
values given to the symbol are constants. Values that are based on expressions
|
|
involving other symbols are allowed, but some targets may restrict this to only
|
|
being done once per assembly. This is because those targets do not set the
|
|
addresses of symbols at assembly time, but rather delay the assignment until a
|
|
final link is performed. This allows the linker a chance to change the code in
|
|
the files, changing the location of, and the relative distance between, various
|
|
different symbols.
|
|
</p>
|
|
<p>If you <code>.set</code> a global symbol, the value stored in the object
|
|
file is the last value stored into it.
|
|
</p>
|
|
<p>On Z80 <code>set</code> is a real instruction, use <code>.set</code> or
|
|
‘<samp><var>symbol</var> defl <var>expression</var></samp>’ instead.
|
|
</p>
|
|
<hr>
|
|
<a name="Short"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Single" accesskey="n" rel="next">Single</a>, Previous: <a href="#Set" accesskey="p" rel="previous">Set</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eshort-expressions"></a>
|
|
<h3 class="section">7.87 <code>.short <var>expressions</var></code></h3>
|
|
|
|
<a name="index-short-directive"></a>
|
|
<p><code>.short</code> is normally the same as ‘<samp>.word</samp>’.
|
|
See <a href="#Word"><code>.word</code></a>.
|
|
</p>
|
|
<p>In some configurations, however, <code>.short</code> and <code>.word</code> generate
|
|
numbers of different lengths. See <a href="#Machine-Dependencies">Machine Dependencies</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Single"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Size" accesskey="n" rel="next">Size</a>, Previous: <a href="#Short" accesskey="p" rel="previous">Short</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002esingle-flonums"></a>
|
|
<h3 class="section">7.88 <code>.single <var>flonums</var></code></h3>
|
|
|
|
<a name="index-single-directive"></a>
|
|
<a name="index-floating-point-numbers-_0028single_0029-1"></a>
|
|
<p>This directive assembles zero or more flonums, separated by commas. It
|
|
has the same effect as <code>.float</code>.
|
|
The exact kind of floating point numbers emitted depends on how
|
|
<code>as</code> is configured. See <a href="#Machine-Dependencies">Machine Dependencies</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Size"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Skip" accesskey="n" rel="next">Skip</a>, Previous: <a href="#Single" accesskey="p" rel="previous">Single</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002esize"></a>
|
|
<h3 class="section">7.89 <code>.size</code></h3>
|
|
|
|
<p>This directive is used to set the size associated with a symbol.
|
|
</p>
|
|
<a name="COFF-Version-1"></a>
|
|
<h4 class="subheading">COFF Version</h4>
|
|
|
|
<a name="index-size-directive-_0028COFF-version_0029"></a>
|
|
<p>For COFF targets, the <code>.size</code> directive is only permitted inside
|
|
<code>.def</code>/<code>.endef</code> pairs. It is used like this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.size <var>expression</var>
|
|
</pre></div>
|
|
|
|
|
|
<a name="ELF-Version-1"></a>
|
|
<h4 class="subheading">ELF Version</h4>
|
|
|
|
<a name="index-size-directive-_0028ELF-version_0029"></a>
|
|
<p>For ELF targets, the <code>.size</code> directive is used like this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.size <var>name</var> , <var>expression</var>
|
|
</pre></div>
|
|
|
|
<p>This directive sets the size associated with a symbol <var>name</var>.
|
|
The size in bytes is computed from <var>expression</var> which can make use of label
|
|
arithmetic. This directive is typically used to set the size of function
|
|
symbols.
|
|
</p>
|
|
<hr>
|
|
<a name="Skip"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Sleb128" accesskey="n" rel="next">Sleb128</a>, Previous: <a href="#Size" accesskey="p" rel="previous">Size</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eskip-size-_005b_002cfill_005d"></a>
|
|
<h3 class="section">7.90 <code>.skip <var>size</var> [,<var>fill</var>]</code></h3>
|
|
|
|
<a name="index-skip-directive"></a>
|
|
<a name="index-filling-memory"></a>
|
|
<p>This directive emits <var>size</var> bytes, each of value <var>fill</var>. Both
|
|
<var>size</var> and <var>fill</var> are absolute expressions. If the comma and
|
|
<var>fill</var> are omitted, <var>fill</var> is assumed to be zero. This is the same as
|
|
‘<samp>.space</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="Sleb128"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Space" accesskey="n" rel="next">Space</a>, Previous: <a href="#Skip" accesskey="p" rel="previous">Skip</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002esleb128-expressions"></a>
|
|
<h3 class="section">7.91 <code>.sleb128 <var>expressions</var></code></h3>
|
|
|
|
<a name="index-sleb128-directive"></a>
|
|
<p><var>sleb128</var> stands for “signed little endian base 128.” This is a
|
|
compact, variable length representation of numbers used by the DWARF
|
|
symbolic debugging format. See <a href="#Uleb128"><code>.uleb128</code></a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Space"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Stab" accesskey="n" rel="next">Stab</a>, Previous: <a href="#Sleb128" accesskey="p" rel="previous">Sleb128</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002espace-size-_005b_002cfill_005d"></a>
|
|
<h3 class="section">7.92 <code>.space <var>size</var> [,<var>fill</var>]</code></h3>
|
|
|
|
<a name="index-space-directive"></a>
|
|
<a name="index-filling-memory-1"></a>
|
|
<p>This directive emits <var>size</var> bytes, each of value <var>fill</var>. Both
|
|
<var>size</var> and <var>fill</var> are absolute expressions. If the comma
|
|
and <var>fill</var> are omitted, <var>fill</var> is assumed to be zero. This is the same
|
|
as ‘<samp>.skip</samp>’.
|
|
</p>
|
|
<blockquote>
|
|
<p><em>Warning:</em> <code>.space</code> has a completely different meaning for HPPA
|
|
targets; use <code>.block</code> as a substitute. See <cite>HP9000 Series 800
|
|
Assembly Language Reference Manual</cite> (HP 92432-90001) for the meaning of the
|
|
<code>.space</code> directive. See <a href="#HPPA-Directives">HPPA Assembler Directives</a>,
|
|
for a summary.
|
|
</p></blockquote>
|
|
|
|
<hr>
|
|
<a name="Stab"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#String" accesskey="n" rel="next">String</a>, Previous: <a href="#Space" accesskey="p" rel="previous">Space</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002estabd_002c-_002estabn_002c-_002estabs"></a>
|
|
<h3 class="section">7.93 <code>.stabd, .stabn, .stabs</code></h3>
|
|
|
|
<a name="index-symbolic-debuggers_002c-information-for"></a>
|
|
<a name="index-stabx-directives"></a>
|
|
<p>There are three directives that begin ‘<samp>.stab</samp>’.
|
|
All emit symbols (see <a href="#Symbols">Symbols</a>), for use by symbolic debuggers.
|
|
The symbols are not entered in the <code>as</code> hash table: they
|
|
cannot be referenced elsewhere in the source file.
|
|
Up to five fields are required:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><var>string</var></dt>
|
|
<dd><p>This is the symbol’s name. It may contain any character except
|
|
‘<samp>\000</samp>’, so is more general than ordinary symbol names. Some
|
|
debuggers used to code arbitrarily complex structures into symbol names
|
|
using this field.
|
|
</p>
|
|
</dd>
|
|
<dt><var>type</var></dt>
|
|
<dd><p>An absolute expression. The symbol’s type is set to the low 8 bits of
|
|
this expression. Any bit pattern is permitted, but <code>ld</code>
|
|
and debuggers choke on silly bit patterns.
|
|
</p>
|
|
</dd>
|
|
<dt><var>other</var></dt>
|
|
<dd><p>An absolute expression. The symbol’s “other” attribute is set to the
|
|
low 8 bits of this expression.
|
|
</p>
|
|
</dd>
|
|
<dt><var>desc</var></dt>
|
|
<dd><p>An absolute expression. The symbol’s descriptor is set to the low 16
|
|
bits of this expression.
|
|
</p>
|
|
</dd>
|
|
<dt><var>value</var></dt>
|
|
<dd><p>An absolute expression which becomes the symbol’s value.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If a warning is detected while reading a <code>.stabd</code>, <code>.stabn</code>,
|
|
or <code>.stabs</code> statement, the symbol has probably already been created;
|
|
you get a half-formed symbol in your object file. This is
|
|
compatible with earlier assemblers!
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-stabd-directive"></a>
|
|
</dd>
|
|
<dt><code>.stabd <var>type</var> , <var>other</var> , <var>desc</var></code></dt>
|
|
<dd>
|
|
<p>The “name” of the symbol generated is not even an empty string.
|
|
It is a null pointer, for compatibility. Older assemblers used a
|
|
null pointer so they didn’t waste space in object files with empty
|
|
strings.
|
|
</p>
|
|
<p>The symbol’s value is set to the location counter,
|
|
relocatably. When your program is linked, the value of this symbol
|
|
is the address of the location counter when the <code>.stabd</code> was
|
|
assembled.
|
|
</p>
|
|
<a name="index-stabn-directive"></a>
|
|
</dd>
|
|
<dt><code>.stabn <var>type</var> , <var>other</var> , <var>desc</var> , <var>value</var></code></dt>
|
|
<dd><p>The name of the symbol is set to the empty string <code>""</code>.
|
|
</p>
|
|
<a name="index-stabs-directive"></a>
|
|
</dd>
|
|
<dt><code>.stabs <var>string</var> , <var>type</var> , <var>other</var> , <var>desc</var> , <var>value</var></code></dt>
|
|
<dd><p>All five fields are specified.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="String"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Struct" accesskey="n" rel="next">Struct</a>, Previous: <a href="#Stab" accesskey="p" rel="previous">Stab</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002estring-_0022str_0022_002c-_002estring8-_0022str_0022_002c-_002estring16"></a>
|
|
<h3 class="section">7.94 <code>.string</code> "<var>str</var>", <code>.string8</code> "<var>str</var>", <code>.string16</code></h3>
|
|
<p>"<var>str</var>", <code>.string32</code> "<var>str</var>", <code>.string64</code> "<var>str</var>"
|
|
</p>
|
|
<a name="index-string_002c-copying-to-object-file"></a>
|
|
<a name="index-string8_002c-copying-to-object-file"></a>
|
|
<a name="index-string16_002c-copying-to-object-file"></a>
|
|
<a name="index-string32_002c-copying-to-object-file"></a>
|
|
<a name="index-string64_002c-copying-to-object-file"></a>
|
|
<a name="index-string-directive"></a>
|
|
<a name="index-string8-directive"></a>
|
|
<a name="index-string16-directive"></a>
|
|
<a name="index-string32-directive"></a>
|
|
<a name="index-string64-directive"></a>
|
|
|
|
<p>Copy the characters in <var>str</var> to the object file. You may specify more than
|
|
one string to copy, separated by commas. Unless otherwise specified for a
|
|
particular machine, the assembler marks the end of each string with a 0 byte.
|
|
You can use any of the escape sequences described in <a href="#Strings">Strings</a>.
|
|
</p>
|
|
<p>The variants <code>string16</code>, <code>string32</code> and <code>string64</code> differ from
|
|
the <code>string</code> pseudo opcode in that each 8-bit character from <var>str</var> is
|
|
copied and expanded to 16, 32 or 64 bits respectively. The expanded characters
|
|
are stored in target endianness byte order.
|
|
</p>
|
|
<p>Example:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> .string32 "BYE"
|
|
expands to:
|
|
.string "B\0\0\0Y\0\0\0E\0\0\0" /* On little endian targets. */
|
|
.string "\0\0\0B\0\0\0Y\0\0\0E" /* On big endian targets. */
|
|
</pre></div>
|
|
|
|
|
|
<hr>
|
|
<a name="Struct"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#SubSection" accesskey="n" rel="next">SubSection</a>, Previous: <a href="#String" accesskey="p" rel="previous">String</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002estruct-expression"></a>
|
|
<h3 class="section">7.95 <code>.struct <var>expression</var></code></h3>
|
|
|
|
<a name="index-struct-directive"></a>
|
|
<p>Switch to the absolute section, and set the section offset to <var>expression</var>,
|
|
which must be an absolute expression. You might use this as follows:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> .struct 0
|
|
field1:
|
|
.struct field1 + 4
|
|
field2:
|
|
.struct field2 + 4
|
|
field3:
|
|
</pre></div>
|
|
<p>This would define the symbol <code>field1</code> to have the value 0, the symbol
|
|
<code>field2</code> to have the value 4, and the symbol <code>field3</code> to have the
|
|
value 8. Assembly would be left in the absolute section, and you would need to
|
|
use a <code>.section</code> directive of some sort to change to some other section
|
|
before further assembly.
|
|
</p>
|
|
<hr>
|
|
<a name="SubSection"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Symver" accesskey="n" rel="next">Symver</a>, Previous: <a href="#Struct" accesskey="p" rel="previous">Struct</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002esubsection-name"></a>
|
|
<h3 class="section">7.96 <code>.subsection <var>name</var></code></h3>
|
|
|
|
<a name="index-subsection-directive"></a>
|
|
<a name="index-Section-Stack-4"></a>
|
|
<p>This is one of the ELF section stack manipulation directives. The others are
|
|
<code>.section</code> (see <a href="#Section">Section</a>), <code>.pushsection</code> (see <a href="#PushSection">PushSection</a>),
|
|
<code>.popsection</code> (see <a href="#PopSection">PopSection</a>), and <code>.previous</code>
|
|
(see <a href="#Previous">Previous</a>).
|
|
</p>
|
|
<p>This directive replaces the current subsection with <code>name</code>. The current
|
|
section is not changed. The replaced subsection is put onto the section stack
|
|
in place of the then current top of stack subsection.
|
|
</p>
|
|
<hr>
|
|
<a name="Symver"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Tag" accesskey="n" rel="next">Tag</a>, Previous: <a href="#SubSection" accesskey="p" rel="previous">SubSection</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002esymver"></a>
|
|
<h3 class="section">7.97 <code>.symver</code></h3>
|
|
<a name="index-symver-directive"></a>
|
|
<a name="index-symbol-versioning"></a>
|
|
<a name="index-versions-of-symbols"></a>
|
|
<p>Use the <code>.symver</code> directive to bind symbols to specific version nodes
|
|
within a source file. This is only supported on ELF platforms, and is
|
|
typically used when assembling files to be linked into a shared library.
|
|
There are cases where it may make sense to use this in objects to be bound
|
|
into an application itself so as to override a versioned symbol from a
|
|
shared library.
|
|
</p>
|
|
<p>For ELF targets, the <code>.symver</code> directive can be used like this:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">.symver <var>name</var>, <var>name2@nodename</var>[ ,<var>visibility</var>]
|
|
</pre></div>
|
|
<p>If the original symbol <var>name</var> is defined within the file
|
|
being assembled, the <code>.symver</code> directive effectively creates a symbol
|
|
alias with the name <var>name2@nodename</var>, and in fact the main reason that we
|
|
just don’t try and create a regular alias is that the <var>@</var> character isn’t
|
|
permitted in symbol names. The <var>name2</var> part of the name is the actual name
|
|
of the symbol by which it will be externally referenced. The name <var>name</var>
|
|
itself is merely a name of convenience that is used so that it is possible to
|
|
have definitions for multiple versions of a function within a single source
|
|
file, and so that the compiler can unambiguously know which version of a
|
|
function is being mentioned. The <var>nodename</var> portion of the alias should be
|
|
the name of a node specified in the version script supplied to the linker when
|
|
building a shared library. If you are attempting to override a versioned
|
|
symbol from a shared library, then <var>nodename</var> should correspond to the
|
|
nodename of the symbol you are trying to override. The optional argument
|
|
<var>visibility</var> updates the visibility of the original symbol. The valid
|
|
visibilities are <code>local</code>, <code>hidden</code>, and <code>remove</code>. The
|
|
<code>local</code> visibility makes the original symbol a local symbol
|
|
(see <a href="#Local">Local</a>). The <code>hidden</code> visibility sets the visibility of the
|
|
original symbol to <code>hidden</code> (see <a href="#Hidden">Hidden</a>). The <code>remove</code>
|
|
visibility removes the original symbol from the symbol table. If visibility
|
|
isn’t specified, the original symbol is unchanged.
|
|
</p>
|
|
<p>If the symbol <var>name</var> is not defined within the file being assembled, all
|
|
references to <var>name</var> will be changed to <var>name2@nodename</var>. If no
|
|
reference to <var>name</var> is made, <var>name2@nodename</var> will be removed from the
|
|
symbol table.
|
|
</p>
|
|
<p>Another usage of the <code>.symver</code> directive is:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">.symver <var>name</var>, <var>name2@@nodename</var>
|
|
</pre></div>
|
|
<p>In this case, the symbol <var>name</var> must exist and be defined within
|
|
the file being assembled. It is similar to <var>name2@nodename</var>. The
|
|
difference is <var>name2@@nodename</var> will also be used to resolve
|
|
references to <var>name2</var> by the linker.
|
|
</p>
|
|
<p>The third usage of the <code>.symver</code> directive is:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">.symver <var>name</var>, <var>name2@@@nodename</var>
|
|
</pre></div>
|
|
<p>When <var>name</var> is not defined within the
|
|
file being assembled, it is treated as <var>name2@nodename</var>. When
|
|
<var>name</var> is defined within the file being assembled, the symbol
|
|
name, <var>name</var>, will be changed to <var>name2@@nodename</var>.
|
|
</p>
|
|
<hr>
|
|
<a name="Tag"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Text" accesskey="n" rel="next">Text</a>, Previous: <a href="#Symver" accesskey="p" rel="previous">Symver</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002etag-structname"></a>
|
|
<h3 class="section">7.98 <code>.tag <var>structname</var></code></h3>
|
|
|
|
<a name="index-COFF-structure-debugging"></a>
|
|
<a name="index-structure-debugging_002c-COFF"></a>
|
|
<a name="index-tag-directive"></a>
|
|
<p>This directive is generated by compilers to include auxiliary debugging
|
|
information in the symbol table. It is only permitted inside
|
|
<code>.def</code>/<code>.endef</code> pairs. Tags are used to link structure
|
|
definitions in the symbol table with instances of those structures.
|
|
</p>
|
|
<hr>
|
|
<a name="Text"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Title" accesskey="n" rel="next">Title</a>, Previous: <a href="#Tag" accesskey="p" rel="previous">Tag</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002etext-subsection"></a>
|
|
<h3 class="section">7.99 <code>.text <var>subsection</var></code></h3>
|
|
|
|
<a name="index-text-directive"></a>
|
|
<p>Tells <code>as</code> to assemble the following statements onto the end of
|
|
the text subsection numbered <var>subsection</var>, which is an absolute
|
|
expression. If <var>subsection</var> is omitted, subsection number zero
|
|
is used.
|
|
</p>
|
|
<hr>
|
|
<a name="Title"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Tls_005fcommon" accesskey="n" rel="next">Tls_common</a>, Previous: <a href="#Text" accesskey="p" rel="previous">Text</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002etitle-_0022heading_0022"></a>
|
|
<h3 class="section">7.100 <code>.title "<var>heading</var>"</code></h3>
|
|
|
|
<a name="index-title-directive"></a>
|
|
<a name="index-listing-control_003a-title-line"></a>
|
|
<p>Use <var>heading</var> as the title (second line, immediately after the
|
|
source file name and pagenumber) when generating assembly listings.
|
|
</p>
|
|
<p>This directive affects subsequent pages, as well as the current page if
|
|
it appears within ten lines of the top of a page.
|
|
</p>
|
|
<hr>
|
|
<a name="Tls_005fcommon"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Type" accesskey="n" rel="next">Type</a>, Previous: <a href="#Title" accesskey="p" rel="previous">Title</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002etls_005fcommon-symbol_002c-length_005b_002c-alignment_005d"></a>
|
|
<h3 class="section">7.101 <code>.tls_common <var>symbol</var>, <var>length</var>[, <var>alignment</var>]</code></h3>
|
|
|
|
<a name="index-tls_005fcommon-directive"></a>
|
|
<p>This directive behaves in the same way as the <code>.comm</code> directive
|
|
(see <a href="#Comm">Comm</a>) except that <var>symbol</var> has type of STT_TLS instead of
|
|
STT_OBJECT.
|
|
</p>
|
|
<hr>
|
|
<a name="Type"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Uleb128" accesskey="n" rel="next">Uleb128</a>, Previous: <a href="#Tls_005fcommon" accesskey="p" rel="previous">Tls_common</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002etype"></a>
|
|
<h3 class="section">7.102 <code>.type</code></h3>
|
|
|
|
<p>This directive is used to set the type of a symbol.
|
|
</p>
|
|
<a name="COFF-Version-2"></a>
|
|
<h4 class="subheading">COFF Version</h4>
|
|
|
|
<a name="index-COFF-symbol-type"></a>
|
|
<a name="index-symbol-type_002c-COFF"></a>
|
|
<a name="index-type-directive-_0028COFF-version_0029"></a>
|
|
<p>For COFF targets, this directive is permitted only within
|
|
<code>.def</code>/<code>.endef</code> pairs. It is used like this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.type <var>int</var>
|
|
</pre></div>
|
|
|
|
<p>This records the integer <var>int</var> as the type attribute of a symbol table
|
|
entry.
|
|
</p>
|
|
|
|
<a name="ELF-Version-2"></a>
|
|
<h4 class="subheading">ELF Version</h4>
|
|
|
|
<a name="index-ELF-symbol-type"></a>
|
|
<a name="index-symbol-type_002c-ELF"></a>
|
|
<a name="index-type-directive-_0028ELF-version_0029"></a>
|
|
<p>For ELF targets, the <code>.type</code> directive is used like this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.type <var>name</var> , <var>type description</var>
|
|
</pre></div>
|
|
|
|
<p>This sets the type of symbol <var>name</var> to be either a
|
|
function symbol or an object symbol. There are five different syntaxes
|
|
supported for the <var>type description</var> field, in order to provide
|
|
compatibility with various other assemblers.
|
|
</p>
|
|
<p>Because some of the characters used in these syntaxes (such as ‘<samp>@</samp>’ and
|
|
‘<samp>#</samp>’) are comment characters for some architectures, some of the syntaxes
|
|
below do not work on all architectures. The first variant will be accepted by
|
|
the GNU assembler on all architectures so that variant should be used for
|
|
maximum portability, if you do not need to assemble your code with other
|
|
assemblers.
|
|
</p>
|
|
<p>The syntaxes supported are:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .type <name> STT_<TYPE_IN_UPPER_CASE>
|
|
.type <name>,#<type>
|
|
.type <name>,@<type>
|
|
.type <name>,%<type>
|
|
.type <name>,"<type>"
|
|
</pre></div>
|
|
|
|
<p>The types supported are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>STT_FUNC</code></dt>
|
|
<dt><code>function</code></dt>
|
|
<dd><p>Mark the symbol as being a function name.
|
|
</p>
|
|
</dd>
|
|
<dt><code>STT_GNU_IFUNC</code></dt>
|
|
<dt><code>gnu_indirect_function</code></dt>
|
|
<dd><p>Mark the symbol as an indirect function when evaluated during reloc
|
|
processing. (This is only supported on assemblers targeting GNU systems).
|
|
</p>
|
|
</dd>
|
|
<dt><code>STT_OBJECT</code></dt>
|
|
<dt><code>object</code></dt>
|
|
<dd><p>Mark the symbol as being a data object.
|
|
</p>
|
|
</dd>
|
|
<dt><code>STT_TLS</code></dt>
|
|
<dt><code>tls_object</code></dt>
|
|
<dd><p>Mark the symbol as being a thread-local data object.
|
|
</p>
|
|
</dd>
|
|
<dt><code>STT_COMMON</code></dt>
|
|
<dt><code>common</code></dt>
|
|
<dd><p>Mark the symbol as being a common data object.
|
|
</p>
|
|
</dd>
|
|
<dt><code>STT_NOTYPE</code></dt>
|
|
<dt><code>notype</code></dt>
|
|
<dd><p>Does not mark the symbol in any way. It is supported just for completeness.
|
|
</p>
|
|
</dd>
|
|
<dt><code>gnu_unique_object</code></dt>
|
|
<dd><p>Marks the symbol as being a globally unique data object. The dynamic linker
|
|
will make sure that in the entire process there is just one symbol with this
|
|
name and type in use. (This is only supported on assemblers targeting GNU
|
|
systems).
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Changing between incompatible types other than from/to STT_NOTYPE will
|
|
result in a diagnostic. An intermediate change to STT_NOTYPE will silence
|
|
this.
|
|
</p>
|
|
<p>Note: Some targets support extra types in addition to those listed above.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="Uleb128"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Val" accesskey="n" rel="next">Val</a>, Previous: <a href="#Type" accesskey="p" rel="previous">Type</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002euleb128-expressions"></a>
|
|
<h3 class="section">7.103 <code>.uleb128 <var>expressions</var></code></h3>
|
|
|
|
<a name="index-uleb128-directive"></a>
|
|
<p><var>uleb128</var> stands for “unsigned little endian base 128.” This is a
|
|
compact, variable length representation of numbers used by the DWARF
|
|
symbolic debugging format. See <a href="#Sleb128"><code>.sleb128</code></a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Val"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Version" accesskey="n" rel="next">Version</a>, Previous: <a href="#Uleb128" accesskey="p" rel="previous">Uleb128</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eval-addr"></a>
|
|
<h3 class="section">7.104 <code>.val <var>addr</var></code></h3>
|
|
|
|
<a name="index-val-directive"></a>
|
|
<a name="index-COFF-value-attribute"></a>
|
|
<a name="index-value-attribute_002c-COFF"></a>
|
|
<p>This directive, permitted only within <code>.def</code>/<code>.endef</code> pairs,
|
|
records the address <var>addr</var> as the value attribute of a symbol table
|
|
entry.
|
|
</p>
|
|
<hr>
|
|
<a name="Version"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#VTableEntry" accesskey="n" rel="next">VTableEntry</a>, Previous: <a href="#Val" accesskey="p" rel="previous">Val</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eversion-_0022string_0022"></a>
|
|
<h3 class="section">7.105 <code>.version "<var>string</var>"</code></h3>
|
|
|
|
<a name="index-version-directive"></a>
|
|
<p>This directive creates a <code>.note</code> section and places into it an ELF
|
|
formatted note of type NT_VERSION. The note’s name is set to <code>string</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="VTableEntry"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#VTableInherit" accesskey="n" rel="next">VTableInherit</a>, Previous: <a href="#Version" accesskey="p" rel="previous">Version</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002evtable_005fentry-table_002c-offset"></a>
|
|
<h3 class="section">7.106 <code>.vtable_entry <var>table</var>, <var>offset</var></code></h3>
|
|
|
|
<a name="index-vtable_005fentry-directive"></a>
|
|
<p>This directive finds or creates a symbol <code>table</code> and creates a
|
|
<code>VTABLE_ENTRY</code> relocation for it with an addend of <code>offset</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="VTableInherit"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Warning" accesskey="n" rel="next">Warning</a>, Previous: <a href="#VTableEntry" accesskey="p" rel="previous">VTableEntry</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002evtable_005finherit-child_002c-parent"></a>
|
|
<h3 class="section">7.107 <code>.vtable_inherit <var>child</var>, <var>parent</var></code></h3>
|
|
|
|
<a name="index-vtable_005finherit-directive"></a>
|
|
<p>This directive finds the symbol <code>child</code> and finds or creates the symbol
|
|
<code>parent</code> and then creates a <code>VTABLE_INHERIT</code> relocation for the
|
|
parent whose addend is the value of the child symbol. As a special case the
|
|
parent name of <code>0</code> is treated as referring to the <code>*ABS*</code> section.
|
|
</p>
|
|
<hr>
|
|
<a name="Warning"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Weak" accesskey="n" rel="next">Weak</a>, Previous: <a href="#VTableInherit" accesskey="p" rel="previous">VTableInherit</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002ewarning-_0022string_0022"></a>
|
|
<h3 class="section">7.108 <code>.warning "<var>string</var>"</code></h3>
|
|
<a name="index-warning-directive"></a>
|
|
<p>Similar to the directive <code>.error</code>
|
|
(see <a href="#Error"><code>.error "<var>string</var>"</code></a>), but just emits a warning.
|
|
</p>
|
|
<hr>
|
|
<a name="Weak"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Weakref" accesskey="n" rel="next">Weakref</a>, Previous: <a href="#Warning" accesskey="p" rel="previous">Warning</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eweak-names"></a>
|
|
<h3 class="section">7.109 <code>.weak <var>names</var></code></h3>
|
|
|
|
<a name="index-weak-directive"></a>
|
|
<p>This directive sets the weak attribute on the comma separated list of symbol
|
|
<code>names</code>. If the symbols do not already exist, they will be created.
|
|
</p>
|
|
<p>On COFF targets other than PE, weak symbols are a GNU extension. This
|
|
directive sets the weak attribute on the comma separated list of symbol
|
|
<code>names</code>. If the symbols do not already exist, they will be created.
|
|
</p>
|
|
<p>On the PE target, weak symbols are supported natively as weak aliases.
|
|
When a weak symbol is created that is not an alias, GAS creates an
|
|
alternate symbol to hold the default value.
|
|
</p>
|
|
<hr>
|
|
<a name="Weakref"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Word" accesskey="n" rel="next">Word</a>, Previous: <a href="#Weak" accesskey="p" rel="previous">Weak</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eweakref-alias_002c-target"></a>
|
|
<h3 class="section">7.110 <code>.weakref <var>alias</var>, <var>target</var></code></h3>
|
|
|
|
<a name="index-weakref-directive"></a>
|
|
<p>This directive creates an alias to the target symbol that enables the symbol to
|
|
be referenced with weak-symbol semantics, but without actually making it weak.
|
|
If direct references or definitions of the symbol are present, then the symbol
|
|
will not be weak, but if all references to it are through weak references, the
|
|
symbol will be marked as weak in the symbol table.
|
|
</p>
|
|
<p>The effect is equivalent to moving all references to the alias to a separate
|
|
assembly source file, renaming the alias to the symbol in it, declaring the
|
|
symbol as weak there, and running a reloadable link to merge the object files
|
|
resulting from the assembly of the new source file and the old source file that
|
|
had the references to the alias removed.
|
|
</p>
|
|
<p>The alias itself never makes to the symbol table, and is entirely handled
|
|
within the assembler.
|
|
</p>
|
|
<hr>
|
|
<a name="Word"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Zero" accesskey="n" rel="next">Zero</a>, Previous: <a href="#Weakref" accesskey="p" rel="previous">Weakref</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002eword-expressions"></a>
|
|
<h3 class="section">7.111 <code>.word <var>expressions</var></code></h3>
|
|
|
|
<a name="index-word-directive"></a>
|
|
<p>This directive expects zero or more <var>expressions</var>, of any section,
|
|
separated by commas.
|
|
</p>
|
|
<p>The size of the number emitted, and its byte order,
|
|
depend on what target computer the assembly is for.
|
|
</p>
|
|
<a name="index-difference-tables-altered"></a>
|
|
<a name="index-altered-difference-tables"></a>
|
|
<blockquote>
|
|
<p><em>Warning: Special Treatment to support Compilers</em>
|
|
</p></blockquote>
|
|
|
|
<p>Machines with a 32-bit address space, but that do less than 32-bit
|
|
addressing, require the following special treatment. If the machine of
|
|
interest to you does 32-bit addressing (or doesn’t require it;
|
|
see <a href="#Machine-Dependencies">Machine Dependencies</a>), you can ignore this issue.
|
|
</p>
|
|
<p>In order to assemble compiler output into something that works,
|
|
<code>as</code> occasionally does strange things to ‘<samp>.word</samp>’ directives.
|
|
Directives of the form ‘<samp>.word sym1-sym2</samp>’ are often emitted by
|
|
compilers as part of jump tables. Therefore, when <code>as</code> assembles a
|
|
directive of the form ‘<samp>.word sym1-sym2</samp>’, and the difference between
|
|
<code>sym1</code> and <code>sym2</code> does not fit in 16 bits, <code>as</code>
|
|
creates a <em>secondary jump table</em>, immediately before the next label.
|
|
This secondary jump table is preceded by a short-jump to the
|
|
first byte after the secondary table. This short-jump prevents the flow
|
|
of control from accidentally falling into the new table. Inside the
|
|
table is a long-jump to <code>sym2</code>. The original ‘<samp>.word</samp>’
|
|
contains <code>sym1</code> minus the address of the long-jump to
|
|
<code>sym2</code>.
|
|
</p>
|
|
<p>If there were several occurrences of ‘<samp>.word sym1-sym2</samp>’ before the
|
|
secondary jump table, all of them are adjusted. If there was a
|
|
‘<samp>.word sym3-sym4</samp>’, that also did not fit in sixteen bits, a
|
|
long-jump to <code>sym4</code> is included in the secondary jump table,
|
|
and the <code>.word</code> directives are adjusted to contain <code>sym3</code>
|
|
minus the address of the long-jump to <code>sym4</code>; and so on, for as many
|
|
entries in the original jump table as necessary.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="Zero"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#g_t2byte" accesskey="n" rel="next">2byte</a>, Previous: <a href="#Word" accesskey="p" rel="previous">Word</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002ezero-size"></a>
|
|
<h3 class="section">7.112 <code>.zero <var>size</var></code></h3>
|
|
|
|
<a name="index-zero-directive"></a>
|
|
<a name="index-filling-memory-with-zero-bytes"></a>
|
|
<p>This directive emits <var>size</var> 0-valued bytes. <var>size</var> must be an absolute
|
|
expression. This directive is actually an alias for the ‘<samp>.skip</samp>’ directive
|
|
so it can take an optional second argument of the value to store in the bytes
|
|
instead of zero. Using ‘<samp>.zero</samp>’ in this way would be confusing however.
|
|
</p>
|
|
<hr>
|
|
<a name="g_t2byte"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#g_t4byte" accesskey="n" rel="next">4byte</a>, Previous: <a href="#Zero" accesskey="p" rel="previous">Zero</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002e2byte-expression-_005b_002c-expression_005d_002a"></a>
|
|
<h3 class="section">7.113 <code>.2byte <var>expression</var> [, <var>expression</var>]*</code></h3>
|
|
<a name="index-2byte-directive"></a>
|
|
<a name="index-two_002dbyte-integer"></a>
|
|
<a name="index-integer_002c-2_002dbyte"></a>
|
|
|
|
<p>This directive expects zero or more expressions, separated by commas. If there
|
|
are no expressions then the directive does nothing. Otherwise each expression
|
|
is evaluated in turn and placed in the next two bytes of the current output
|
|
section, using the endian model of the target. If an expression will not fit
|
|
in two bytes, a warning message is displayed and the least significant two
|
|
bytes of the expression’s value are used. If an expression cannot be evaluated
|
|
at assembly time then relocations will be generated in order to compute the
|
|
value at link time.
|
|
</p>
|
|
<p>This directive does not apply any alignment before or after inserting the
|
|
values. As a result of this, if relocations are generated, they may be
|
|
different from those used for inserting values with a guaranteed alignment.
|
|
</p>
|
|
<hr>
|
|
<a name="g_t4byte"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#g_t8byte" accesskey="n" rel="next">8byte</a>, Previous: <a href="#g_t2byte" accesskey="p" rel="previous">2byte</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002e4byte-expression-_005b_002c-expression_005d_002a"></a>
|
|
<h3 class="section">7.114 <code>.4byte <var>expression</var> [, <var>expression</var>]*</code></h3>
|
|
<a name="index-4byte-directive"></a>
|
|
<a name="index-four_002dbyte-integer"></a>
|
|
<a name="index-integer_002c-4_002dbyte"></a>
|
|
|
|
<p>Like the <samp>.2byte</samp> directive, except that it inserts unaligned, four byte
|
|
long values into the output.
|
|
</p>
|
|
<hr>
|
|
<a name="g_t8byte"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Deprecated" accesskey="n" rel="next">Deprecated</a>, Previous: <a href="#g_t4byte" accesskey="p" rel="previous">4byte</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_002e8byte-expression-_005b_002c-expression_005d_002a"></a>
|
|
<h3 class="section">7.115 <code>.8byte <var>expression</var> [, <var>expression</var>]*</code></h3>
|
|
<a name="index-8byte-directive"></a>
|
|
<a name="index-eight_002dbyte-integer-1"></a>
|
|
<a name="index-integer_002c-8_002dbyte-1"></a>
|
|
|
|
<p>Like the <samp>.2byte</samp> directive, except that it inserts unaligned, eight
|
|
byte long bignum values into the output.
|
|
</p>
|
|
<hr>
|
|
<a name="Deprecated"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#g_t8byte" accesskey="p" rel="previous">8byte</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Deprecated-Directives"></a>
|
|
<h3 class="section">7.116 Deprecated Directives</h3>
|
|
|
|
<a name="index-deprecated-directives"></a>
|
|
<a name="index-obsolescent-directives"></a>
|
|
<p>One day these directives won’t work.
|
|
They are included for compatibility with older assemblers.
|
|
</p><dl compact="compact">
|
|
<dt><tt>.abort</tt></dt>
|
|
<dt><tt>.line</tt></dt>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Object-Attributes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Machine-Dependencies" accesskey="n" rel="next">Machine Dependencies</a>, Previous: <a href="#Pseudo-Ops" accesskey="p" rel="previous">Pseudo Ops</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Object-Attributes-1"></a>
|
|
<h2 class="chapter">8 Object Attributes</h2>
|
|
<a name="index-object-attributes"></a>
|
|
|
|
<p><code>as</code> assembles source files written for a specific architecture
|
|
into object files for that architecture. But not all object files are alike.
|
|
Many architectures support incompatible variations. For instance, floating
|
|
point arguments might be passed in floating point registers if the object file
|
|
requires hardware floating point support—or floating point arguments might be
|
|
passed in integer registers if the object file supports processors with no
|
|
hardware floating point unit. Or, if two objects are built for different
|
|
generations of the same architecture, the combination may require the
|
|
newer generation at run-time.
|
|
</p>
|
|
<p>This information is useful during and after linking. At link time,
|
|
<code>ld</code> can warn about incompatible object files. After link
|
|
time, tools like <code>gdb</code> can use it to process the linked file
|
|
correctly.
|
|
</p>
|
|
<p>Compatibility information is recorded as a series of object attributes. Each
|
|
attribute has a <em>vendor</em>, <em>tag</em>, and <em>value</em>. The vendor is a
|
|
string, and indicates who sets the meaning of the tag. The tag is an integer,
|
|
and indicates what property the attribute describes. The value may be a string
|
|
or an integer, and indicates how the property affects this object. Missing
|
|
attributes are the same as attributes with a zero value or empty string value.
|
|
</p>
|
|
<p>Object attributes were developed as part of the ABI for the ARM Architecture.
|
|
The file format is documented in <cite>ELF for the ARM Architecture</cite>.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#GNU-Object-Attributes" accesskey="1">GNU Object Attributes</a>:</td><td> </td><td align="left" valign="top"><small>GNU</small> Object Attributes
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Defining-New-Object-Attributes" accesskey="2">Defining New Object Attributes</a>:</td><td> </td><td align="left" valign="top">Defining New Object Attributes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="GNU-Object-Attributes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Defining-New-Object-Attributes" accesskey="n" rel="next">Defining New Object Attributes</a>, Up: <a href="#Object-Attributes" accesskey="u" rel="up">Object Attributes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="GNU-Object-Attributes-1"></a>
|
|
<h3 class="section">8.1 <small>GNU</small> Object Attributes</h3>
|
|
|
|
<p>The <code>.gnu_attribute</code> directive records an object attribute
|
|
with vendor ‘<samp>gnu</samp>’.
|
|
</p>
|
|
<p>Except for ‘<samp>Tag_compatibility</samp>’, which has both an integer and a string for
|
|
its value, <small>GNU</small> attributes have a string value if the tag number is odd and
|
|
an integer value if the tag number is even. The second bit (<code><var>tag</var> &
|
|
2</code> is set for architecture-independent attributes and clear for
|
|
architecture-dependent ones.
|
|
</p>
|
|
<a name="Common-GNU-attributes"></a>
|
|
<h4 class="subsection">8.1.1 Common <small>GNU</small> attributes</h4>
|
|
|
|
<p>These attributes are valid on all architectures.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><span class="roman">Tag_compatibility (32)</span></dt>
|
|
<dd><p>The compatibility attribute takes an integer flag value and a vendor name. If
|
|
the flag value is 0, the file is compatible with other toolchains. If it is 1,
|
|
then the file is only compatible with the named toolchain. If it is greater
|
|
than 1, the file can only be processed by other toolchains under some private
|
|
arrangement indicated by the flag value and the vendor name.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="M680x0-Attributes"></a>
|
|
<h4 class="subsection">8.1.2 M680x0 Attributes</h4>
|
|
|
|
<dl compact="compact">
|
|
<dt><span class="roman">Tag_GNU_M68K_ABI_FP (4)</span></dt>
|
|
<dd><p>The floating-point ABI used by this object file. The value will be:
|
|
</p>
|
|
<ul>
|
|
<li> 0 for files not affected by the floating-point ABI.
|
|
</li><li> 1 for files using double-precision hardware floating-point ABI.
|
|
</li><li> 2 for files using the software floating-point ABI.
|
|
</li></ul>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="MIPS-Attributes"></a>
|
|
<h4 class="subsection">8.1.3 MIPS Attributes</h4>
|
|
|
|
<dl compact="compact">
|
|
<dt><span class="roman">Tag_GNU_MIPS_ABI_FP (4)</span></dt>
|
|
<dd><p>The floating-point ABI used by this object file. The value will be:
|
|
</p>
|
|
<ul>
|
|
<li> 0 for files not affected by the floating-point ABI.
|
|
</li><li> 1 for files using the hardware floating-point ABI with a standard
|
|
double-precision FPU.
|
|
</li><li> 2 for files using the hardware floating-point ABI with a single-precision FPU.
|
|
</li><li> 3 for files using the software floating-point ABI.
|
|
</li><li> 4 for files using the deprecated hardware floating-point ABI which used 64-bit
|
|
floating-point registers, 32-bit general-purpose registers and increased the
|
|
number of callee-saved floating-point registers.
|
|
</li><li> 5 for files using the hardware floating-point ABI with a double-precision FPU
|
|
with either 32-bit or 64-bit floating-point registers and 32-bit
|
|
general-purpose registers.
|
|
</li><li> 6 for files using the hardware floating-point ABI with 64-bit floating-point
|
|
registers and 32-bit general-purpose registers.
|
|
</li><li> 7 for files using the hardware floating-point ABI with 64-bit floating-point
|
|
registers, 32-bit general-purpose registers and a rule that forbids the
|
|
direct use of odd-numbered single-precision floating-point registers.
|
|
</li></ul>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="PowerPC-Attributes"></a>
|
|
<h4 class="subsection">8.1.4 PowerPC Attributes</h4>
|
|
|
|
<dl compact="compact">
|
|
<dt><span class="roman">Tag_GNU_Power_ABI_FP (4)</span></dt>
|
|
<dd><p>The floating-point ABI used by this object file. The value will be:
|
|
</p>
|
|
<ul>
|
|
<li> 0 for files not affected by the floating-point ABI.
|
|
</li><li> 1 for files using double-precision hardware floating-point ABI.
|
|
</li><li> 2 for files using the software floating-point ABI.
|
|
</li><li> 3 for files using single-precision hardware floating-point ABI.
|
|
</li></ul>
|
|
|
|
</dd>
|
|
<dt><span class="roman">Tag_GNU_Power_ABI_Vector (8)</span></dt>
|
|
<dd><p>The vector ABI used by this object file. The value will be:
|
|
</p>
|
|
<ul>
|
|
<li> 0 for files not affected by the vector ABI.
|
|
</li><li> 1 for files using general purpose registers to pass vectors.
|
|
</li><li> 2 for files using AltiVec registers to pass vectors.
|
|
</li><li> 3 for files using SPE registers to pass vectors.
|
|
</li></ul>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="IBM-z-Systems-Attributes"></a>
|
|
<h4 class="subsection">8.1.5 IBM z Systems Attributes</h4>
|
|
|
|
<dl compact="compact">
|
|
<dt><span class="roman">Tag_GNU_S390_ABI_Vector (8)</span></dt>
|
|
<dd><p>The vector ABI used by this object file. The value will be:
|
|
</p>
|
|
<ul>
|
|
<li> 0 for files not affected by the vector ABI.
|
|
</li><li> 1 for files using software vector ABI.
|
|
</li><li> 2 for files using hardware vector ABI.
|
|
</li></ul>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="MSP430-Attributes"></a>
|
|
<h4 class="subsection">8.1.6 MSP430 Attributes</h4>
|
|
|
|
<dl compact="compact">
|
|
<dt><span class="roman">Tag_GNU_MSP430_Data_Region (4)</span></dt>
|
|
<dd><p>The data region used by this object file. The value will be:
|
|
</p>
|
|
<ul>
|
|
<li> 0 for files not using the large memory model.
|
|
</li><li> 1 for files which have been compiled with the condition that all
|
|
data is in the lower memory region, i.e. below address 0x10000.
|
|
</li><li> 2 for files which allow data to be placed in the full 20-bit memory range.
|
|
</li></ul>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Defining-New-Object-Attributes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#GNU-Object-Attributes" accesskey="p" rel="previous">GNU Object Attributes</a>, Up: <a href="#Object-Attributes" accesskey="u" rel="up">Object Attributes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Defining-New-Object-Attributes-1"></a>
|
|
<h3 class="section">8.2 Defining New Object Attributes</h3>
|
|
|
|
<p>If you want to define a new <small>GNU</small> object attribute, here are the places you
|
|
will need to modify. New attributes should be discussed on the ‘<samp>binutils</samp>’
|
|
mailing list.
|
|
</p>
|
|
<ul>
|
|
<li> This manual, which is the official register of attributes.
|
|
</li><li> The header for your architecture <samp>include/elf</samp>, to define the tag.
|
|
</li><li> The <samp>bfd</samp> support file for your architecture, to merge the attribute
|
|
and issue any appropriate link warnings.
|
|
</li><li> Test cases in <samp>ld/testsuite</samp> for merging and link warnings.
|
|
</li><li> <samp>binutils/readelf.c</samp> to display your attribute.
|
|
</li><li> GCC, if you want the compiler to mark the attribute automatically.
|
|
</li></ul>
|
|
|
|
|
|
<hr>
|
|
<a name="Machine-Dependencies"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Reporting-Bugs" accesskey="n" rel="next">Reporting Bugs</a>, Previous: <a href="#Object-Attributes" accesskey="p" rel="previous">Object Attributes</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Machine-Dependent-Features"></a>
|
|
<h2 class="chapter">9 Machine Dependent Features</h2>
|
|
|
|
<a name="index-machine-dependencies"></a>
|
|
<p>The machine instruction sets are (almost by definition) different on
|
|
each machine where <code>as</code> runs. Floating point representations
|
|
vary as well, and <code>as</code> often supports a few additional
|
|
directives or command-line options for compatibility with other
|
|
assemblers on a particular platform. Finally, some versions of
|
|
<code>as</code> support special pseudo-instructions for branch
|
|
optimization.
|
|
</p>
|
|
<p>This chapter discusses most of these differences, though it does not
|
|
include details on any machine’s instruction set. For details on that
|
|
subject, see the hardware manufacturer’s manual.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#AArch64_002dDependent" accesskey="1">AArch64-Dependent</a>:</td><td> </td><td align="left" valign="top">AArch64 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Alpha_002dDependent" accesskey="2">Alpha-Dependent</a>:</td><td> </td><td align="left" valign="top">Alpha Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARC_002dDependent" accesskey="3">ARC-Dependent</a>:</td><td> </td><td align="left" valign="top">ARC Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARM_002dDependent" accesskey="4">ARM-Dependent</a>:</td><td> </td><td align="left" valign="top">ARM Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AVR_002dDependent" accesskey="5">AVR-Dependent</a>:</td><td> </td><td align="left" valign="top">AVR Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Blackfin_002dDependent" accesskey="6">Blackfin-Dependent</a>:</td><td> </td><td align="left" valign="top">Blackfin Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#BPF_002dDependent" accesskey="7">BPF-Dependent</a>:</td><td> </td><td align="left" valign="top">BPF Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#CR16_002dDependent" accesskey="8">CR16-Dependent</a>:</td><td> </td><td align="left" valign="top">CR16 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#CRIS_002dDependent" accesskey="9">CRIS-Dependent</a>:</td><td> </td><td align="left" valign="top">CRIS Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#C_002dSKY_002dDependent">C-SKY-Dependent</a>:</td><td> </td><td align="left" valign="top">C-SKY Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D10V_002dDependent">D10V-Dependent</a>:</td><td> </td><td align="left" valign="top">D10V Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D30V_002dDependent">D30V-Dependent</a>:</td><td> </td><td align="left" valign="top">D30V Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Epiphany_002dDependent">Epiphany-Dependent</a>:</td><td> </td><td align="left" valign="top">EPIPHANY Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#H8_002f300_002dDependent">H8/300-Dependent</a>:</td><td> </td><td align="left" valign="top">Renesas H8/300 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#HPPA_002dDependent">HPPA-Dependent</a>:</td><td> </td><td align="left" valign="top">HPPA Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dDependent">i386-Dependent</a>:</td><td> </td><td align="left" valign="top">Intel 80386 and AMD x86-64 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#IA_002d64_002dDependent">IA-64-Dependent</a>:</td><td> </td><td align="left" valign="top">Intel IA-64 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#IP2K_002dDependent">IP2K-Dependent</a>:</td><td> </td><td align="left" valign="top">IP2K Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#LM32_002dDependent">LM32-Dependent</a>:</td><td> </td><td align="left" valign="top">LM32 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M32C_002dDependent">M32C-Dependent</a>:</td><td> </td><td align="left" valign="top">M32C Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M32R_002dDependent">M32R-Dependent</a>:</td><td> </td><td align="left" valign="top">M32R Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M68K_002dDependent">M68K-Dependent</a>:</td><td> </td><td align="left" valign="top">M680x0 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M68HC11_002dDependent">M68HC11-Dependent</a>:</td><td> </td><td align="left" valign="top">M68HC11 and 68HC12 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#S12Z_002dDependent">S12Z-Dependent</a>:</td><td> </td><td align="left" valign="top">S12Z Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Meta_002dDependent">Meta-Dependent </a>:</td><td> </td><td align="left" valign="top">Meta Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MicroBlaze_002dDependent">MicroBlaze-Dependent</a>:</td><td> </td><td align="left" valign="top">MICROBLAZE Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS_002dDependent">MIPS-Dependent</a>:</td><td> </td><td align="left" valign="top">MIPS Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MMIX_002dDependent">MMIX-Dependent</a>:</td><td> </td><td align="left" valign="top">MMIX Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MSP430_002dDependent">MSP430-Dependent</a>:</td><td> </td><td align="left" valign="top">MSP430 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#NDS32_002dDependent">NDS32-Dependent</a>:</td><td> </td><td align="left" valign="top">Andes NDS32 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#NiosII_002dDependent">NiosII-Dependent</a>:</td><td> </td><td align="left" valign="top">Altera Nios II Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#NS32K_002dDependent">NS32K-Dependent</a>:</td><td> </td><td align="left" valign="top">NS32K Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#OpenRISC_002dDependent">OpenRISC-Dependent</a>:</td><td> </td><td align="left" valign="top">OpenRISC 1000 Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PDP_002d11_002dDependent">PDP-11-Dependent</a>:</td><td> </td><td align="left" valign="top">PDP-11 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PJ_002dDependent">PJ-Dependent</a>:</td><td> </td><td align="left" valign="top">picoJava Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PPC_002dDependent">PPC-Dependent</a>:</td><td> </td><td align="left" valign="top">PowerPC Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PRU_002dDependent">PRU-Dependent</a>:</td><td> </td><td align="left" valign="top">PRU Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RISC_002dV_002dDependent">RISC-V-Dependent</a>:</td><td> </td><td align="left" valign="top">RISC-V Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RL78_002dDependent">RL78-Dependent</a>:</td><td> </td><td align="left" valign="top">RL78 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RX_002dDependent">RX-Dependent</a>:</td><td> </td><td align="left" valign="top">RX Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#S_002f390_002dDependent">S/390-Dependent</a>:</td><td> </td><td align="left" valign="top">IBM S/390 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#SCORE_002dDependent">SCORE-Dependent</a>:</td><td> </td><td align="left" valign="top">SCORE Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#SH_002dDependent">SH-Dependent</a>:</td><td> </td><td align="left" valign="top">Renesas / SuperH SH Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Sparc_002dDependent">Sparc-Dependent</a>:</td><td> </td><td align="left" valign="top">SPARC Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dDependent">TIC54X-Dependent</a>:</td><td> </td><td align="left" valign="top">TI TMS320C54x Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC6X_002dDependent">TIC6X-Dependent </a>:</td><td> </td><td align="left" valign="top">TI TMS320C6x Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TILE_002dGx_002dDependent">TILE-Gx-Dependent </a>:</td><td> </td><td align="left" valign="top">Tilera TILE-Gx Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TILEPro_002dDependent">TILEPro-Dependent </a>:</td><td> </td><td align="left" valign="top">Tilera TILEPro Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#V850_002dDependent">V850-Dependent</a>:</td><td> </td><td align="left" valign="top">V850 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Vax_002dDependent">Vax-Dependent</a>:</td><td> </td><td align="left" valign="top">VAX Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Visium_002dDependent">Visium-Dependent</a>:</td><td> </td><td align="left" valign="top">Visium Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#WebAssembly_002dDependent">WebAssembly-Dependent</a>:</td><td> </td><td align="left" valign="top">WebAssembly Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#XGATE_002dDependent">XGATE-Dependent</a>:</td><td> </td><td align="left" valign="top">XGATE Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#XSTORMY16_002dDependent">XSTORMY16-Dependent</a>:</td><td> </td><td align="left" valign="top">XStormy16 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Xtensa_002dDependent">Xtensa-Dependent</a>:</td><td> </td><td align="left" valign="top">Xtensa Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z80_002dDependent">Z80-Dependent</a>:</td><td> </td><td align="left" valign="top">Z80 Dependent Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z8000_002dDependent">Z8000-Dependent</a>:</td><td> </td><td align="left" valign="top">Z8000 Dependent Features
|
|
</td></tr>
|
|
</table>
|
|
|
|
|
|
|
|
|
|
<hr>
|
|
<a name="AArch64_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Alpha_002dDependent" accesskey="n" rel="next">Alpha-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="AArch64-Dependent-Features"></a>
|
|
<h3 class="section">9.1 AArch64 Dependent Features</h3>
|
|
|
|
|
|
<a name="index-AArch64-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#AArch64-Options" accesskey="1">AArch64 Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AArch64-Extensions" accesskey="2">AArch64 Extensions</a>:</td><td> </td><td align="left" valign="top">Extensions
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AArch64-Syntax" accesskey="3">AArch64 Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AArch64-Floating-Point" accesskey="4">AArch64 Floating Point</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AArch64-Directives" accesskey="5">AArch64 Directives</a>:</td><td> </td><td align="left" valign="top">AArch64 Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AArch64-Opcodes" accesskey="6">AArch64 Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AArch64-Mapping-Symbols" accesskey="7">AArch64 Mapping Symbols</a>:</td><td> </td><td align="left" valign="top">Mapping Symbols
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="AArch64-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AArch64-Extensions" accesskey="n" rel="next">AArch64 Extensions</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options"></a>
|
|
<h4 class="subsection">9.1.1 Options</h4>
|
|
<a name="index-AArch64-options-_0028none_0029"></a>
|
|
<a name="index-options-for-AArch64-_0028none_0029"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dEB-command_002dline-option_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>-EB</code></dt>
|
|
<dd><p>This option specifies that the output generated by the assembler should
|
|
be marked as being encoded for a big-endian processor.
|
|
</p>
|
|
<a name="index-_002dEL-command_002dline-option_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>-EL</code></dt>
|
|
<dd><p>This option specifies that the output generated by the assembler should
|
|
be marked as being encoded for a little-endian processor.
|
|
</p>
|
|
<a name="index-_002dmabi_003d-command_002dline-option_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>-mabi=<var>abi</var></code></dt>
|
|
<dd><p>Specify which ABI the source code uses. The recognized arguments
|
|
are: <code>ilp32</code> and <code>lp64</code>, which decides the generated object
|
|
file in ELF32 and ELF64 format respectively. The default is <code>lp64</code>.
|
|
</p>
|
|
<a name="index-_002dmcpu_003d-command_002dline-option_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>-mcpu=<var>processor</var>[+<var>extension</var>…]</code></dt>
|
|
<dd><p>This option specifies the target processor. The assembler will issue an error
|
|
message if an attempt is made to assemble an instruction which will not execute
|
|
on the target processor. The following processor names are recognized:
|
|
<code>cortex-a34</code>,
|
|
<code>cortex-a35</code>,
|
|
<code>cortex-a53</code>,
|
|
<code>cortex-a55</code>,
|
|
<code>cortex-a57</code>,
|
|
<code>cortex-a65</code>,
|
|
<code>cortex-a65ae</code>,
|
|
<code>cortex-a72</code>,
|
|
<code>cortex-a73</code>,
|
|
<code>cortex-a75</code>,
|
|
<code>cortex-a76</code>,
|
|
<code>cortex-a76ae</code>,
|
|
<code>cortex-a77</code>,
|
|
<code>cortex-a78</code>,
|
|
<code>cortex-a78ae</code>,
|
|
<code>cortex-a78c</code>,
|
|
<code>cortex-a510</code>,
|
|
<code>cortex-a710</code>,
|
|
<code>ares</code>,
|
|
<code>exynos-m1</code>,
|
|
<code>falkor</code>,
|
|
<code>neoverse-n1</code>,
|
|
<code>neoverse-n2</code>,
|
|
<code>neoverse-e1</code>,
|
|
<code>neoverse-v1</code>,
|
|
<code>qdf24xx</code>,
|
|
<code>saphira</code>,
|
|
<code>thunderx</code>,
|
|
<code>vulcan</code>,
|
|
<code>xgene1</code>
|
|
<code>xgene2</code>,
|
|
<code>cortex-r82</code>,
|
|
<code>cortex-x1</code>,
|
|
and
|
|
<code>cortex-x2</code>.
|
|
The special name <code>all</code> may be used to allow the assembler to accept
|
|
instructions valid for any supported processor, including all optional
|
|
extensions.
|
|
</p>
|
|
<p>In addition to the basic instruction set, the assembler can be told to
|
|
accept, or restrict, various extension mnemonics that extend the
|
|
processor. See <a href="#AArch64-Extensions">AArch64 Extensions</a>.
|
|
</p>
|
|
<p>If some implementations of a particular processor can have an
|
|
extension, then then those extensions are automatically enabled.
|
|
Consequently, you will not normally have to specify any additional
|
|
extensions.
|
|
</p>
|
|
<a name="index-_002dmarch_003d-command_002dline-option_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>-march=<var>architecture</var>[+<var>extension</var>…]</code></dt>
|
|
<dd><p>This option specifies the target architecture. The assembler will
|
|
issue an error message if an attempt is made to assemble an
|
|
instruction which will not execute on the target architecture. The
|
|
following architecture names are recognized: <code>armv8-a</code>,
|
|
<code>armv8.1-a</code>, <code>armv8.2-a</code>, <code>armv8.3-a</code>, <code>armv8.4-a</code>
|
|
<code>armv8.5-a</code>, <code>armv8.6-a</code>, <code>armv8.7-a</code>, <code>armv8.8-a</code>,
|
|
<code>armv8-r</code>, <code>armv9-a</code>, <code>armv9.1-a</code>, <code>armv9.2-a</code>,
|
|
and <code>armv9.3-a</code>.
|
|
</p>
|
|
<p>If both <samp>-mcpu</samp> and <samp>-march</samp> are specified, the
|
|
assembler will use the setting for <samp>-mcpu</samp>. If neither are
|
|
specified, the assembler will default to <samp>-mcpu=all</samp>.
|
|
</p>
|
|
<p>The architecture option can be extended with the same instruction set
|
|
extension options as the <samp>-mcpu</samp> option. Unlike
|
|
<samp>-mcpu</samp>, extensions are not always enabled by default,
|
|
See <a href="#AArch64-Extensions">AArch64 Extensions</a>.
|
|
</p>
|
|
<a name="index-_002dmverbose_002derror-command_002dline-option_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>-mverbose-error</code></dt>
|
|
<dd><p>This option enables verbose error messages for AArch64 gas. This option
|
|
is enabled by default.
|
|
</p>
|
|
<a name="index-_002dmno_002dverbose_002derror-command_002dline-option_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>-mno-verbose-error</code></dt>
|
|
<dd><p>This option disables verbose error messages in AArch64 gas.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="AArch64-Extensions"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AArch64-Syntax" accesskey="n" rel="next">AArch64 Syntax</a>, Previous: <a href="#AArch64-Options" accesskey="p" rel="previous">AArch64 Options</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Architecture-Extensions"></a>
|
|
<h4 class="subsection">9.1.2 Architecture Extensions</h4>
|
|
|
|
<p>The table below lists the permitted architecture extensions that are
|
|
supported by the assembler and the conditions under which they are
|
|
automatically enabled.
|
|
</p>
|
|
<p>Multiple extensions may be specified, separated by a <code>+</code>.
|
|
Extension mnemonics may also be removed from those the assembler
|
|
accepts. This is done by prepending <code>no</code> to the option that adds
|
|
the extension. Extensions that are removed must be listed after all
|
|
extensions that have been added.
|
|
</p>
|
|
<p>Enabling an extension that requires other extensions will
|
|
automatically cause those extensions to be enabled. Similarly,
|
|
disabling an extension that is required by other extensions will
|
|
automatically cause those extensions to be disabled.
|
|
</p>
|
|
<table>
|
|
<thead><tr><th width="12%">Extension</th><th width="17%">Minimum Architecture</th><th width="17%">Enabled by default</th><th width="54%">Description</th></tr></thead>
|
|
<tr><td width="12%"><code>aes</code></td><td width="17%">ARMv8-A</td><td width="17%">No</td><td width="54%">Enable the AES cryptographic extensions. This implies <code>fp</code> and
|
|
<code>simd</code>.</td></tr>
|
|
<tr><td width="12%"><code>bf16</code></td><td width="17%">ARMv8.2-A</td><td width="17%">ARMv8.6-A or later</td><td width="54%">Enable BFloat16 extension.</td></tr>
|
|
<tr><td width="12%"><code>compnum</code></td><td width="17%">ARMv8.2-A</td><td width="17%">ARMv8.3-A or later</td><td width="54%">Enable the complex number SIMD extensions. This implies <code>fp16</code> and
|
|
<code>simd</code>.</td></tr>
|
|
<tr><td width="12%"><code>crc</code></td><td width="17%">ARMv8-A</td><td width="17%">ARMv8.1-A or later</td><td width="54%">Enable CRC instructions.</td></tr>
|
|
<tr><td width="12%"><code>crypto</code></td><td width="17%">ARMv8-A</td><td width="17%">No</td><td width="54%">Enable cryptographic extensions. This implies <code>fp</code>, <code>simd</code>,
|
|
<code>aes</code> and <code>sha2</code>.</td></tr>
|
|
<tr><td width="12%"><code>dotprod</code></td><td width="17%">ARMv8.2-A</td><td width="17%">ARMv8.4-A or later</td><td width="54%">Enable the Dot Product extension. This implies <code>simd</code>.</td></tr>
|
|
<tr><td width="12%"><code>f32mm</code></td><td width="17%">ARMv8.2-A</td><td width="17%">No</td><td width="54%">Enable F32 Matrix Multiply extension. This implies <code>sve</code>.</td></tr>
|
|
<tr><td width="12%"><code>f64mm</code></td><td width="17%">ARMv8.2-A</td><td width="17%">No</td><td width="54%">Enable F64 Matrix Multiply extension. This implies <code>sve</code>.</td></tr>
|
|
<tr><td width="12%"><code>flagm</code></td><td width="17%">ARMv8-A</td><td width="17%">ARMv8.4-A or later</td><td width="54%">Enable Flag Manipulation instructions.</td></tr>
|
|
<tr><td width="12%"><code>fp16fml</code></td><td width="17%">ARMv8.2-A</td><td width="17%">ARMv8.4-A or later</td><td width="54%">Enable ARMv8.2 16-bit floating-point multiplication variant support. This
|
|
implies <code>fp</code> and <code>fp16</code>.</td></tr>
|
|
<tr><td width="12%"><code>fp16</code></td><td width="17%">ARMv8.2-A</td><td width="17%">ARMv8.2-A or later</td><td width="54%">Enable ARMv8.2 16-bit floating-point support. This implies <code>fp</code>.</td></tr>
|
|
<tr><td width="12%"><code>fp</code></td><td width="17%">ARMv8-A</td><td width="17%">ARMv8-A or later</td><td width="54%">Enable floating-point extensions.</td></tr>
|
|
<tr><td width="12%"><code>hbc</code></td><td width="17%"></td><td width="17%">Armv8.8-A or later</td><td width="54%">Enable Armv8.8-A hinted conditional branch instructions</td></tr>
|
|
<tr><td width="12%"><code>i8mm</code></td><td width="17%">ARMv8.2-A</td><td width="17%">ARMv8.6-A or later</td><td width="54%">Enable Int8 Matrix Multiply extension.</td></tr>
|
|
<tr><td width="12%"><code>lor</code></td><td width="17%">ARMv8-A</td><td width="17%">ARMv8.1-A or later</td><td width="54%">Enable Limited Ordering Regions extensions.</td></tr>
|
|
<tr><td width="12%"><code>ls64</code></td><td width="17%">ARMv8.6-A</td><td width="17%">ARMv8.7-A or later</td><td width="54%">Enable 64 Byte Loads/Stores.</td></tr>
|
|
<tr><td width="12%"><code>lse</code></td><td width="17%">ARMv8-A</td><td width="17%">ARMv8.1-A or later</td><td width="54%">Enable Large System extensions.</td></tr>
|
|
<tr><td width="12%"><code>memtag</code></td><td width="17%">ARMv8.5-A</td><td width="17%">No</td><td width="54%">Enable ARMv8.5-A Memory Tagging Extensions.</td></tr>
|
|
<tr><td width="12%"><code>mops</code></td><td width="17%"></td><td width="17%">Armv8.8-A or later</td><td width="54%">Enable Armv8.8-A memcpy and memset acceleration instructions</td></tr>
|
|
<tr><td width="12%"><code>pan</code></td><td width="17%">ARMv8-A</td><td width="17%">ARMv8.1-A or later</td><td width="54%">Enable Privileged Access Never support.</td></tr>
|
|
<tr><td width="12%"><code>pauth</code></td><td width="17%">ARMv8-A</td><td width="17%">No</td><td width="54%">Enable Pointer Authentication.</td></tr>
|
|
<tr><td width="12%"><code>predres</code></td><td width="17%">ARMv8-A</td><td width="17%">ARMv8.5-A or later</td><td width="54%">Enable the Execution and Data and Prediction instructions.</td></tr>
|
|
<tr><td width="12%"><code>profile</code></td><td width="17%">ARMv8.2-A</td><td width="17%">No</td><td width="54%">Enable statistical profiling extensions.</td></tr>
|
|
<tr><td width="12%"><code>ras</code></td><td width="17%">ARMv8-A</td><td width="17%">ARMv8.2-A or later</td><td width="54%">Enable the Reliability, Availability and Serviceability extension.</td></tr>
|
|
<tr><td width="12%"><code>rcpc</code></td><td width="17%">ARMv8.2-A</td><td width="17%">ARMv8.3-A or later</td><td width="54%">Enable the weak release consistency extension.</td></tr>
|
|
<tr><td width="12%"><code>rdma</code></td><td width="17%">ARMv8-A</td><td width="17%">ARMv8.1-A or later</td><td width="54%">Enable ARMv8.1 Advanced SIMD extensions. This implies <code>simd</code>.</td></tr>
|
|
<tr><td width="12%"><code>rng</code></td><td width="17%">ARMv8.5-A</td><td width="17%">No</td><td width="54%">Enable ARMv8.5-A random number instructions.</td></tr>
|
|
<tr><td width="12%"><code>sb</code></td><td width="17%">ARMv8-A</td><td width="17%">ARMv8.5-A or later</td><td width="54%">Enable the speculation barrier instruction sb.</td></tr>
|
|
<tr><td width="12%"><code>sha2</code></td><td width="17%">ARMv8-A</td><td width="17%">No</td><td width="54%">Enable the SHA2 cryptographic extensions. This implies <code>fp</code> and
|
|
<code>simd</code>.</td></tr>
|
|
<tr><td width="12%"><code>sha3</code></td><td width="17%">ARMv8.2-A</td><td width="17%">No</td><td width="54%">Enable the ARMv8.2-A SHA2 and SHA3 cryptographic extensions. This implies
|
|
<code>fp</code>, <code>simd</code> and <code>sha2</code>.</td></tr>
|
|
<tr><td width="12%"><code>simd</code></td><td width="17%">ARMv8-A</td><td width="17%">ARMv8-A or later</td><td width="54%">Enable Advanced SIMD extensions. This implies <code>fp</code>.</td></tr>
|
|
<tr><td width="12%"><code>sm4</code></td><td width="17%">ARMv8.2-A</td><td width="17%">No</td><td width="54%">Enable the ARMv8.2-A SM3 and SM4 cryptographic extensions. This implies
|
|
<code>fp</code> and <code>simd</code>.</td></tr>
|
|
<tr><td width="12%"><code>sme</code></td><td width="17%">Armv9-A</td><td width="17%">No</td><td width="54%">Enable SME Extension.</td></tr>
|
|
<tr><td width="12%"><code>sme-f64</code></td><td width="17%">Armv9-A</td><td width="17%">No</td><td width="54%">Enable SME F64 Extension.</td></tr>
|
|
<tr><td width="12%"><code>sme-i64</code></td><td width="17%">Armv9-A</td><td width="17%">No</td><td width="54%">Enable SME I64 Extension.</td></tr>
|
|
<tr><td width="12%"><code>ssbs</code></td><td width="17%">ARMv8-A</td><td width="17%">ARMv8.5-A or later</td><td width="54%">Enable Speculative Store Bypassing Safe state read and write.</td></tr>
|
|
<tr><td width="12%"><code>sve</code></td><td width="17%">ARMv8.2-A</td><td width="17%">Armv9-A or later</td><td width="54%">Enable the Scalable Vector Extensions. This implies <code>fp16</code>,
|
|
<code>simd</code> and <code>compnum</code>.</td></tr>
|
|
<tr><td width="12%"><code>sve2</code></td><td width="17%">ARMv8-A</td><td width="17%">Armv9-A or later</td><td width="54%">Enable the SVE2 Extension. This implies <code>sve</code>.</td></tr>
|
|
<tr><td width="12%"><code>sve2-aes</code></td><td width="17%">ARMv8-A</td><td width="17%">No</td><td width="54%">Enable SVE2 AES Extension. This also enables the .Q->.B form of the
|
|
<code>pmullt</code> and <code>pmullb</code> instructions. This implies <code>aes</code> and
|
|
<code>sve2</code>.</td></tr>
|
|
<tr><td width="12%"><code>sve2-bitperm</code></td><td width="17%">ARMv8-A</td><td width="17%">No</td><td width="54%">Enable SVE2 BITPERM Extension.</td></tr>
|
|
<tr><td width="12%"><code>sve2-sha3</code></td><td width="17%">ARMv8-A</td><td width="17%">No</td><td width="54%">Enable SVE2 SHA3 Extension. This implies <code>sha3</code> and <code>sve2</code>.</td></tr>
|
|
<tr><td width="12%"><code>sve2-sm4</code></td><td width="17%">ARMv8-A</td><td width="17%">No</td><td width="54%">Enable SVE2 SM4 Extension. This implies <code>sm4</code> and <code>sve2</code>.</td></tr>
|
|
<tr><td width="12%"><code>tme</code></td><td width="17%">ARMv8-A</td><td width="17%">No</td><td width="54%">Enable Transactional Memory Extensions.</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="AArch64-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AArch64-Floating-Point" accesskey="n" rel="next">AArch64 Floating Point</a>, Previous: <a href="#AArch64-Extensions" accesskey="p" rel="previous">AArch64 Extensions</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-2"></a>
|
|
<h4 class="subsection">9.1.3 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#AArch64_002dChars" accesskey="1">AArch64-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AArch64_002dRegs" accesskey="2">AArch64-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AArch64_002dRelocations" accesskey="3">AArch64-Relocations</a>:</td><td> </td><td align="left" valign="top">Relocations
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="AArch64_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AArch64_002dRegs" accesskey="n" rel="next">AArch64-Regs</a>, Up: <a href="#AArch64-Syntax" accesskey="u" rel="up">AArch64 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters"></a>
|
|
<h4 class="subsubsection">9.1.3.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-AArch64"></a>
|
|
<a name="index-AArch64-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>//</samp>’ on a line indicates the start of a comment
|
|
that extends to the end of the current line. If a ‘<samp>#</samp>’ appears as
|
|
the first character of a line, the whole line is treated as a comment.
|
|
</p>
|
|
<a name="index-line-separator_002c-AArch64"></a>
|
|
<a name="index-statement-separator_002c-AArch64"></a>
|
|
<a name="index-AArch64-line-separator"></a>
|
|
<p>The ‘<samp>;</samp>’ character can be used instead of a newline to separate
|
|
statements.
|
|
</p>
|
|
<a name="index-immediate-character_002c-AArch64"></a>
|
|
<a name="index-AArch64-immediate-character"></a>
|
|
<p>The ‘<samp>#</samp>’ can be optionally used to indicate immediate operands.
|
|
</p>
|
|
<hr>
|
|
<a name="AArch64_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AArch64_002dRelocations" accesskey="n" rel="next">AArch64-Relocations</a>, Previous: <a href="#AArch64_002dChars" accesskey="p" rel="previous">AArch64-Chars</a>, Up: <a href="#AArch64-Syntax" accesskey="u" rel="up">AArch64 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names"></a>
|
|
<h4 class="subsubsection">9.1.3.2 Register Names</h4>
|
|
|
|
<a name="index-AArch64-register-names"></a>
|
|
<a name="index-register-names_002c-AArch64"></a>
|
|
<p>Please refer to the section ‘<samp>4.4 Register Names</samp>’ of
|
|
‘<samp>ARMv8 Instruction Set Overview</samp>’, which is available at
|
|
<a href="http://infocenter.arm.com">http://infocenter.arm.com</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="AArch64_002dRelocations"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#AArch64_002dRegs" accesskey="p" rel="previous">AArch64-Regs</a>, Up: <a href="#AArch64-Syntax" accesskey="u" rel="up">AArch64 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Relocations"></a>
|
|
<h4 class="subsubsection">9.1.3.3 Relocations</h4>
|
|
|
|
<a name="index-relocations_002c-AArch64"></a>
|
|
<a name="index-AArch64-relocations"></a>
|
|
<a name="index-MOVN_002c-MOVZ-and-MOVK-group-relocations_002c-AArch64"></a>
|
|
<p>Relocations for ‘<samp>MOVZ</samp>’ and ‘<samp>MOVK</samp>’ instructions can be generated
|
|
by prefixing the label with ‘<samp>#:abs_g2:</samp>’ etc.
|
|
For example to load the 48-bit absolute address of <var>foo</var> into x0:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> movz x0, #:abs_g2:foo // bits 32-47, overflow check
|
|
movk x0, #:abs_g1_nc:foo // bits 16-31, no overflow check
|
|
movk x0, #:abs_g0_nc:foo // bits 0-15, no overflow check
|
|
</pre></div>
|
|
|
|
<a name="index-ADRP_002c-ADD_002c-LDR_002fSTR-group-relocations_002c-AArch64"></a>
|
|
<p>Relocations for ‘<samp>ADRP</samp>’, and ‘<samp>ADD</samp>’, ‘<samp>LDR</samp>’ or ‘<samp>STR</samp>’
|
|
instructions can be generated by prefixing the label with
|
|
‘<samp>:pg_hi21:</samp>’ and ‘<samp>#:lo12:</samp>’ respectively.
|
|
</p>
|
|
<p>For example to use 33-bit (+/-4GB) pc-relative addressing to
|
|
load the address of <var>foo</var> into x0:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> adrp x0, :pg_hi21:foo
|
|
add x0, x0, #:lo12:foo
|
|
</pre></div>
|
|
|
|
<p>Or to load the value of <var>foo</var> into x0:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> adrp x0, :pg_hi21:foo
|
|
ldr x0, [x0, #:lo12:foo]
|
|
</pre></div>
|
|
|
|
<p>Note that ‘<samp>:pg_hi21:</samp>’ is optional.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> adrp x0, foo
|
|
</pre></div>
|
|
|
|
<p>is equivalent to
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> adrp x0, :pg_hi21:foo
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="AArch64-Floating-Point"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AArch64-Directives" accesskey="n" rel="next">AArch64 Directives</a>, Previous: <a href="#AArch64-Syntax" accesskey="p" rel="previous">AArch64 Syntax</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point"></a>
|
|
<h4 class="subsection">9.1.4 Floating Point</h4>
|
|
|
|
<a name="index-floating-point_002c-AArch64-_0028IEEE_0029"></a>
|
|
<a name="index-AArch64-floating-point-_0028IEEE_0029"></a>
|
|
<p>The AArch64 architecture uses <small>IEEE</small> floating-point numbers.
|
|
</p>
|
|
<hr>
|
|
<a name="AArch64-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AArch64-Opcodes" accesskey="n" rel="next">AArch64 Opcodes</a>, Previous: <a href="#AArch64-Floating-Point" accesskey="p" rel="previous">AArch64 Floating Point</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="AArch64-Machine-Directives"></a>
|
|
<h4 class="subsection">9.1.5 AArch64 Machine Directives</h4>
|
|
|
|
<a name="index-machine-directives_002c-AArch64"></a>
|
|
<a name="index-AArch64-machine-directives"></a>
|
|
<dl compact="compact">
|
|
<dd>
|
|
|
|
<a name="index-_002earch-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>.arch <var>name</var></code></dt>
|
|
<dd><p>Select the target architecture. Valid values for <var>name</var> are the same as
|
|
for the <samp>-march</samp> command-line option.
|
|
</p>
|
|
<p>Specifying <code>.arch</code> clears any previously selected architecture
|
|
extensions.
|
|
</p>
|
|
<a name="index-_002earch_005fextension-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>.arch_extension <var>name</var></code></dt>
|
|
<dd><p>Add or remove an architecture extension to the target architecture. Valid
|
|
values for <var>name</var> are the same as those accepted as architectural
|
|
extensions by the <samp>-mcpu</samp> command-line option.
|
|
</p>
|
|
<p><code>.arch_extension</code> may be used multiple times to add or remove extensions
|
|
incrementally to the architecture being compiled for.
|
|
</p>
|
|
|
|
<a name="index-_002ebss-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>.bss</code></dt>
|
|
<dd><p>This directive switches to the <code>.bss</code> section.
|
|
</p>
|
|
|
|
<a name="index-_002ecpu-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>.cpu <var>name</var></code></dt>
|
|
<dd><p>Set the target processor. Valid values for <var>name</var> are the same as
|
|
those accepted by the <samp>-mcpu=</samp> command-line option.
|
|
</p>
|
|
|
|
<a name="index-_002edword-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>.dword <var>expressions</var></code></dt>
|
|
<dd><p>The <code>.dword</code> directive produces 64 bit values.
|
|
</p>
|
|
|
|
<a name="index-_002eeven-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>.even</code></dt>
|
|
<dd><p>The <code>.even</code> directive aligns the output on the next even byte
|
|
boundary.
|
|
</p>
|
|
|
|
<a name="index-_002efloat16-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>.float16 <var>value [,...,value_n]</var></code></dt>
|
|
<dd><p>Place the half precision floating point representation of one or more
|
|
floating-point values into the current section.
|
|
The format used to encode the floating point values is always the
|
|
IEEE 754-2008 half precision floating point format.
|
|
</p>
|
|
|
|
<a name="index-_002einst-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>.inst <var>expressions</var></code></dt>
|
|
<dd><p>Inserts the expressions into the output as if they were instructions,
|
|
rather than data.
|
|
</p>
|
|
|
|
<a name="index-_002eltorg-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>.ltorg</code></dt>
|
|
<dd><p>This directive causes the current contents of the literal pool to be
|
|
dumped into the current section (which is assumed to be the .text
|
|
section) at the current location (aligned to a word boundary).
|
|
GAS maintains a separate literal pool for each section and each
|
|
sub-section. The <code>.ltorg</code> directive will only affect the literal
|
|
pool of the current section and sub-section. At the end of assembly
|
|
all remaining, un-empty literal pools will automatically be dumped.
|
|
</p>
|
|
<p>Note - older versions of GAS would dump the current literal
|
|
pool any time a section change occurred. This is no longer done, since
|
|
it prevents accurate control of the placement of literal pools.
|
|
</p>
|
|
|
|
|
|
|
|
<a name="index-_002epool-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>.pool</code></dt>
|
|
<dd><p>This is a synonym for .ltorg.
|
|
</p>
|
|
|
|
<a name="index-_002ereq-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code><var>name</var> .req <var>register name</var></code></dt>
|
|
<dd><p>This creates an alias for <var>register name</var> called <var>name</var>. For
|
|
example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> foo .req w0
|
|
</pre></div>
|
|
|
|
<p>ip0, ip1, lr and fp are automatically defined to
|
|
alias to X16, X17, X30 and X29 respectively.
|
|
</p>
|
|
|
|
|
|
<a name="index-_002etlsdescadd-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code><code>.tlsdescadd</code></code></dt>
|
|
<dd><p>Emits a TLSDESC_ADD reloc on the next instruction.
|
|
</p>
|
|
<a name="index-_002etlsdesccall-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code><code>.tlsdesccall</code></code></dt>
|
|
<dd><p>Emits a TLSDESC_CALL reloc on the next instruction.
|
|
</p>
|
|
<a name="index-_002etlsdescldr-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code><code>.tlsdescldr</code></code></dt>
|
|
<dd><p>Emits a TLSDESC_LDR reloc on the next instruction.
|
|
</p>
|
|
|
|
<a name="index-_002eunreq-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>.unreq <var>alias-name</var></code></dt>
|
|
<dd><p>This undefines a register alias which was previously defined using the
|
|
<code>req</code> directive. For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> foo .req w0
|
|
.unreq foo
|
|
</pre></div>
|
|
|
|
<p>An error occurs if the name is undefined. Note - this pseudo op can
|
|
be used to delete builtin in register name aliases (eg ’w0’). This
|
|
should only be done if it is really necessary.
|
|
</p>
|
|
|
|
<a name="index-_002evariant_005fpcs-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>.variant_pcs <var>symbol</var></code></dt>
|
|
<dd><p>This directive marks <var>symbol</var> referencing a function that may
|
|
follow a variant procedure call standard with different register
|
|
usage convention from the base procedure call standard.
|
|
</p>
|
|
|
|
<a name="index-_002exword-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>.xword <var>expressions</var></code></dt>
|
|
<dd><p>The <code>.xword</code> directive produces 64 bit values. This is the same
|
|
as the <code>.dword</code> directive.
|
|
</p>
|
|
|
|
<a name="index-_002ecfi_005fb_005fkey_005fframe-directive_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code><code>.cfi_b_key_frame</code></code></dt>
|
|
<dd><p>The <code>.cfi_b_key_frame</code> directive inserts a ’B’ character into the CIE
|
|
corresponding to the current frame’s FDE, meaning that its return address has
|
|
been signed with the B-key. If two frames are signed with differing keys then
|
|
they will not share the same CIE. This information is intended to be used by
|
|
the stack unwinder in order to properly authenticate return addresses.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="AArch64-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AArch64-Mapping-Symbols" accesskey="n" rel="next">AArch64 Mapping Symbols</a>, Previous: <a href="#AArch64-Directives" accesskey="p" rel="previous">AArch64 Directives</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes"></a>
|
|
<h4 class="subsection">9.1.6 Opcodes</h4>
|
|
|
|
<a name="index-AArch64-opcodes"></a>
|
|
<a name="index-opcodes-for-AArch64"></a>
|
|
<p>GAS implements all the standard AArch64 opcodes. It also
|
|
implements several pseudo opcodes, including several synthetic load
|
|
instructions.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-LDR-reg_002c_003d_003cexpr_003e-pseudo-op_002c-AArch64"></a>
|
|
</dd>
|
|
<dt><code>LDR =</code></dt>
|
|
<dd><div class="smallexample">
|
|
<pre class="smallexample"> ldr <register> , =<expression>
|
|
</pre></div>
|
|
|
|
<p>The constant expression will be placed into the nearest literal pool (if it not
|
|
already there) and a PC-relative LDR instruction will be generated.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For more information on the AArch64 instruction set and assembly language
|
|
notation, see ‘<samp>ARMv8 Instruction Set Overview</samp>’ available at
|
|
<a href="http://infocenter.arm.com">http://infocenter.arm.com</a>.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="AArch64-Mapping-Symbols"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#AArch64-Opcodes" accesskey="p" rel="previous">AArch64 Opcodes</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Mapping-Symbols"></a>
|
|
<h4 class="subsection">9.1.7 Mapping Symbols</h4>
|
|
|
|
<p>The AArch64 ELF specification requires that special symbols be inserted
|
|
into object files to mark certain features:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_0024x"></a>
|
|
</dd>
|
|
<dt><code>$x</code></dt>
|
|
<dd><p>At the start of a region of code containing AArch64 instructions.
|
|
</p>
|
|
<a name="index-_0024d"></a>
|
|
</dd>
|
|
<dt><code>$d</code></dt>
|
|
<dd><p>At the start of a region of data.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
<hr>
|
|
<a name="Alpha_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARC_002dDependent" accesskey="n" rel="next">ARC-Dependent</a>, Previous: <a href="#AArch64_002dDependent" accesskey="p" rel="previous">AArch64-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Alpha-Dependent-Features"></a>
|
|
<h3 class="section">9.2 Alpha Dependent Features</h3>
|
|
|
|
|
|
<a name="index-Alpha-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Alpha-Notes" accesskey="1">Alpha Notes</a>:</td><td> </td><td align="left" valign="top">Notes
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Alpha-Options" accesskey="2">Alpha Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Alpha-Syntax" accesskey="3">Alpha Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Alpha-Floating-Point" accesskey="4">Alpha Floating Point</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Alpha-Directives" accesskey="5">Alpha Directives</a>:</td><td> </td><td align="left" valign="top">Alpha Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Alpha-Opcodes" accesskey="6">Alpha Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Alpha-Notes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Alpha-Options" accesskey="n" rel="next">Alpha Options</a>, Up: <a href="#Alpha_002dDependent" accesskey="u" rel="up">Alpha-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Notes"></a>
|
|
<h4 class="subsection">9.2.1 Notes</h4>
|
|
<a name="index-Alpha-notes"></a>
|
|
<a name="index-notes-for-Alpha"></a>
|
|
|
|
<p>The documentation here is primarily for the ELF object format.
|
|
<code>as</code> also supports the ECOFF and EVAX formats, but
|
|
features specific to these formats are not yet documented.
|
|
</p>
|
|
<hr>
|
|
<a name="Alpha-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Alpha-Syntax" accesskey="n" rel="next">Alpha Syntax</a>, Previous: <a href="#Alpha-Notes" accesskey="p" rel="previous">Alpha Notes</a>, Up: <a href="#Alpha_002dDependent" accesskey="u" rel="up">Alpha-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-1"></a>
|
|
<h4 class="subsection">9.2.2 Options</h4>
|
|
<a name="index-Alpha-options"></a>
|
|
<a name="index-options-for-Alpha"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dmcpu-command_002dline-option_002c-Alpha"></a>
|
|
</dd>
|
|
<dt><code>-m<var>cpu</var></code></dt>
|
|
<dd><p>This option specifies the target processor. If an attempt is made to
|
|
assemble an instruction which will not execute on the target processor,
|
|
the assembler may either expand the instruction as a macro or issue an
|
|
error message. This option is equivalent to the <code>.arch</code> directive.
|
|
</p>
|
|
<p>The following processor names are recognized:
|
|
<code>21064</code>,
|
|
<code>21064a</code>,
|
|
<code>21066</code>,
|
|
<code>21068</code>,
|
|
<code>21164</code>,
|
|
<code>21164a</code>,
|
|
<code>21164pc</code>,
|
|
<code>21264</code>,
|
|
<code>21264a</code>,
|
|
<code>21264b</code>,
|
|
<code>ev4</code>,
|
|
<code>ev5</code>,
|
|
<code>lca45</code>,
|
|
<code>ev5</code>,
|
|
<code>ev56</code>,
|
|
<code>pca56</code>,
|
|
<code>ev6</code>,
|
|
<code>ev67</code>,
|
|
<code>ev68</code>.
|
|
The special name <code>all</code> may be used to allow the assembler to accept
|
|
instructions valid for any Alpha processor.
|
|
</p>
|
|
<p>In order to support existing practice in OSF/1 with respect to <code>.arch</code>,
|
|
and existing practice within <code>MILO</code> (the Linux ARC bootloader), the
|
|
numbered processor names (e.g. 21064) enable the processor-specific PALcode
|
|
instructions, while the “electro-vlasic” names (e.g. <code>ev4</code>) do not.
|
|
</p>
|
|
<a name="index-_002dmdebug-command_002dline-option_002c-Alpha"></a>
|
|
<a name="index-_002dno_002dmdebug-command_002dline-option_002c-Alpha"></a>
|
|
</dd>
|
|
<dt><code>-mdebug</code></dt>
|
|
<dt><code>-no-mdebug</code></dt>
|
|
<dd><p>Enables or disables the generation of <code>.mdebug</code> encapsulation for
|
|
stabs directives and procedure descriptors. The default is to automatically
|
|
enable <code>.mdebug</code> when the first stabs directive is seen.
|
|
</p>
|
|
<a name="index-_002drelax-command_002dline-option_002c-Alpha"></a>
|
|
</dd>
|
|
<dt><code>-relax</code></dt>
|
|
<dd><p>This option forces all relocations to be put into the object file, instead
|
|
of saving space and resolving some relocations at assembly time. Note that
|
|
this option does not propagate all symbol arithmetic into the object file,
|
|
because not all symbol arithmetic can be represented. However, the option
|
|
can still be useful in specific applications.
|
|
</p>
|
|
<a name="index-_002dreplace-command_002dline-option_002c-Alpha"></a>
|
|
<a name="index-_002dnoreplace-command_002dline-option_002c-Alpha"></a>
|
|
</dd>
|
|
<dt><code>-replace</code></dt>
|
|
<dt><code>-noreplace</code></dt>
|
|
<dd><p>Enables or disables the optimization of procedure calls, both at assemblage
|
|
and at link time. These options are only available for VMS targets and
|
|
<code>-replace</code> is the default. See section 1.4.1 of the OpenVMS Linker
|
|
Utility Manual.
|
|
</p>
|
|
<a name="index-_002dg-command_002dline-option_002c-Alpha"></a>
|
|
</dd>
|
|
<dt><code>-g</code></dt>
|
|
<dd><p>This option is used when the compiler generates debug information. When
|
|
<code>gcc</code> is using <code>mips-tfile</code> to generate debug
|
|
information for ECOFF, local labels must be passed through to the object
|
|
file. Otherwise this option has no effect.
|
|
</p>
|
|
<a name="index-_002dG-command_002dline-option_002c-Alpha"></a>
|
|
</dd>
|
|
<dt><code>-G<var>size</var></code></dt>
|
|
<dd><p>A local common symbol larger than <var>size</var> is placed in <code>.bss</code>,
|
|
while smaller symbols are placed in <code>.sbss</code>.
|
|
</p>
|
|
<a name="index-_002dF-command_002dline-option_002c-Alpha"></a>
|
|
<a name="index-_002d32addr-command_002dline-option_002c-Alpha"></a>
|
|
</dd>
|
|
<dt><code>-F</code></dt>
|
|
<dt><code>-32addr</code></dt>
|
|
<dd><p>These options are ignored for backward compatibility.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="index-Alpha-Syntax"></a>
|
|
<hr>
|
|
<a name="Alpha-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Alpha-Floating-Point" accesskey="n" rel="next">Alpha Floating Point</a>, Previous: <a href="#Alpha-Options" accesskey="p" rel="previous">Alpha Options</a>, Up: <a href="#Alpha_002dDependent" accesskey="u" rel="up">Alpha-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-3"></a>
|
|
<h4 class="subsection">9.2.3 Syntax</h4>
|
|
<p>The assembler syntax closely follow the Alpha Reference Manual;
|
|
assembler directives and general syntax closely follow the OSF/1 and
|
|
OpenVMS syntax, with a few differences for ELF.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Alpha_002dChars" accesskey="1">Alpha-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Alpha_002dRegs" accesskey="2">Alpha-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Alpha_002dRelocs" accesskey="3">Alpha-Relocs</a>:</td><td> </td><td align="left" valign="top">Relocations
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Alpha_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Alpha_002dRegs" accesskey="n" rel="next">Alpha-Regs</a>, Up: <a href="#Alpha-Syntax" accesskey="u" rel="up">Alpha Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-1"></a>
|
|
<h4 class="subsubsection">9.2.3.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-Alpha"></a>
|
|
<a name="index-Alpha-line-comment-character"></a>
|
|
<p>‘<samp>#</samp>’ is the line comment character. Note that if ‘<samp>#</samp>’ is the
|
|
first character on a line then it can also be a logical line number
|
|
directive (see <a href="#Comments">Comments</a>) or a preprocessor control
|
|
command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-Alpha"></a>
|
|
<a name="index-statement-separator_002c-Alpha"></a>
|
|
<a name="index-Alpha-line-separator"></a>
|
|
<p>‘<samp>;</samp>’ can be used instead of a newline to separate statements.
|
|
</p>
|
|
<hr>
|
|
<a name="Alpha_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Alpha_002dRelocs" accesskey="n" rel="next">Alpha-Relocs</a>, Previous: <a href="#Alpha_002dChars" accesskey="p" rel="previous">Alpha-Chars</a>, Up: <a href="#Alpha-Syntax" accesskey="u" rel="up">Alpha Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-1"></a>
|
|
<h4 class="subsubsection">9.2.3.2 Register Names</h4>
|
|
<a name="index-Alpha-registers"></a>
|
|
<a name="index-register-names_002c-Alpha"></a>
|
|
|
|
<p>The 32 integer registers are referred to as ‘<samp>$<var>n</var></samp>’ or
|
|
‘<samp>$r<var>n</var></samp>’. In addition, registers 15, 28, 29, and 30 may
|
|
be referred to by the symbols ‘<samp>$fp</samp>’, ‘<samp>$at</samp>’, ‘<samp>$gp</samp>’,
|
|
and ‘<samp>$sp</samp>’ respectively.
|
|
</p>
|
|
<p>The 32 floating-point registers are referred to as ‘<samp>$f<var>n</var></samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="Alpha_002dRelocs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Alpha_002dRegs" accesskey="p" rel="previous">Alpha-Regs</a>, Up: <a href="#Alpha-Syntax" accesskey="u" rel="up">Alpha Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Relocations-1"></a>
|
|
<h4 class="subsubsection">9.2.3.3 Relocations</h4>
|
|
<a name="index-Alpha-relocations"></a>
|
|
<a name="index-relocations_002c-Alpha"></a>
|
|
|
|
<p>Some of these relocations are available for ECOFF, but mostly
|
|
only for ELF. They are modeled after the relocation format
|
|
introduced in Digital Unix 4.0, but there are additions.
|
|
</p>
|
|
<p>The format is ‘<samp>!<var>tag</var></samp>’ or ‘<samp>!<var>tag</var>!<var>number</var></samp>’
|
|
where <var>tag</var> is the name of the relocation. In some cases
|
|
<var>number</var> is used to relate specific instructions.
|
|
</p>
|
|
<p>The relocation is placed at the end of the instruction like so:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">ldah $0,a($29) !gprelhigh
|
|
lda $0,a($0) !gprellow
|
|
ldq $1,b($29) !literal!100
|
|
ldl $2,0($1) !lituse_base!100
|
|
</pre></div>
|
|
|
|
<dl compact="compact">
|
|
<dt><code>!literal</code></dt>
|
|
<dt><code>!literal!<var>N</var></code></dt>
|
|
<dd><p>Used with an <code>ldq</code> instruction to load the address of a symbol
|
|
from the GOT.
|
|
</p>
|
|
<p>A sequence number <var>N</var> is optional, and if present is used to pair
|
|
<code>lituse</code> relocations with this <code>literal</code> relocation. The
|
|
<code>lituse</code> relocations are used by the linker to optimize the code
|
|
based on the final location of the symbol.
|
|
</p>
|
|
<p>Note that these optimizations are dependent on the data flow of the
|
|
program. Therefore, if <em>any</em> <code>lituse</code> is paired with a
|
|
<code>literal</code> relocation, then <em>all</em> uses of the register set by
|
|
the <code>literal</code> instruction must also be marked with <code>lituse</code>
|
|
relocations. This is because the original <code>literal</code> instruction
|
|
may be deleted or transformed into another instruction.
|
|
</p>
|
|
<p>Also note that there may be a one-to-many relationship between
|
|
<code>literal</code> and <code>lituse</code>, but not a many-to-one. That is, if
|
|
there are two code paths that load up the same address and feed the
|
|
value to a single use, then the use may not use a <code>lituse</code>
|
|
relocation.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!lituse_base!<var>N</var></code></dt>
|
|
<dd><p>Used with any memory format instruction (e.g. <code>ldl</code>) to indicate
|
|
that the literal is used for an address load. The offset field of the
|
|
instruction must be zero. During relaxation, the code may be altered
|
|
to use a gp-relative load.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!lituse_jsr!<var>N</var></code></dt>
|
|
<dd><p>Used with a register branch format instruction (e.g. <code>jsr</code>) to
|
|
indicate that the literal is used for a call. During relaxation, the
|
|
code may be altered to use a direct branch (e.g. <code>bsr</code>).
|
|
</p>
|
|
</dd>
|
|
<dt><code>!lituse_jsrdirect!<var>N</var></code></dt>
|
|
<dd><p>Similar to <code>lituse_jsr</code>, but also that this call cannot be vectored
|
|
through a PLT entry. This is useful for functions with special calling
|
|
conventions which do not allow the normal call-clobbered registers to be
|
|
clobbered.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!lituse_bytoff!<var>N</var></code></dt>
|
|
<dd><p>Used with a byte mask instruction (e.g. <code>extbl</code>) to indicate
|
|
that only the low 3 bits of the address are relevant. During relaxation,
|
|
the code may be altered to use an immediate instead of a register shift.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!lituse_addr!<var>N</var></code></dt>
|
|
<dd><p>Used with any other instruction to indicate that the original address
|
|
is in fact used, and the original <code>ldq</code> instruction may not be
|
|
altered or deleted. This is useful in conjunction with <code>lituse_jsr</code>
|
|
to test whether a weak symbol is defined.
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">ldq $27,foo($29) !literal!1
|
|
beq $27,is_undef !lituse_addr!1
|
|
jsr $26,($27),foo !lituse_jsr!1
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>!lituse_tlsgd!<var>N</var></code></dt>
|
|
<dd><p>Used with a register branch format instruction to indicate that the
|
|
literal is the call to <code>__tls_get_addr</code> used to compute the
|
|
address of the thread-local storage variable whose descriptor was
|
|
loaded with <code>!tlsgd!<var>N</var></code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!lituse_tlsldm!<var>N</var></code></dt>
|
|
<dd><p>Used with a register branch format instruction to indicate that the
|
|
literal is the call to <code>__tls_get_addr</code> used to compute the
|
|
address of the base of the thread-local storage block for the current
|
|
module. The descriptor for the module must have been loaded with
|
|
<code>!tlsldm!<var>N</var></code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!gpdisp!<var>N</var></code></dt>
|
|
<dd><p>Used with <code>ldah</code> and <code>lda</code> to load the GP from the current
|
|
address, a-la the <code>ldgp</code> macro. The source register for the
|
|
<code>ldah</code> instruction must contain the address of the <code>ldah</code>
|
|
instruction. There must be exactly one <code>lda</code> instruction paired
|
|
with the <code>ldah</code> instruction, though it may appear anywhere in
|
|
the instruction stream. The immediate operands must be zero.
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">bsr $26,foo
|
|
ldah $29,0($26) !gpdisp!1
|
|
lda $29,0($29) !gpdisp!1
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>!gprelhigh</code></dt>
|
|
<dd><p>Used with an <code>ldah</code> instruction to add the high 16 bits of a
|
|
32-bit displacement from the GP.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!gprellow</code></dt>
|
|
<dd><p>Used with any memory format instruction to add the low 16 bits of a
|
|
32-bit displacement from the GP.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!gprel</code></dt>
|
|
<dd><p>Used with any memory format instruction to add a 16-bit displacement
|
|
from the GP.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!samegp</code></dt>
|
|
<dd><p>Used with any branch format instruction to skip the GP load at the
|
|
target address. The referenced symbol must have the same GP as the
|
|
source object file, and it must be declared to either not use <code>$27</code>
|
|
or perform a standard GP load in the first two instructions via the
|
|
<code>.prologue</code> directive.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!tlsgd</code></dt>
|
|
<dt><code>!tlsgd!<var>N</var></code></dt>
|
|
<dd><p>Used with an <code>lda</code> instruction to load the address of a TLS
|
|
descriptor for a symbol in the GOT.
|
|
</p>
|
|
<p>The sequence number <var>N</var> is optional, and if present it used to
|
|
pair the descriptor load with both the <code>literal</code> loading the
|
|
address of the <code>__tls_get_addr</code> function and the <code>lituse_tlsgd</code>
|
|
marking the call to that function.
|
|
</p>
|
|
<p>For proper relaxation, both the <code>tlsgd</code>, <code>literal</code> and
|
|
<code>lituse</code> relocations must be in the same extended basic block.
|
|
That is, the relocation with the lowest address must be executed
|
|
first at runtime.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!tlsldm</code></dt>
|
|
<dt><code>!tlsldm!<var>N</var></code></dt>
|
|
<dd><p>Used with an <code>lda</code> instruction to load the address of a TLS
|
|
descriptor for the current module in the GOT.
|
|
</p>
|
|
<p>Similar in other respects to <code>tlsgd</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!gotdtprel</code></dt>
|
|
<dd><p>Used with an <code>ldq</code> instruction to load the offset of the TLS
|
|
symbol within its module’s thread-local storage block. Also known
|
|
as the dynamic thread pointer offset or dtp-relative offset.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!dtprelhi</code></dt>
|
|
<dt><code>!dtprello</code></dt>
|
|
<dt><code>!dtprel</code></dt>
|
|
<dd><p>Like <code>gprel</code> relocations except they compute dtp-relative offsets.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!gottprel</code></dt>
|
|
<dd><p>Used with an <code>ldq</code> instruction to load the offset of the TLS
|
|
symbol from the thread pointer. Also known as the tp-relative offset.
|
|
</p>
|
|
</dd>
|
|
<dt><code>!tprelhi</code></dt>
|
|
<dt><code>!tprello</code></dt>
|
|
<dt><code>!tprel</code></dt>
|
|
<dd><p>Like <code>gprel</code> relocations except they compute tp-relative offsets.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Alpha-Floating-Point"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Alpha-Directives" accesskey="n" rel="next">Alpha Directives</a>, Previous: <a href="#Alpha-Syntax" accesskey="p" rel="previous">Alpha Syntax</a>, Up: <a href="#Alpha_002dDependent" accesskey="u" rel="up">Alpha-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-1"></a>
|
|
<h4 class="subsection">9.2.4 Floating Point</h4>
|
|
<a name="index-floating-point_002c-Alpha-_0028IEEE_0029"></a>
|
|
<a name="index-Alpha-floating-point-_0028IEEE_0029"></a>
|
|
<p>The Alpha family uses both <small>IEEE</small> and VAX floating-point numbers.
|
|
</p>
|
|
<hr>
|
|
<a name="Alpha-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Alpha-Opcodes" accesskey="n" rel="next">Alpha Opcodes</a>, Previous: <a href="#Alpha-Floating-Point" accesskey="p" rel="previous">Alpha Floating Point</a>, Up: <a href="#Alpha_002dDependent" accesskey="u" rel="up">Alpha-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Alpha-Assembler-Directives"></a>
|
|
<h4 class="subsection">9.2.5 Alpha Assembler Directives</h4>
|
|
|
|
<p><code>as</code> for the Alpha supports many additional directives for
|
|
compatibility with the native assembler. This section describes them only
|
|
briefly.
|
|
</p>
|
|
<a name="index-Alpha_002donly-directives"></a>
|
|
<p>These are the additional directives in <code>as</code> for the Alpha:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>.arch <var>cpu</var></code></dt>
|
|
<dd><p>Specifies the target processor. This is equivalent to the
|
|
<samp>-m<var>cpu</var></samp> command-line option. See <a href="#Alpha-Options">Options</a>,
|
|
for a list of values for <var>cpu</var>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.ent <var>function</var>[, <var>n</var>]</code></dt>
|
|
<dd><p>Mark the beginning of <var>function</var>. An optional number may follow for
|
|
compatibility with the OSF/1 assembler, but is ignored. When generating
|
|
<code>.mdebug</code> information, this will create a procedure descriptor for
|
|
the function. In ELF, it will mark the symbol as a function a-la the
|
|
generic <code>.type</code> directive.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.end <var>function</var></code></dt>
|
|
<dd><p>Mark the end of <var>function</var>. In ELF, it will set the size of the symbol
|
|
a-la the generic <code>.size</code> directive.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.mask <var>mask</var>, <var>offset</var></code></dt>
|
|
<dd><p>Indicate which of the integer registers are saved in the current
|
|
function’s stack frame. <var>mask</var> is interpreted a bit mask in which
|
|
bit <var>n</var> set indicates that register <var>n</var> is saved. The registers
|
|
are saved in a block located <var>offset</var> bytes from the <em>canonical
|
|
frame address</em> (CFA) which is the value of the stack pointer on entry to
|
|
the function. The registers are saved sequentially, except that the
|
|
return address register (normally <code>$26</code>) is saved first.
|
|
</p>
|
|
<p>This and the other directives that describe the stack frame are
|
|
currently only used when generating <code>.mdebug</code> information. They
|
|
may in the future be used to generate DWARF2 <code>.debug_frame</code> unwind
|
|
information for hand written assembly.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.fmask <var>mask</var>, <var>offset</var></code></dt>
|
|
<dd><p>Indicate which of the floating-point registers are saved in the current
|
|
stack frame. The <var>mask</var> and <var>offset</var> parameters are interpreted
|
|
as with <code>.mask</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.frame <var>framereg</var>, <var>frameoffset</var>, <var>retreg</var>[, <var>argoffset</var>]</code></dt>
|
|
<dd><p>Describes the shape of the stack frame. The frame pointer in use is
|
|
<var>framereg</var>; normally this is either <code>$fp</code> or <code>$sp</code>. The
|
|
frame pointer is <var>frameoffset</var> bytes below the CFA. The return
|
|
address is initially located in <var>retreg</var> until it is saved as
|
|
indicated in <code>.mask</code>. For compatibility with OSF/1 an optional
|
|
<var>argoffset</var> parameter is accepted and ignored. It is believed to
|
|
indicate the offset from the CFA to the saved argument registers.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.prologue <var>n</var></code></dt>
|
|
<dd><p>Indicate that the stack frame is set up and all registers have been
|
|
spilled. The argument <var>n</var> indicates whether and how the function
|
|
uses the incoming <em>procedure vector</em> (the address of the called
|
|
function) in <code>$27</code>. 0 indicates that <code>$27</code> is not used; 1
|
|
indicates that the first two instructions of the function use <code>$27</code>
|
|
to perform a load of the GP register; 2 indicates that <code>$27</code> is
|
|
used in some non-standard way and so the linker cannot elide the load of
|
|
the procedure vector during relaxation.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.usepv <var>function</var>, <var>which</var></code></dt>
|
|
<dd><p>Used to indicate the use of the <code>$27</code> register, similar to
|
|
<code>.prologue</code>, but without the other semantics of needing to
|
|
be inside an open <code>.ent</code>/<code>.end</code> block.
|
|
</p>
|
|
<p>The <var>which</var> argument should be either <code>no</code>, indicating that
|
|
<code>$27</code> is not used, or <code>std</code>, indicating that the first two
|
|
instructions of the function perform a GP load.
|
|
</p>
|
|
<p>One might use this directive instead of <code>.prologue</code> if you are
|
|
also using dwarf2 CFI directives.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.gprel32 <var>expression</var></code></dt>
|
|
<dd><p>Computes the difference between the address in <var>expression</var> and the
|
|
GP for the current object file, and stores it in 4 bytes. In addition
|
|
to being smaller than a full 8 byte address, this also does not require
|
|
a dynamic relocation when used in a shared library.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.t_floating <var>expression</var></code></dt>
|
|
<dd><p>Stores <var>expression</var> as an <small>IEEE</small> double precision value.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.s_floating <var>expression</var></code></dt>
|
|
<dd><p>Stores <var>expression</var> as an <small>IEEE</small> single precision value.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.f_floating <var>expression</var></code></dt>
|
|
<dd><p>Stores <var>expression</var> as a VAX F format value.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.g_floating <var>expression</var></code></dt>
|
|
<dd><p>Stores <var>expression</var> as a VAX G format value.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.d_floating <var>expression</var></code></dt>
|
|
<dd><p>Stores <var>expression</var> as a VAX D format value.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.set <var>feature</var></code></dt>
|
|
<dd><p>Enables or disables various assembler features. Using the positive
|
|
name of the feature enables while using ‘<samp>no<var>feature</var></samp>’ disables.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>at</code></dt>
|
|
<dd><p>Indicates that macro expansions may clobber the <em>assembler
|
|
temporary</em> (<code>$at</code> or <code>$28</code>) register. Some macros may not be
|
|
expanded without this and will generate an error message if <code>noat</code>
|
|
is in effect. When <code>at</code> is in effect, a warning will be generated
|
|
if <code>$at</code> is used by the programmer.
|
|
</p>
|
|
</dd>
|
|
<dt><code>macro</code></dt>
|
|
<dd><p>Enables the expansion of macro instructions. Note that variants of real
|
|
instructions, such as <code>br label</code> vs <code>br $31,label</code> are
|
|
considered alternate forms and not macros.
|
|
</p>
|
|
</dd>
|
|
<dt><code>move</code></dt>
|
|
<dt><code>reorder</code></dt>
|
|
<dt><code>volatile</code></dt>
|
|
<dd><p>These control whether and how the assembler may re-order instructions.
|
|
Accepted for compatibility with the OSF/1 assembler, but <code>as</code>
|
|
does not do instruction scheduling, so these features are ignored.
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The following directives are recognized for compatibility with the OSF/1
|
|
assembler but are ignored.
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">.proc .aproc
|
|
.reguse .livereg
|
|
.option .aent
|
|
.ugen .eflag
|
|
.alias .noalias
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="Alpha-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Alpha-Directives" accesskey="p" rel="previous">Alpha Directives</a>, Up: <a href="#Alpha_002dDependent" accesskey="u" rel="up">Alpha-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-1"></a>
|
|
<h4 class="subsection">9.2.6 Opcodes</h4>
|
|
<p>For detailed information on the Alpha machine instruction set, see the
|
|
<a href="ftp://ftp.digital.com/pub/Digital/info/semiconductor/literature/alphaahb.pdf">Alpha Architecture Handbook</a>.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="ARC_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARM_002dDependent" accesskey="n" rel="next">ARM-Dependent</a>, Previous: <a href="#Alpha_002dDependent" accesskey="p" rel="previous">Alpha-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="ARC-Dependent-Features"></a>
|
|
<h3 class="section">9.3 ARC Dependent Features</h3>
|
|
|
|
|
|
|
|
<a name="index-ARC-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#ARC-Options" accesskey="1">ARC Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARC-Syntax" accesskey="2">ARC Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARC-Directives" accesskey="3">ARC Directives</a>:</td><td> </td><td align="left" valign="top">ARC Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARC-Modifiers" accesskey="4">ARC Modifiers</a>:</td><td> </td><td align="left" valign="top">ARC Assembler Modifiers
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARC-Symbols" accesskey="5">ARC Symbols</a>:</td><td> </td><td align="left" valign="top">ARC Pre-defined Symbols
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARC-Opcodes" accesskey="6">ARC Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="ARC-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARC-Syntax" accesskey="n" rel="next">ARC Syntax</a>, Up: <a href="#ARC_002dDependent" accesskey="u" rel="up">ARC-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-2"></a>
|
|
<h4 class="subsection">9.3.1 Options</h4>
|
|
<a name="index-ARC-options"></a>
|
|
<a name="index-options-for-ARC"></a>
|
|
|
|
<p>The following options control the type of CPU for which code is
|
|
assembled, and generic constraints on the code generated:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-mcpu=<var>cpu</var></code></dt>
|
|
<dd><a name="index-_002dmcpu_003dcpu-command_002dline-option_002c-ARC"></a>
|
|
<p>Set architecture type and register usage for <var>cpu</var>. There are
|
|
also shortcut alias options available for backward compatibility and
|
|
convenience. Supported values for <var>cpu</var> are
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-mA6-command_002dline-option_002c-ARC"></a>
|
|
<a name="index-marc600-command_002dline-option_002c-ARC"></a>
|
|
</dd>
|
|
<dt><code>arc600</code></dt>
|
|
<dd><p>Assemble for ARC 600. Aliases: <code>-mA6</code>, <code>-mARC600</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc600_norm</code></dt>
|
|
<dd><p>Assemble for ARC 600 with norm instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc600_mul64</code></dt>
|
|
<dd><p>Assemble for ARC 600 with mul64 instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc600_mul32x16</code></dt>
|
|
<dd><p>Assemble for ARC 600 with mul32x16 instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc601</code></dt>
|
|
<dd><a name="index-mARC601-command_002dline-option_002c-ARC"></a>
|
|
<p>Assemble for ARC 601. Alias: <code>-mARC601</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc601_norm</code></dt>
|
|
<dd><p>Assemble for ARC 601 with norm instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc601_mul64</code></dt>
|
|
<dd><p>Assemble for ARC 601 with mul64 instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc601_mul32x16</code></dt>
|
|
<dd><p>Assemble for ARC 601 with mul32x16 instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc700</code></dt>
|
|
<dd><a name="index-mA7-command_002dline-option_002c-ARC"></a>
|
|
<a name="index-mARC700-command_002dline-option_002c-ARC"></a>
|
|
<p>Assemble for ARC 700. Aliases: <code>-mA7</code>, <code>-mARC700</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arcem</code></dt>
|
|
<dd><a name="index-mEM-command_002dline-option_002c-ARC"></a>
|
|
<p>Assemble for ARC EM. Aliases: <code>-mEM</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>em</code></dt>
|
|
<dd><p>Assemble for ARC EM, identical as arcem variant.
|
|
</p>
|
|
</dd>
|
|
<dt><code>em4</code></dt>
|
|
<dd><p>Assemble for ARC EM with code-density instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>em4_dmips</code></dt>
|
|
<dd><p>Assemble for ARC EM with code-density instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>em4_fpus</code></dt>
|
|
<dd><p>Assemble for ARC EM with code-density instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>em4_fpuda</code></dt>
|
|
<dd><p>Assemble for ARC EM with code-density, and double-precision assist
|
|
instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>quarkse_em</code></dt>
|
|
<dd><p>Assemble for QuarkSE-EM cpu.
|
|
</p>
|
|
</dd>
|
|
<dt><code>archs</code></dt>
|
|
<dd><a name="index-mHS-command_002dline-option_002c-ARC"></a>
|
|
<p>Assemble for ARC HS. Aliases: <code>-mHS</code>, <code>-mav2hs</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hs</code></dt>
|
|
<dd><p>Assemble for ARC HS.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hs34</code></dt>
|
|
<dd><p>Assemble for ARC HS34.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hs38</code></dt>
|
|
<dd><p>Assemble for ARC HS38.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hs38_linux</code></dt>
|
|
<dd><p>Assemble for ARC HS38 with floating point support on.
|
|
</p>
|
|
</dd>
|
|
<dt><code>nps400</code></dt>
|
|
<dd><a name="index-mnps400-command_002dline-option_002c-ARC"></a>
|
|
<p>Assemble for ARC 700 with NPS-400 extended instructions.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Note: the <code>.cpu</code> directive (see <a href="#ARC-Directives">ARC Directives</a>) can
|
|
to be used to select a core variant from within assembly code.
|
|
</p>
|
|
<a name="index-_002dEB-command_002dline-option_002c-ARC"></a>
|
|
</dd>
|
|
<dt><code>-EB</code></dt>
|
|
<dd><p>This option specifies that the output generated by the assembler should
|
|
be marked as being encoded for a big-endian processor.
|
|
</p>
|
|
<a name="index-_002dEL-command_002dline-option_002c-ARC"></a>
|
|
</dd>
|
|
<dt><code>-EL</code></dt>
|
|
<dd><p>This option specifies that the output generated by the assembler should
|
|
be marked as being encoded for a little-endian processor - this is the
|
|
default.
|
|
</p>
|
|
<a name="index-_002dmcode_002ddensity-command_002dline-option_002c-ARC"></a>
|
|
</dd>
|
|
<dt><code>-mcode-density</code></dt>
|
|
<dd><p>This option turns on Code Density instructions. Only valid for ARC EM
|
|
processors.
|
|
</p>
|
|
<a name="index-_002dmrelax-command_002dline-option_002c-ARC"></a>
|
|
</dd>
|
|
<dt><code>-mrelax</code></dt>
|
|
<dd><p>Enable support for assembly-time relaxation. The assembler will
|
|
replace a longer version of an instruction with a shorter one,
|
|
whenever it is possible.
|
|
</p>
|
|
<a name="index-_002dmnps400-command_002dline-option_002c-ARC"></a>
|
|
</dd>
|
|
<dt><code>-mnps400</code></dt>
|
|
<dd><p>Enable support for NPS-400 extended instructions.
|
|
</p>
|
|
<a name="index-_002dmspfp-command_002dline-option_002c-ARC"></a>
|
|
</dd>
|
|
<dt><code>-mspfp</code></dt>
|
|
<dd><p>Enable support for single-precision floating point instructions.
|
|
</p>
|
|
<a name="index-_002dmdpfp-command_002dline-option_002c-ARC"></a>
|
|
</dd>
|
|
<dt><code>-mdpfp</code></dt>
|
|
<dd><p>Enable support for double-precision floating point instructions.
|
|
</p>
|
|
<a name="index-_002dmfpuda-command_002dline-option_002c-ARC"></a>
|
|
</dd>
|
|
<dt><code>-mfpuda</code></dt>
|
|
<dd><p>Enable support for double-precision assist floating point instructions.
|
|
Only valid for ARC EM processors.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="ARC-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARC-Directives" accesskey="n" rel="next">ARC Directives</a>, Previous: <a href="#ARC-Options" accesskey="p" rel="previous">ARC Options</a>, Up: <a href="#ARC_002dDependent" accesskey="u" rel="up">ARC-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-4"></a>
|
|
<h4 class="subsection">9.3.2 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#ARC_002dChars" accesskey="1">ARC-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARC_002dRegs" accesskey="2">ARC-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="ARC_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARC_002dRegs" accesskey="n" rel="next">ARC-Regs</a>, Up: <a href="#ARC-Syntax" accesskey="u" rel="up">ARC Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-2"></a>
|
|
<h4 class="subsubsection">9.3.2.1 Special Characters</h4>
|
|
|
|
<dl compact="compact">
|
|
<dt><code>%</code></dt>
|
|
<dd><a name="index-register-name-prefix-character_002c-ARC"></a>
|
|
<a name="index-ARC-register-name-prefix-character"></a>
|
|
<p>A register name can optionally be prefixed by a ‘<samp>%</samp>’ character. So
|
|
register <code>%r0</code> is equivalent to <code>r0</code> in the assembly code.
|
|
</p>
|
|
</dd>
|
|
<dt><code>#</code></dt>
|
|
<dd><a name="index-line-comment-character_002c-ARC"></a>
|
|
<a name="index-ARC-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>#</samp>’ character within a line (but not at the
|
|
start of a line) indicates the start of a comment that extends to the
|
|
end of the current line.
|
|
</p>
|
|
<p><em>Note:</em> if a line starts with a ‘<samp>#</samp>’ character then it can
|
|
also be a logical line number directive (see <a href="#Comments">Comments</a>) or a
|
|
preprocessor control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
</dd>
|
|
<dt><code>@</code></dt>
|
|
<dd><a name="index-symbol-prefix-character_002c-ARC"></a>
|
|
<a name="index-ARC-symbol-prefix-character"></a>
|
|
<p>Prefixing an operand with an ‘<samp>@</samp>’ specifies that the operand is a
|
|
symbol and not a register. This is how the assembler disambiguates
|
|
the use of an ARC register name as a symbol. So the instruction
|
|
</p><div class="example">
|
|
<pre class="example">mov r0, @r0
|
|
</pre></div>
|
|
<p>moves the address of symbol <code>r0</code> into register <code>r0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>`</code></dt>
|
|
<dd><a name="index-line-separator_002c-ARC"></a>
|
|
<a name="index-statement-separator_002c-ARC"></a>
|
|
<a name="index-ARC-line-separator"></a>
|
|
<p>The ‘<samp>`</samp>’ (backtick) character is used to separate statements on a
|
|
single line.
|
|
</p>
|
|
<a name="index-line"></a>
|
|
</dd>
|
|
<dt><code>-</code></dt>
|
|
<dd><a name="index-C-preprocessor-macro-separator_002c-ARC"></a>
|
|
<a name="index-ARC-C-preprocessor-macro-separator"></a>
|
|
<p>Used as a separator to obtain a sequence of commands from a C
|
|
preprocessor macro.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="ARC_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#ARC_002dChars" accesskey="p" rel="previous">ARC-Chars</a>, Up: <a href="#ARC-Syntax" accesskey="u" rel="up">ARC Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-2"></a>
|
|
<h4 class="subsubsection">9.3.2.2 Register Names</h4>
|
|
|
|
<a name="index-ARC-register-names"></a>
|
|
<a name="index-register-names_002c-ARC"></a>
|
|
<p>The ARC assembler uses the following register names for its core
|
|
registers:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>r0-r31</code></dt>
|
|
<dd><a name="index-core-general-registers_002c-ARC"></a>
|
|
<a name="index-ARC-core-general-registers"></a>
|
|
<p>The core general registers. Registers <code>r26</code> through <code>r31</code>
|
|
have special functions, and are usually referred to by those synonyms.
|
|
</p>
|
|
</dd>
|
|
<dt><code>gp</code></dt>
|
|
<dd><a name="index-global-pointer_002c-ARC"></a>
|
|
<a name="index-ARC-global-pointer"></a>
|
|
<p>The global pointer and a synonym for <code>r26</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>fp</code></dt>
|
|
<dd><a name="index-frame-pointer_002c-ARC"></a>
|
|
<a name="index-ARC-frame-pointer"></a>
|
|
<p>The frame pointer and a synonym for <code>r27</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>sp</code></dt>
|
|
<dd><a name="index-stack-pointer_002c-ARC"></a>
|
|
<a name="index-ARC-stack-pointer"></a>
|
|
<p>The stack pointer and a synonym for <code>r28</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>ilink1</code></dt>
|
|
<dd><a name="index-level-1-interrupt-link-register_002c-ARC"></a>
|
|
<a name="index-ARC-level-1-interrupt-link-register"></a>
|
|
<p>For ARC 600 and ARC 700, the level 1 interrupt link register and a
|
|
synonym for <code>r29</code>. Not supported for ARCv2.
|
|
</p>
|
|
</dd>
|
|
<dt><code>ilink</code></dt>
|
|
<dd><a name="index-interrupt-link-register_002c-ARC"></a>
|
|
<a name="index-ARC-interrupt-link-register"></a>
|
|
<p>For ARCv2, the interrupt link register and a synonym for <code>r29</code>.
|
|
Not supported for ARC 600 and ARC 700.
|
|
</p>
|
|
</dd>
|
|
<dt><code>ilink2</code></dt>
|
|
<dd><a name="index-level-2-interrupt-link-register_002c-ARC"></a>
|
|
<a name="index-ARC-level-2-interrupt-link-register"></a>
|
|
<p>For ARC 600 and ARC 700, the level 2 interrupt link register and a
|
|
synonym for <code>r30</code>. Not supported for ARC v2.
|
|
</p>
|
|
</dd>
|
|
<dt><code>blink</code></dt>
|
|
<dd><a name="index-link-register_002c-ARC"></a>
|
|
<a name="index-ARC-link-register"></a>
|
|
<p>The link register and a synonym for <code>r31</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>r32-r59</code></dt>
|
|
<dd><a name="index-extension-core-registers_002c-ARC"></a>
|
|
<a name="index-ARC-extension-core-registers"></a>
|
|
<p>The extension core registers.
|
|
</p>
|
|
</dd>
|
|
<dt><code>lp_count</code></dt>
|
|
<dd><a name="index-loop-counter_002c-ARC"></a>
|
|
<a name="index-ARC-loop-counter"></a>
|
|
<p>The loop count register.
|
|
</p>
|
|
</dd>
|
|
<dt><code>pcl</code></dt>
|
|
<dd><a name="index-word-aligned-program-counter_002c-ARC"></a>
|
|
<a name="index-ARC-word-aligned-program-counter"></a>
|
|
<p>The word aligned program counter.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>In addition the ARC processor has a large number of <em>auxiliary
|
|
registers</em>. The precise set depends on the extensions being
|
|
supported, but the following baseline set are always defined:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>identity</code></dt>
|
|
<dd><a name="index-Processor-Identification-register_002c-ARC"></a>
|
|
<a name="index-ARC-Processor-Identification-register"></a>
|
|
<p>Processor Identification register. Auxiliary register address 0x4.
|
|
</p>
|
|
</dd>
|
|
<dt><code>pc</code></dt>
|
|
<dd><a name="index-Program-Counter_002c-ARC"></a>
|
|
<a name="index-ARC-Program-Counter"></a>
|
|
<p>Program Counter. Auxiliary register address 0x6.
|
|
</p>
|
|
</dd>
|
|
<dt><code>status32</code></dt>
|
|
<dd><a name="index-Status-register_002c-ARC"></a>
|
|
<a name="index-ARC-Status-register"></a>
|
|
<p>Status register. Auxiliary register address 0x0a.
|
|
</p>
|
|
</dd>
|
|
<dt><code>bta</code></dt>
|
|
<dd><a name="index-Branch-Target-Address_002c-ARC"></a>
|
|
<a name="index-ARC-Branch-Target-Address"></a>
|
|
<p>Branch Target Address. Auxiliary register address 0x412.
|
|
</p>
|
|
</dd>
|
|
<dt><code>ecr</code></dt>
|
|
<dd><a name="index-Exception-Cause-Register_002c-ARC"></a>
|
|
<a name="index-ARC-Exception-Cause-Register"></a>
|
|
<p>Exception Cause Register. Auxiliary register address 0x403.
|
|
</p>
|
|
</dd>
|
|
<dt><code>int_vector_base</code></dt>
|
|
<dd><a name="index-Interrupt-Vector-Base-address_002c-ARC"></a>
|
|
<a name="index-ARC-Interrupt-Vector-Base-address"></a>
|
|
<p>Interrupt Vector Base address. Auxiliary register address 0x25.
|
|
</p>
|
|
</dd>
|
|
<dt><code>status32_p0</code></dt>
|
|
<dd><a name="index-Stored-STATUS32-register-on-entry-to-level-P0-interrupts_002c-ARC"></a>
|
|
<a name="index-ARC-Stored-STATUS32-register-on-entry-to-level-P0-interrupts"></a>
|
|
<p>Stored STATUS32 register on entry to level P0 interrupts. Auxiliary
|
|
register address 0xb.
|
|
</p>
|
|
</dd>
|
|
<dt><code>aux_user_sp</code></dt>
|
|
<dd><a name="index-Saved-User-Stack-Pointer_002c-ARC"></a>
|
|
<a name="index-ARC-Saved-User-Stack-Pointer"></a>
|
|
<p>Saved User Stack Pointer. Auxiliary register address 0xd.
|
|
</p>
|
|
</dd>
|
|
<dt><code>eret</code></dt>
|
|
<dd><a name="index-Exception-Return-Address_002c-ARC"></a>
|
|
<a name="index-ARC-Exception-Return-Address"></a>
|
|
<p>Exception Return Address. Auxiliary register address 0x400.
|
|
</p>
|
|
</dd>
|
|
<dt><code>erbta</code></dt>
|
|
<dd><a name="index-BTA-saved-on-exception-entry_002c-ARC"></a>
|
|
<a name="index-ARC-BTA-saved-on-exception-entry"></a>
|
|
<p>BTA saved on exception entry. Auxiliary register address 0x401.
|
|
</p>
|
|
</dd>
|
|
<dt><code>erstatus</code></dt>
|
|
<dd><a name="index-STATUS32-saved-on-exception_002c-ARC"></a>
|
|
<a name="index-ARC-STATUS32-saved-on-exception"></a>
|
|
<p>STATUS32 saved on exception. Auxiliary register address 0x402.
|
|
</p>
|
|
</dd>
|
|
<dt><code>bcr_ver</code></dt>
|
|
<dd><a name="index-Build-Configuration-Registers-Version_002c-ARC"></a>
|
|
<a name="index-ARC-Build-Configuration-Registers-Version"></a>
|
|
<p>Build Configuration Registers Version. Auxiliary register address 0x60.
|
|
</p>
|
|
</dd>
|
|
<dt><code>bta_link_build</code></dt>
|
|
<dd><a name="index-Build-configuration-for_003a-BTA-Registers_002c-ARC"></a>
|
|
<a name="index-ARC-Build-configuration-for_003a-BTA-Registers"></a>
|
|
<p>Build configuration for: BTA Registers. Auxiliary register address 0x63.
|
|
</p>
|
|
</dd>
|
|
<dt><code>vecbase_ac_build</code></dt>
|
|
<dd><a name="index-Build-configuration-for_003a-Interrupts_002c-ARC"></a>
|
|
<a name="index-ARC-Build-configuration-for_003a-Interrupts"></a>
|
|
<p>Build configuration for: Interrupts. Auxiliary register address 0x68.
|
|
</p>
|
|
</dd>
|
|
<dt><code>rf_build</code></dt>
|
|
<dd><a name="index-Build-configuration-for_003a-Core-Registers_002c-ARC"></a>
|
|
<a name="index-ARC-Build-configuration-for_003a-Core-Registers"></a>
|
|
<p>Build configuration for: Core Registers. Auxiliary register address 0x6e.
|
|
</p>
|
|
</dd>
|
|
<dt><code>dccm_build</code></dt>
|
|
<dd><a name="index-DCCM-RAM-Configuration-Register_002c-ARC"></a>
|
|
<a name="index-ARC-DCCM-RAM-Configuration-Register"></a>
|
|
<p>DCCM RAM Configuration Register. Auxiliary register address 0xc1.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Additional auxiliary register names are defined according to the
|
|
processor architecture version and extensions selected by the options.
|
|
</p>
|
|
<hr>
|
|
<a name="ARC-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARC-Modifiers" accesskey="n" rel="next">ARC Modifiers</a>, Previous: <a href="#ARC-Syntax" accesskey="p" rel="previous">ARC Syntax</a>, Up: <a href="#ARC_002dDependent" accesskey="u" rel="up">ARC-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="ARC-Machine-Directives"></a>
|
|
<h4 class="subsection">9.3.3 ARC Machine Directives</h4>
|
|
|
|
<a name="index-machine-directives_002c-ARC"></a>
|
|
<a name="index-ARC-machine-directives"></a>
|
|
<p>The ARC version of <code>as</code> supports the following additional
|
|
machine directives:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-lcomm-directive-1"></a>
|
|
</dd>
|
|
<dt><code>.lcomm <var>symbol</var>, <var>length</var>[, <var>alignment</var>]</code></dt>
|
|
<dd><p>Reserve <var>length</var> (an absolute expression) bytes for a local common
|
|
denoted by <var>symbol</var>. The section and value of <var>symbol</var> are
|
|
those of the new local common. The addresses are allocated in the bss
|
|
section, so that at run-time the bytes start off zeroed. Since
|
|
<var>symbol</var> is not declared global, it is normally not visible to
|
|
<code>ld</code>. The optional third parameter, <var>alignment</var>,
|
|
specifies the desired alignment of the symbol in the bss section,
|
|
specified as a byte boundary (for example, an alignment of 16 means
|
|
that the least significant 4 bits of the address should be zero). The
|
|
alignment must be an absolute expression, and it must be a power of
|
|
two. If no alignment is specified, as will set the alignment to the
|
|
largest power of two less than or equal to the size of the symbol, up
|
|
to a maximum of 16.
|
|
</p>
|
|
<a name="index-lcommon-directive_002c-ARC"></a>
|
|
</dd>
|
|
<dt><code>.lcommon <var>symbol</var>, <var>length</var>[, <var>alignment</var>]</code></dt>
|
|
<dd><p>The same as <code>lcomm</code> directive.
|
|
</p>
|
|
<a name="index-cpu-directive_002c-ARC"></a>
|
|
</dd>
|
|
<dt><code>.cpu <var>cpu</var></code></dt>
|
|
<dd><p>The <code>.cpu</code> directive must be followed by the desired core
|
|
version. Permitted values for CPU are:
|
|
</p><dl compact="compact">
|
|
<dt><code>ARC600</code></dt>
|
|
<dd><p>Assemble for the ARC600 instruction set.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc600_norm</code></dt>
|
|
<dd><p>Assemble for ARC 600 with norm instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc600_mul64</code></dt>
|
|
<dd><p>Assemble for ARC 600 with mul64 instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc600_mul32x16</code></dt>
|
|
<dd><p>Assemble for ARC 600 with mul32x16 instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc601</code></dt>
|
|
<dd><p>Assemble for ARC 601 instruction set.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc601_norm</code></dt>
|
|
<dd><p>Assemble for ARC 601 with norm instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc601_mul64</code></dt>
|
|
<dd><p>Assemble for ARC 601 with mul64 instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arc601_mul32x16</code></dt>
|
|
<dd><p>Assemble for ARC 601 with mul32x16 instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>ARC700</code></dt>
|
|
<dd><p>Assemble for the ARC700 instruction set.
|
|
</p>
|
|
</dd>
|
|
<dt><code>NPS400</code></dt>
|
|
<dd><p>Assemble for the NPS400 instruction set.
|
|
</p>
|
|
</dd>
|
|
<dt><code>EM</code></dt>
|
|
<dd><p>Assemble for the ARC EM instruction set.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arcem</code></dt>
|
|
<dd><p>Assemble for ARC EM instruction set
|
|
</p>
|
|
</dd>
|
|
<dt><code>em4</code></dt>
|
|
<dd><p>Assemble for ARC EM with code-density instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>em4_dmips</code></dt>
|
|
<dd><p>Assemble for ARC EM with code-density instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>em4_fpus</code></dt>
|
|
<dd><p>Assemble for ARC EM with code-density instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>em4_fpuda</code></dt>
|
|
<dd><p>Assemble for ARC EM with code-density, and double-precision assist
|
|
instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>quarkse_em</code></dt>
|
|
<dd><p>Assemble for QuarkSE-EM instruction set.
|
|
</p>
|
|
</dd>
|
|
<dt><code>HS</code></dt>
|
|
<dd><p>Assemble for the ARC HS instruction set.
|
|
</p>
|
|
</dd>
|
|
<dt><code>archs</code></dt>
|
|
<dd><p>Assemble for ARC HS instruction set.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hs</code></dt>
|
|
<dd><p>Assemble for ARC HS instruction set.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hs34</code></dt>
|
|
<dd><p>Assemble for ARC HS34 instruction set.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hs38</code></dt>
|
|
<dd><p>Assemble for ARC HS38 instruction set.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hs38_linux</code></dt>
|
|
<dd><p>Assemble for ARC HS38 with floating point support on.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Note: the <code>.cpu</code> directive overrides the command-line option
|
|
<code>-mcpu=<var>cpu</var></code>; a warning is emitted when the version is not
|
|
consistent between the two.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.extAuxRegister <var>name</var>, <var>addr</var>, <var>mode</var></code></dt>
|
|
<dd><a name="index-extAuxRegister-directive_002c-ARC"></a>
|
|
<p>Auxiliary registers can be defined in the assembler source code by
|
|
using this directive. The first parameter, <var>name</var>, is the name of the
|
|
new auxiliary register. The second parameter, <var>addr</var>, is
|
|
address the of the auxiliary register. The third parameter,
|
|
<var>mode</var>, specifies whether the register is readable and/or writable
|
|
and is one of:
|
|
</p><dl compact="compact">
|
|
<dt><code>r</code></dt>
|
|
<dd><p>Read only;
|
|
</p>
|
|
</dd>
|
|
<dt><code>w</code></dt>
|
|
<dd><p>Write only;
|
|
</p>
|
|
</dd>
|
|
<dt><code>r|w</code></dt>
|
|
<dd><p>Read and write.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For example:
|
|
</p><div class="example">
|
|
<pre class="example"> .extAuxRegister mulhi, 0x12, w
|
|
</pre></div>
|
|
<p>specifies a write only extension auxiliary register, <var>mulhi</var> at
|
|
address 0x12.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.extCondCode <var>suffix</var>, <var>val</var></code></dt>
|
|
<dd><a name="index-extCondCode-directive_002c-ARC"></a>
|
|
<p>ARC supports extensible condition codes. This directive defines a new
|
|
condition code, to be known by the suffix, <var>suffix</var> and will
|
|
depend on the value, <var>val</var> in the condition code.
|
|
</p>
|
|
<p>For example:
|
|
</p><div class="example">
|
|
<pre class="example"> .extCondCode is_busy,0x14
|
|
add.is_busy r1,r2,r3
|
|
</pre></div>
|
|
<p>will only execute the <code>add</code> instruction if the condition code
|
|
value is 0x14.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.extCoreRegister <var>name</var>, <var>regnum</var>, <var>mode</var>, <var>shortcut</var></code></dt>
|
|
<dd><a name="index-extCoreRegister-directive_002c-ARC"></a>
|
|
<p>Specifies an extension core register named <var>name</var> as a synonym for
|
|
the register numbered <var>regnum</var>. The register number must be
|
|
between 32 and 59. The third argument, <var>mode</var>, indicates whether
|
|
the register is readable and/or writable and is one of:
|
|
</p><dl compact="compact">
|
|
<dt><code>r</code></dt>
|
|
<dd><p>Read only;
|
|
</p>
|
|
</dd>
|
|
<dt><code>w</code></dt>
|
|
<dd><p>Write only;
|
|
</p>
|
|
</dd>
|
|
<dt><code>r|w</code></dt>
|
|
<dd><p>Read and write.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The final parameter, <var>shortcut</var> indicates whether the register has
|
|
a short cut in the pipeline. The valid values are:
|
|
</p><dl compact="compact">
|
|
<dt><code>can_shortcut</code></dt>
|
|
<dd><p>The register has a short cut in the pipeline;
|
|
</p>
|
|
</dd>
|
|
<dt><code>cannot_shortcut</code></dt>
|
|
<dd><p>The register does not have a short cut in the pipeline.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For example:
|
|
</p><div class="example">
|
|
<pre class="example"> .extCoreRegister mlo, 57, r , can_shortcut
|
|
</pre></div>
|
|
<p>defines a read only extension core register, <code>mlo</code>, which is
|
|
register 57, and can short cut the pipeline.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.extInstruction <var>name</var>, <var>opcode</var>, <var>subopcode</var>, <var>suffixclass</var>, <var>syntaxclass</var></code></dt>
|
|
<dd><a name="index-extInstruction-directive_002c-ARC"></a>
|
|
<p>ARC allows the user to specify extension instructions. These
|
|
extension instructions are not macros; the assembler creates encodings
|
|
for use of these instructions according to the specification by the
|
|
user.
|
|
</p>
|
|
<p>The first argument, <var>name</var>, gives the name of the instruction.
|
|
</p>
|
|
<p>The second argument, <var>opcode</var>, is the opcode to be used (bits 31:27
|
|
in the encoding).
|
|
</p>
|
|
<p>The third argument, <var>subopcode</var>, is the sub-opcode to be used, but
|
|
the correct value also depends on the fifth argument,
|
|
<var>syntaxclass</var>
|
|
</p>
|
|
<p>The fourth argument, <var>suffixclass</var>, determines the kinds of
|
|
suffixes to be allowed. Valid values are:
|
|
</p><dl compact="compact">
|
|
<dt><code>SUFFIX_NONE</code></dt>
|
|
<dd><p>No suffixes are permitted;
|
|
</p>
|
|
</dd>
|
|
<dt><code>SUFFIX_COND</code></dt>
|
|
<dd><p>Conditional suffixes are permitted;
|
|
</p>
|
|
</dd>
|
|
<dt><code>SUFFIX_FLAG</code></dt>
|
|
<dd><p>Flag setting suffixes are permitted.
|
|
</p>
|
|
</dd>
|
|
<dt><code>SUFFIX_COND|SUFFIX_FLAG</code></dt>
|
|
<dd><p>Both conditional and flag setting suffices are permitted.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The fifth and final argument, <var>syntaxclass</var>, determines the syntax
|
|
class for the instruction. It can have the following values:
|
|
</p><dl compact="compact">
|
|
<dt><code>SYNTAX_2OP</code></dt>
|
|
<dd><p>Two Operand Instruction;
|
|
</p>
|
|
</dd>
|
|
<dt><code>SYNTAX_3OP</code></dt>
|
|
<dd><p>Three Operand Instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>SYNTAX_1OP</code></dt>
|
|
<dd><p>One Operand Instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>SYNTAX_NOP</code></dt>
|
|
<dd><p>No Operand Instruction.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The syntax class may be followed by ‘<samp>|</samp>’ and one of the following
|
|
modifiers.
|
|
</p><dl compact="compact">
|
|
<dt><code>OP1_MUST_BE_IMM</code></dt>
|
|
<dd><p>Modifies syntax class <code>SYNTAX_3OP</code>, specifying that the first
|
|
operand of a three-operand instruction must be an immediate (i.e., the
|
|
result is discarded). This is usually used to set the flags using
|
|
specific instructions and not retain results.
|
|
</p>
|
|
</dd>
|
|
<dt><code>OP1_IMM_IMPLIED</code></dt>
|
|
<dd><p>Modifies syntax class <code>SYNTAX_20P</code>, specifying that there is an
|
|
implied immediate destination operand which does not appear in the
|
|
syntax.
|
|
</p>
|
|
<p>For example, if the source code contains an instruction like:
|
|
</p><div class="example">
|
|
<pre class="example">inst r1,r2
|
|
</pre></div>
|
|
<p>the first argument is an implied immediate (that is, the result is
|
|
discarded). This is the same as though the source code were: inst
|
|
0,r1,r2.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For example, defining a 64-bit multiplier with immediate operands:
|
|
</p><div class="example">
|
|
<pre class="example"> .extInstruction mp64, 0x07, 0x2d, SUFFIX_COND|SUFFIX_FLAG,
|
|
SYNTAX_3OP|OP1_MUST_BE_IMM
|
|
</pre></div>
|
|
<p>which specifies an extension instruction named <code>mp64</code> with 3
|
|
operands. It sets the flags and can be used with a condition code,
|
|
for which the first operand is an immediate, i.e. equivalent to
|
|
discarding the result of the operation.
|
|
</p>
|
|
<p>A two operands instruction variant would be:
|
|
</p><div class="example">
|
|
<pre class="example"> .extInstruction mul64, 0x07, 0x2d, SUFFIX_COND,
|
|
SYNTAX_2OP|OP1_IMM_IMPLIED
|
|
</pre></div>
|
|
<p>which describes a two operand instruction with an implicit first
|
|
immediate operand. The result of this operation would be discarded.
|
|
</p>
|
|
<a name="index-_002earc_005fattribute-directive_002c-ARC"></a>
|
|
</dd>
|
|
<dt><code>.arc_attribute <var>tag</var>, <var>value</var></code></dt>
|
|
<dd><p>Set the ARC object attribute <var>tag</var> to <var>value</var>.
|
|
</p>
|
|
<p>The <var>tag</var> is either an attribute number, or one of the following:
|
|
<code>Tag_ARC_PCS_config</code>, <code>Tag_ARC_CPU_base</code>,
|
|
<code>Tag_ARC_CPU_variation</code>, <code>Tag_ARC_CPU_name</code>,
|
|
<code>Tag_ARC_ABI_rf16</code>, <code>Tag_ARC_ABI_osver</code>, <code>Tag_ARC_ABI_sda</code>,
|
|
<code>Tag_ARC_ABI_pic</code>, <code>Tag_ARC_ABI_tls</code>, <code>Tag_ARC_ABI_enumsize</code>,
|
|
<code>Tag_ARC_ABI_exceptions</code>, <code>Tag_ARC_ABI_double_size</code>,
|
|
<code>Tag_ARC_ISA_config</code>, <code>Tag_ARC_ISA_apex</code>,
|
|
<code>Tag_ARC_ISA_mpy_option</code>
|
|
</p>
|
|
<p>The <var>value</var> is either a <code>number</code>, <code>"string"</code>, or
|
|
<code>number, "string"</code> depending on the tag.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="ARC-Modifiers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARC-Symbols" accesskey="n" rel="next">ARC Symbols</a>, Previous: <a href="#ARC-Directives" accesskey="p" rel="previous">ARC Directives</a>, Up: <a href="#ARC_002dDependent" accesskey="u" rel="up">ARC-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="ARC-Assembler-Modifiers"></a>
|
|
<h4 class="subsection">9.3.4 ARC Assembler Modifiers</h4>
|
|
|
|
<p>The following additional assembler modifiers have been added for
|
|
position-independent code. These modifiers are available only with
|
|
the ARC 700 and above processors and generate relocation entries,
|
|
which are interpreted by the linker as follows:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>@pcl(<var>symbol</var>)</code></dt>
|
|
<dd><a name="index-_0040pcl_0028symbol_0029_002c-ARC-modifier"></a>
|
|
<p>Relative distance of <var>symbol</var>’s from the current program counter
|
|
location.
|
|
</p>
|
|
</dd>
|
|
<dt><code>@gotpc(<var>symbol</var>)</code></dt>
|
|
<dd><a name="index-_0040gotpc_0028symbol_0029_002c-ARC-modifier"></a>
|
|
<p>Relative distance of <var>symbol</var>’s Global Offset Table entry from the
|
|
current program counter location.
|
|
</p>
|
|
</dd>
|
|
<dt><code>@gotoff(<var>symbol</var>)</code></dt>
|
|
<dd><a name="index-_0040gotoff_0028symbol_0029_002c-ARC-modifier"></a>
|
|
<p>Distance of <var>symbol</var> from the base of the Global Offset Table.
|
|
</p>
|
|
</dd>
|
|
<dt><code>@plt(<var>symbol</var>)</code></dt>
|
|
<dd><a name="index-_0040plt_0028symbol_0029_002c-ARC-modifier"></a>
|
|
<p>Distance of <var>symbol</var>’s Procedure Linkage Table entry from the
|
|
current program counter. This is valid only with branch and link
|
|
instructions and PC-relative calls.
|
|
</p>
|
|
</dd>
|
|
<dt><code>@sda(<var>symbol</var>)</code></dt>
|
|
<dd><a name="index-_0040sda_0028symbol_0029_002c-ARC-modifier"></a>
|
|
<p>Relative distance of <var>symbol</var> from the base of the Small Data
|
|
Pointer.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="ARC-Symbols"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARC-Opcodes" accesskey="n" rel="next">ARC Opcodes</a>, Previous: <a href="#ARC-Modifiers" accesskey="p" rel="previous">ARC Modifiers</a>, Up: <a href="#ARC_002dDependent" accesskey="u" rel="up">ARC-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="ARC-Pre_002ddefined-Symbols"></a>
|
|
<h4 class="subsection">9.3.5 ARC Pre-defined Symbols</h4>
|
|
|
|
<p>The following assembler symbols will prove useful when developing
|
|
position-independent code. These symbols are available only with the
|
|
ARC 700 and above processors.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>__GLOBAL_OFFSET_TABLE__</code></dt>
|
|
<dd><a name="index-_005f_005fGLOBAL_005fOFFSET_005fTABLE_005f_005f_002c-ARC-pre_002ddefined-symbol"></a>
|
|
<p>Symbol referring to the base of the Global Offset Table.
|
|
</p>
|
|
</dd>
|
|
<dt><code>__DYNAMIC__</code></dt>
|
|
<dd><a name="index-_005f_005fDYNAMIC_005f_005f_002c-ARC-pre_002ddefined-symbol"></a>
|
|
<p>An alias for the Global Offset Table
|
|
<code>Base__GLOBAL_OFFSET_TABLE__</code>. It can be used only with
|
|
<code>@gotpc</code> modifiers.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="ARC-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#ARC-Symbols" accesskey="p" rel="previous">ARC Symbols</a>, Up: <a href="#ARC_002dDependent" accesskey="u" rel="up">ARC-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-2"></a>
|
|
<h4 class="subsection">9.3.6 Opcodes</h4>
|
|
|
|
<a name="index-ARC-opcodes"></a>
|
|
<a name="index-opcodes-for-ARC"></a>
|
|
|
|
<p>For information on the ARC instruction set, see <cite>ARC Programmers
|
|
Reference Manual</cite>, available where you download the processor IP library.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="ARM_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AVR_002dDependent" accesskey="n" rel="next">AVR-Dependent</a>, Previous: <a href="#ARC_002dDependent" accesskey="p" rel="previous">ARC-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="ARM-Dependent-Features"></a>
|
|
<h3 class="section">9.4 ARM Dependent Features</h3>
|
|
|
|
|
|
<a name="index-ARM-support"></a>
|
|
<a name="index-Thumb-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#ARM-Options" accesskey="1">ARM Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARM-Syntax" accesskey="2">ARM Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARM-Floating-Point" accesskey="3">ARM Floating Point</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARM-Directives" accesskey="4">ARM Directives</a>:</td><td> </td><td align="left" valign="top">ARM Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARM-Opcodes" accesskey="5">ARM Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARM-Mapping-Symbols" accesskey="6">ARM Mapping Symbols</a>:</td><td> </td><td align="left" valign="top">Mapping Symbols
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARM-Unwinding-Tutorial" accesskey="7">ARM Unwinding Tutorial</a>:</td><td> </td><td align="left" valign="top">Unwinding
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="ARM-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARM-Syntax" accesskey="n" rel="next">ARM Syntax</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-3"></a>
|
|
<h4 class="subsection">9.4.1 Options</h4>
|
|
<a name="index-ARM-options-_0028none_0029"></a>
|
|
<a name="index-options-for-ARM-_0028none_0029"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dmcpu_003d-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-mcpu=<var>processor</var>[+<var>extension</var>…]</code></dt>
|
|
<dd><p>This option specifies the target processor. The assembler will issue an
|
|
error message if an attempt is made to assemble an instruction which
|
|
will not execute on the target processor. The following processor names are
|
|
recognized:
|
|
<code>arm1</code>,
|
|
<code>arm2</code>,
|
|
<code>arm250</code>,
|
|
<code>arm3</code>,
|
|
<code>arm6</code>,
|
|
<code>arm60</code>,
|
|
<code>arm600</code>,
|
|
<code>arm610</code>,
|
|
<code>arm620</code>,
|
|
<code>arm7</code>,
|
|
<code>arm7m</code>,
|
|
<code>arm7d</code>,
|
|
<code>arm7dm</code>,
|
|
<code>arm7di</code>,
|
|
<code>arm7dmi</code>,
|
|
<code>arm70</code>,
|
|
<code>arm700</code>,
|
|
<code>arm700i</code>,
|
|
<code>arm710</code>,
|
|
<code>arm710t</code>,
|
|
<code>arm720</code>,
|
|
<code>arm720t</code>,
|
|
<code>arm740t</code>,
|
|
<code>arm710c</code>,
|
|
<code>arm7100</code>,
|
|
<code>arm7500</code>,
|
|
<code>arm7500fe</code>,
|
|
<code>arm7t</code>,
|
|
<code>arm7tdmi</code>,
|
|
<code>arm7tdmi-s</code>,
|
|
<code>arm8</code>,
|
|
<code>arm810</code>,
|
|
<code>strongarm</code>,
|
|
<code>strongarm1</code>,
|
|
<code>strongarm110</code>,
|
|
<code>strongarm1100</code>,
|
|
<code>strongarm1110</code>,
|
|
<code>arm9</code>,
|
|
<code>arm920</code>,
|
|
<code>arm920t</code>,
|
|
<code>arm922t</code>,
|
|
<code>arm940t</code>,
|
|
<code>arm9tdmi</code>,
|
|
<code>fa526</code> (Faraday FA526 processor),
|
|
<code>fa626</code> (Faraday FA626 processor),
|
|
<code>arm9e</code>,
|
|
<code>arm926e</code>,
|
|
<code>arm926ej-s</code>,
|
|
<code>arm946e-r0</code>,
|
|
<code>arm946e</code>,
|
|
<code>arm946e-s</code>,
|
|
<code>arm966e-r0</code>,
|
|
<code>arm966e</code>,
|
|
<code>arm966e-s</code>,
|
|
<code>arm968e-s</code>,
|
|
<code>arm10t</code>,
|
|
<code>arm10tdmi</code>,
|
|
<code>arm10e</code>,
|
|
<code>arm1020</code>,
|
|
<code>arm1020t</code>,
|
|
<code>arm1020e</code>,
|
|
<code>arm1022e</code>,
|
|
<code>arm1026ej-s</code>,
|
|
<code>fa606te</code> (Faraday FA606TE processor),
|
|
<code>fa616te</code> (Faraday FA616TE processor),
|
|
<code>fa626te</code> (Faraday FA626TE processor),
|
|
<code>fmp626</code> (Faraday FMP626 processor),
|
|
<code>fa726te</code> (Faraday FA726TE processor),
|
|
<code>arm1136j-s</code>,
|
|
<code>arm1136jf-s</code>,
|
|
<code>arm1156t2-s</code>,
|
|
<code>arm1156t2f-s</code>,
|
|
<code>arm1176jz-s</code>,
|
|
<code>arm1176jzf-s</code>,
|
|
<code>mpcore</code>,
|
|
<code>mpcorenovfp</code>,
|
|
<code>cortex-a5</code>,
|
|
<code>cortex-a7</code>,
|
|
<code>cortex-a8</code>,
|
|
<code>cortex-a9</code>,
|
|
<code>cortex-a15</code>,
|
|
<code>cortex-a17</code>,
|
|
<code>cortex-a32</code>,
|
|
<code>cortex-a35</code>,
|
|
<code>cortex-a53</code>,
|
|
<code>cortex-a55</code>,
|
|
<code>cortex-a57</code>,
|
|
<code>cortex-a72</code>,
|
|
<code>cortex-a73</code>,
|
|
<code>cortex-a75</code>,
|
|
<code>cortex-a76</code>,
|
|
<code>cortex-a76ae</code>,
|
|
<code>cortex-a77</code>,
|
|
<code>cortex-a78</code>,
|
|
<code>cortex-a78ae</code>,
|
|
<code>cortex-a78c</code>,
|
|
<code>cortex-a710</code>,
|
|
<code>ares</code>,
|
|
<code>cortex-r4</code>,
|
|
<code>cortex-r4f</code>,
|
|
<code>cortex-r5</code>,
|
|
<code>cortex-r7</code>,
|
|
<code>cortex-r8</code>,
|
|
<code>cortex-r52</code>,
|
|
<code>cortex-r52plus</code>,
|
|
<code>cortex-m35p</code>,
|
|
<code>cortex-m33</code>,
|
|
<code>cortex-m23</code>,
|
|
<code>cortex-m7</code>,
|
|
<code>cortex-m4</code>,
|
|
<code>cortex-m3</code>,
|
|
<code>cortex-m1</code>,
|
|
<code>cortex-m0</code>,
|
|
<code>cortex-m0plus</code>,
|
|
<code>cortex-x1</code>,
|
|
<code>exynos-m1</code>,
|
|
<code>marvell-pj4</code>,
|
|
<code>marvell-whitney</code>,
|
|
<code>neoverse-n1</code>,
|
|
<code>neoverse-n2</code>,
|
|
<code>neoverse-v1</code>,
|
|
<code>xgene1</code>,
|
|
<code>xgene2</code>,
|
|
<code>ep9312</code> (ARM920 with Cirrus Maverick coprocessor),
|
|
<code>i80200</code> (Intel XScale processor)
|
|
<code>iwmmxt</code> (Intel XScale processor with Wireless MMX technology coprocessor)
|
|
and
|
|
<code>xscale</code>.
|
|
The special name <code>all</code> may be used to allow the
|
|
assembler to accept instructions valid for any ARM processor.
|
|
</p>
|
|
<p>In addition to the basic instruction set, the assembler can be told to
|
|
accept various extension mnemonics that extend the processor using the
|
|
co-processor instruction space. For example, <code>-mcpu=arm920+maverick</code>
|
|
is equivalent to specifying <code>-mcpu=ep9312</code>.
|
|
</p>
|
|
<p>Multiple extensions may be specified, separated by a <code>+</code>. The
|
|
extensions should be specified in ascending alphabetical order.
|
|
</p>
|
|
<p>Some extensions may be restricted to particular architectures; this is
|
|
documented in the list of extensions below.
|
|
</p>
|
|
<p>Extension mnemonics may also be removed from those the assembler accepts.
|
|
This is done be prepending <code>no</code> to the option that adds the extension.
|
|
Extensions that are removed should be listed after all extensions which have
|
|
been added, again in ascending alphabetical order. For example,
|
|
<code>-mcpu=ep9312+nomaverick</code> is equivalent to specifying <code>-mcpu=arm920</code>.
|
|
</p>
|
|
|
|
<p>The following extensions are currently supported:
|
|
<code>bf16</code> (BFloat16 extensions for v8.6-A architecture),
|
|
<code>i8mm</code> (Int8 Matrix Multiply extensions for v8.6-A architecture),
|
|
<code>crc</code>
|
|
<code>crypto</code> (Cryptography Extensions for v8-A architecture, implies <code>fp+simd</code>),
|
|
<code>dotprod</code> (Dot Product Extensions for v8.2-A architecture, implies <code>fp+simd</code>),
|
|
<code>fp</code> (Floating Point Extensions for v8-A architecture),
|
|
<code>fp16</code> (FP16 Extensions for v8.2-A architecture, implies <code>fp</code>),
|
|
<code>fp16fml</code> (FP16 Floating Point Multiplication Variant Extensions for v8.2-A architecture, implies <code>fp16</code>),
|
|
<code>idiv</code> (Integer Divide Extensions for v7-A and v7-R architectures),
|
|
<code>iwmmxt</code>,
|
|
<code>iwmmxt2</code>,
|
|
<code>xscale</code>,
|
|
<code>maverick</code>,
|
|
<code>mp</code> (Multiprocessing Extensions for v7-A and v7-R
|
|
architectures),
|
|
<code>os</code> (Operating System for v6M architecture),
|
|
<code>predres</code> (Execution and Data Prediction Restriction Instruction for
|
|
v8-A architectures, added by default from v8.5-A),
|
|
<code>sb</code> (Speculation Barrier Instruction for v8-A architectures, added by
|
|
default from v8.5-A),
|
|
<code>sec</code> (Security Extensions for v6K and v7-A architectures),
|
|
<code>simd</code> (Advanced SIMD Extensions for v8-A architecture, implies <code>fp</code>),
|
|
<code>virt</code> (Virtualization Extensions for v7-A architecture, implies
|
|
<code>idiv</code>),
|
|
<code>pan</code> (Privileged Access Never Extensions for v8-A architecture),
|
|
<code>ras</code> (Reliability, Availability and Serviceability extensions
|
|
for v8-A architecture),
|
|
<code>rdma</code> (ARMv8.1 Advanced SIMD extensions for v8-A architecture, implies
|
|
<code>simd</code>)
|
|
and
|
|
<code>xscale</code>.
|
|
</p>
|
|
<a name="index-_002dmarch_003d-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-march=<var>architecture</var>[+<var>extension</var>…]</code></dt>
|
|
<dd><p>This option specifies the target architecture. The assembler will issue
|
|
an error message if an attempt is made to assemble an instruction which
|
|
will not execute on the target architecture. The following architecture
|
|
names are recognized:
|
|
<code>armv1</code>,
|
|
<code>armv2</code>,
|
|
<code>armv2a</code>,
|
|
<code>armv2s</code>,
|
|
<code>armv3</code>,
|
|
<code>armv3m</code>,
|
|
<code>armv4</code>,
|
|
<code>armv4xm</code>,
|
|
<code>armv4t</code>,
|
|
<code>armv4txm</code>,
|
|
<code>armv5</code>,
|
|
<code>armv5t</code>,
|
|
<code>armv5txm</code>,
|
|
<code>armv5te</code>,
|
|
<code>armv5texp</code>,
|
|
<code>armv6</code>,
|
|
<code>armv6j</code>,
|
|
<code>armv6k</code>,
|
|
<code>armv6z</code>,
|
|
<code>armv6kz</code>,
|
|
<code>armv6-m</code>,
|
|
<code>armv6s-m</code>,
|
|
<code>armv7</code>,
|
|
<code>armv7-a</code>,
|
|
<code>armv7ve</code>,
|
|
<code>armv7-r</code>,
|
|
<code>armv7-m</code>,
|
|
<code>armv7e-m</code>,
|
|
<code>armv8-a</code>,
|
|
<code>armv8.1-a</code>,
|
|
<code>armv8.2-a</code>,
|
|
<code>armv8.3-a</code>,
|
|
<code>armv8-r</code>,
|
|
<code>armv8.4-a</code>,
|
|
<code>armv8.5-a</code>,
|
|
<code>armv8-m.base</code>,
|
|
<code>armv8-m.main</code>,
|
|
<code>armv8.1-m.main</code>,
|
|
<code>armv8.6-a</code>,
|
|
<code>armv8.7-a</code>,
|
|
<code>armv8.8-a</code>,
|
|
<code>armv9-a</code>,
|
|
<code>iwmmxt</code>,
|
|
<code>iwmmxt2</code>
|
|
and
|
|
<code>xscale</code>.
|
|
If both <code>-mcpu</code> and
|
|
<code>-march</code> are specified, the assembler will use
|
|
the setting for <code>-mcpu</code>.
|
|
</p>
|
|
<p>The architecture option can be extended with a set extension options. These
|
|
extensions are context sensitive, i.e. the same extension may mean different
|
|
things when used with different architectures. When used together with a
|
|
<code>-mfpu</code> option, the union of both feature enablement is taken.
|
|
See their availability and meaning below:
|
|
</p>
|
|
<p>For <code>armv5te</code>, <code>armv5texp</code>, <code>armv5tej</code>, <code>armv6</code>, <code>armv6j</code>, <code>armv6k</code>, <code>armv6z</code>, <code>armv6kz</code>, <code>armv6zk</code>, <code>armv6t2</code>, <code>armv6kt2</code> and <code>armv6zt2</code>:
|
|
</p>
|
|
<p><code>+fp</code>: Enables VFPv2 instructions.
|
|
<code>+nofp</code>: Disables all FPU instrunctions.
|
|
</p>
|
|
<p>For <code>armv7</code>:
|
|
</p>
|
|
<p><code>+fp</code>: Enables VFPv3 instructions with 16 double-word registers.
|
|
<code>+nofp</code>: Disables all FPU instructions.
|
|
</p>
|
|
<p>For <code>armv7-a</code>:
|
|
</p>
|
|
<p><code>+fp</code>: Enables VFPv3 instructions with 16 double-word registers.
|
|
<code>+vfpv3-d16</code>: Alias for <code>+fp</code>.
|
|
<code>+vfpv3</code>: Enables VFPv3 instructions with 32 double-word registers.
|
|
<code>+vfpv3-d16-fp16</code>: Enables VFPv3 with half precision floating-point
|
|
conversion instructions and 16 double-word registers.
|
|
<code>+vfpv3-fp16</code>: Enables VFPv3 with half precision floating-point conversion
|
|
instructions and 32 double-word registers.
|
|
<code>+vfpv4-d16</code>: Enables VFPv4 instructions with 16 double-word registers.
|
|
<code>+vfpv4</code>: Enables VFPv4 instructions with 32 double-word registers.
|
|
<code>+simd</code>: Enables VFPv3 and NEONv1 instructions with 32 double-word
|
|
registers.
|
|
<code>+neon</code>: Alias for <code>+simd</code>.
|
|
<code>+neon-vfpv3</code>: Alias for <code>+simd</code>.
|
|
<code>+neon-fp16</code>: Enables VFPv3, half precision floating-point conversion and
|
|
NEONv1 instructions with 32 double-word registers.
|
|
<code>+neon-vfpv4</code>: Enables VFPv4 and NEONv1 with Fused-MAC instructions and 32
|
|
double-word registers.
|
|
<code>+mp</code>: Enables Multiprocessing Extensions.
|
|
<code>+sec</code>: Enables Security Extensions.
|
|
<code>+nofp</code>: Disables all FPU and NEON instructions.
|
|
<code>+nosimd</code>: Disables all NEON instructions.
|
|
</p>
|
|
<p>For <code>armv7ve</code>:
|
|
</p>
|
|
<p><code>+fp</code>: Enables VFPv4 instructions with 16 double-word registers.
|
|
<code>+vfpv4-d16</code>: Alias for <code>+fp</code>.
|
|
<code>+vfpv3-d16</code>: Enables VFPv3 instructions with 16 double-word registers.
|
|
<code>+vfpv3</code>: Enables VFPv3 instructions with 32 double-word registers.
|
|
<code>+vfpv3-d16-fp16</code>: Enables VFPv3 with half precision floating-point
|
|
conversion instructions and 16 double-word registers.
|
|
<code>+vfpv3-fp16</code>: Enables VFPv3 with half precision floating-point conversion
|
|
instructions and 32 double-word registers.
|
|
<code>+vfpv4</code>: Enables VFPv4 instructions with 32 double-word registers.
|
|
<code>+simd</code>: Enables VFPv4 and NEONv1 with Fused-MAC instructions and 32
|
|
double-word registers.
|
|
<code>+neon-vfpv4</code>: Alias for <code>+simd</code>.
|
|
<code>+neon</code>: Enables VFPv3 and NEONv1 instructions with 32 double-word
|
|
registers.
|
|
<code>+neon-vfpv3</code>: Alias for <code>+neon</code>.
|
|
<code>+neon-fp16</code>: Enables VFPv3, half precision floating-point conversion and
|
|
NEONv1 instructions with 32 double-word registers.
|
|
double-word registers.
|
|
<code>+nofp</code>: Disables all FPU and NEON instructions.
|
|
<code>+nosimd</code>: Disables all NEON instructions.
|
|
</p>
|
|
<p>For <code>armv7-r</code>:
|
|
</p>
|
|
<p><code>+fp.sp</code>: Enables single-precision only VFPv3 instructions with 16
|
|
double-word registers.
|
|
<code>+vfpv3xd</code>: Alias for <code>+fp.sp</code>.
|
|
<code>+fp</code>: Enables VFPv3 instructions with 16 double-word registers.
|
|
<code>+vfpv3-d16</code>: Alias for <code>+fp</code>.
|
|
<code>+vfpv3xd-fp16</code>: Enables single-precision only VFPv3 and half
|
|
floating-point conversion instructions with 16 double-word registers.
|
|
<code>+vfpv3-d16-fp16</code>: Enables VFPv3 and half precision floating-point
|
|
conversion instructions with 16 double-word registers.
|
|
<code>+idiv</code>: Enables integer division instructions in ARM mode.
|
|
<code>+nofp</code>: Disables all FPU instructions.
|
|
</p>
|
|
<p>For <code>armv7e-m</code>:
|
|
</p>
|
|
<p><code>+fp</code>: Enables single-precision only VFPv4 instructions with 16
|
|
double-word registers.
|
|
<code>+vfpvf4-sp-d16</code>: Alias for <code>+fp</code>.
|
|
<code>+fpv5</code>: Enables single-precision only VFPv5 instructions with 16
|
|
double-word registers.
|
|
<code>+fp.dp</code>: Enables VFPv5 instructions with 16 double-word registers.
|
|
<code>+fpv5-d16"</code>: Alias for <code>+fp.dp</code>.
|
|
<code>+nofp</code>: Disables all FPU instructions.
|
|
</p>
|
|
<p>For <code>armv8-m.main</code>:
|
|
</p>
|
|
<p><code>+dsp</code>: Enables DSP Extension.
|
|
<code>+fp</code>: Enables single-precision only VFPv5 instructions with 16
|
|
double-word registers.
|
|
<code>+fp.dp</code>: Enables VFPv5 instructions with 16 double-word registers.
|
|
<code>+cdecp0</code> (CDE extensions for v8-m architecture with coprocessor 0),
|
|
<code>+cdecp1</code> (CDE extensions for v8-m architecture with coprocessor 1),
|
|
<code>+cdecp2</code> (CDE extensions for v8-m architecture with coprocessor 2),
|
|
<code>+cdecp3</code> (CDE extensions for v8-m architecture with coprocessor 3),
|
|
<code>+cdecp4</code> (CDE extensions for v8-m architecture with coprocessor 4),
|
|
<code>+cdecp5</code> (CDE extensions for v8-m architecture with coprocessor 5),
|
|
<code>+cdecp6</code> (CDE extensions for v8-m architecture with coprocessor 6),
|
|
<code>+cdecp7</code> (CDE extensions for v8-m architecture with coprocessor 7),
|
|
<code>+nofp</code>: Disables all FPU instructions.
|
|
<code>+nodsp</code>: Disables DSP Extension.
|
|
</p>
|
|
<p>For <code>armv8.1-m.main</code>:
|
|
</p>
|
|
<p><code>+dsp</code>: Enables DSP Extension.
|
|
<code>+fp</code>: Enables single and half precision scalar Floating Point Extensions
|
|
for Armv8.1-M Mainline with 16 double-word registers.
|
|
<code>+fp.dp</code>: Enables double precision scalar Floating Point Extensions for
|
|
Armv8.1-M Mainline, implies <code>+fp</code>.
|
|
<code>+mve</code>: Enables integer only M-profile Vector Extension for
|
|
Armv8.1-M Mainline, implies <code>+dsp</code>.
|
|
<code>+mve.fp</code>: Enables Floating Point M-profile Vector Extension for
|
|
Armv8.1-M Mainline, implies <code>+mve</code> and <code>+fp</code>.
|
|
<code>+nofp</code>: Disables all FPU instructions.
|
|
<code>+nodsp</code>: Disables DSP Extension.
|
|
<code>+nomve</code>: Disables all M-profile Vector Extensions.
|
|
</p>
|
|
<p>For <code>armv8-a</code>:
|
|
</p>
|
|
<p><code>+crc</code>: Enables CRC32 Extension.
|
|
<code>+simd</code>: Enables VFP and NEON for Armv8-A.
|
|
<code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies
|
|
<code>+simd</code>.
|
|
<code>+sb</code>: Enables Speculation Barrier Instruction for Armv8-A.
|
|
<code>+predres</code>: Enables Execution and Data Prediction Restriction Instruction
|
|
for Armv8-A.
|
|
<code>+nofp</code>: Disables all FPU, NEON and Cryptography Extensions.
|
|
<code>+nocrypto</code>: Disables Cryptography Extensions.
|
|
</p>
|
|
<p>For <code>armv8.1-a</code>:
|
|
</p>
|
|
<p><code>+simd</code>: Enables VFP and NEON for Armv8.1-A.
|
|
<code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies
|
|
<code>+simd</code>.
|
|
<code>+sb</code>: Enables Speculation Barrier Instruction for Armv8-A.
|
|
<code>+predres</code>: Enables Execution and Data Prediction Restriction Instruction
|
|
for Armv8-A.
|
|
<code>+nofp</code>: Disables all FPU, NEON and Cryptography Extensions.
|
|
<code>+nocrypto</code>: Disables Cryptography Extensions.
|
|
</p>
|
|
<p>For <code>armv8.2-a</code> and <code>armv8.3-a</code>:
|
|
</p>
|
|
<p><code>+simd</code>: Enables VFP and NEON for Armv8.1-A.
|
|
<code>+fp16</code>: Enables FP16 Extension for Armv8.2-A, implies <code>+simd</code>.
|
|
<code>+fp16fml</code>: Enables FP16 Floating Point Multiplication Variant Extensions
|
|
for Armv8.2-A, implies <code>+fp16</code>.
|
|
<code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies
|
|
<code>+simd</code>.
|
|
<code>+dotprod</code>: Enables Dot Product Extensions for Armv8.2-A, implies
|
|
<code>+simd</code>.
|
|
<code>+sb</code>: Enables Speculation Barrier Instruction for Armv8-A.
|
|
<code>+predres</code>: Enables Execution and Data Prediction Restriction Instruction
|
|
for Armv8-A.
|
|
<code>+nofp</code>: Disables all FPU, NEON, Cryptography and Dot Product Extensions.
|
|
<code>+nocrypto</code>: Disables Cryptography Extensions.
|
|
</p>
|
|
<p>For <code>armv8.4-a</code>:
|
|
</p>
|
|
<p><code>+simd</code>: Enables VFP and NEON for Armv8.1-A and Dot Product Extensions for
|
|
Armv8.2-A.
|
|
<code>+fp16</code>: Enables FP16 Floating Point and Floating Point Multiplication
|
|
Variant Extensions for Armv8.2-A, implies <code>+simd</code>.
|
|
<code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies
|
|
<code>+simd</code>.
|
|
<code>+sb</code>: Enables Speculation Barrier Instruction for Armv8-A.
|
|
<code>+predres</code>: Enables Execution and Data Prediction Restriction Instruction
|
|
for Armv8-A.
|
|
<code>+nofp</code>: Disables all FPU, NEON, Cryptography and Dot Product Extensions.
|
|
<code>+nocryptp</code>: Disables Cryptography Extensions.
|
|
</p>
|
|
<p>For <code>armv8.5-a</code>:
|
|
</p>
|
|
<p><code>+simd</code>: Enables VFP and NEON for Armv8.1-A and Dot Product Extensions for
|
|
Armv8.2-A.
|
|
<code>+fp16</code>: Enables FP16 Floating Point and Floating Point Multiplication
|
|
Variant Extensions for Armv8.2-A, implies <code>+simd</code>.
|
|
<code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies
|
|
<code>+simd</code>.
|
|
<code>+nofp</code>: Disables all FPU, NEON, Cryptography and Dot Product Extensions.
|
|
<code>+nocryptp</code>: Disables Cryptography Extensions.
|
|
</p>
|
|
|
|
<a name="index-_002dmfpu_003d-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-mfpu=<var>floating-point-format</var></code></dt>
|
|
<dd>
|
|
<p>This option specifies the floating point format to assemble for. The
|
|
assembler will issue an error message if an attempt is made to assemble
|
|
an instruction which will not execute on the target floating point unit.
|
|
The following format options are recognized:
|
|
<code>softfpa</code>,
|
|
<code>fpe</code>,
|
|
<code>fpe2</code>,
|
|
<code>fpe3</code>,
|
|
<code>fpa</code>,
|
|
<code>fpa10</code>,
|
|
<code>fpa11</code>,
|
|
<code>arm7500fe</code>,
|
|
<code>softvfp</code>,
|
|
<code>softvfp+vfp</code>,
|
|
<code>vfp</code>,
|
|
<code>vfp10</code>,
|
|
<code>vfp10-r0</code>,
|
|
<code>vfp9</code>,
|
|
<code>vfpxd</code>,
|
|
<code>vfpv2</code>,
|
|
<code>vfpv3</code>,
|
|
<code>vfpv3-fp16</code>,
|
|
<code>vfpv3-d16</code>,
|
|
<code>vfpv3-d16-fp16</code>,
|
|
<code>vfpv3xd</code>,
|
|
<code>vfpv3xd-d16</code>,
|
|
<code>vfpv4</code>,
|
|
<code>vfpv4-d16</code>,
|
|
<code>fpv4-sp-d16</code>,
|
|
<code>fpv5-sp-d16</code>,
|
|
<code>fpv5-d16</code>,
|
|
<code>fp-armv8</code>,
|
|
<code>arm1020t</code>,
|
|
<code>arm1020e</code>,
|
|
<code>arm1136jf-s</code>,
|
|
<code>maverick</code>,
|
|
<code>neon</code>,
|
|
<code>neon-vfpv3</code>,
|
|
<code>neon-fp16</code>,
|
|
<code>neon-vfpv4</code>,
|
|
<code>neon-fp-armv8</code>,
|
|
<code>crypto-neon-fp-armv8</code>,
|
|
<code>neon-fp-armv8.1</code>
|
|
and
|
|
<code>crypto-neon-fp-armv8.1</code>.
|
|
</p>
|
|
<p>In addition to determining which instructions are assembled, this option
|
|
also affects the way in which the <code>.double</code> assembler directive behaves
|
|
when assembling little-endian code.
|
|
</p>
|
|
<p>The default is dependent on the processor selected. For Architecture 5 or
|
|
later, the default is to assemble for VFP instructions; for earlier
|
|
architectures the default is to assemble for FPA instructions.
|
|
</p>
|
|
<a name="index-_002dmfp16_002dformat_003d-command_002dline-option"></a>
|
|
</dd>
|
|
<dt><code>-mfp16-format=<var>format</var></code></dt>
|
|
<dd><p>This option specifies the half-precision floating point format to use
|
|
when assembling floating point numbers emitted by the <code>.float16</code>
|
|
directive.
|
|
The following format options are recognized:
|
|
<code>ieee</code>,
|
|
<code>alternative</code>.
|
|
If <code>ieee</code> is specified then the IEEE 754-2008 half-precision floating
|
|
point format is used, if <code>alternative</code> is specified then the Arm
|
|
alternative half-precision format is used. If this option is set on the
|
|
command line then the format is fixed and cannot be changed with
|
|
the <code>float16_format</code> directive. If this value is not set then
|
|
the IEEE 754-2008 format is used until the format is explicitly set with
|
|
the <code>float16_format</code> directive.
|
|
</p>
|
|
<a name="index-_002dmthumb-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-mthumb</code></dt>
|
|
<dd><p>This option specifies that the assembler should start assembling Thumb
|
|
instructions; that is, it should behave as though the file starts with a
|
|
<code>.code 16</code> directive.
|
|
</p>
|
|
<a name="index-_002dmthumb_002dinterwork-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-mthumb-interwork</code></dt>
|
|
<dd><p>This option specifies that the output generated by the assembler should
|
|
be marked as supporting interworking. It also affects the behaviour
|
|
of the <code>ADR</code> and <code>ADRL</code> pseudo opcodes.
|
|
</p>
|
|
<a name="index-_002dmimplicit_002dit-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-mimplicit-it=never</code></dt>
|
|
<dt><code>-mimplicit-it=always</code></dt>
|
|
<dt><code>-mimplicit-it=arm</code></dt>
|
|
<dt><code>-mimplicit-it=thumb</code></dt>
|
|
<dd><p>The <code>-mimplicit-it</code> option controls the behavior of the assembler when
|
|
conditional instructions are not enclosed in IT blocks.
|
|
There are four possible behaviors.
|
|
If <code>never</code> is specified, such constructs cause a warning in ARM
|
|
code and an error in Thumb-2 code.
|
|
If <code>always</code> is specified, such constructs are accepted in both
|
|
ARM and Thumb-2 code, where the IT instruction is added implicitly.
|
|
If <code>arm</code> is specified, such constructs are accepted in ARM code
|
|
and cause an error in Thumb-2 code.
|
|
If <code>thumb</code> is specified, such constructs cause a warning in ARM
|
|
code and are accepted in Thumb-2 code. If you omit this option, the
|
|
behavior is equivalent to <code>-mimplicit-it=arm</code>.
|
|
</p>
|
|
<a name="index-_002dmapcs_002d26-command_002dline-option_002c-ARM"></a>
|
|
<a name="index-_002dmapcs_002d32-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-mapcs-26</code></dt>
|
|
<dt><code>-mapcs-32</code></dt>
|
|
<dd><p>These options specify that the output generated by the assembler should
|
|
be marked as supporting the indicated version of the Arm Procedure.
|
|
Calling Standard.
|
|
</p>
|
|
<a name="index-_002dmatpcs-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-matpcs</code></dt>
|
|
<dd><p>This option specifies that the output generated by the assembler should
|
|
be marked as supporting the Arm/Thumb Procedure Calling Standard. If
|
|
enabled this option will cause the assembler to create an empty
|
|
debugging section in the object file called .arm.atpcs. Debuggers can
|
|
use this to determine the ABI being used by.
|
|
</p>
|
|
<a name="index-_002dmapcs_002dfloat-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-mapcs-float</code></dt>
|
|
<dd><p>This indicates the floating point variant of the APCS should be
|
|
used. In this variant floating point arguments are passed in FP
|
|
registers rather than integer registers.
|
|
</p>
|
|
<a name="index-_002dmapcs_002dreentrant-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-mapcs-reentrant</code></dt>
|
|
<dd><p>This indicates that the reentrant variant of the APCS should be used.
|
|
This variant supports position independent code.
|
|
</p>
|
|
<a name="index-_002dmfloat_002dabi_003d-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-mfloat-abi=<var>abi</var></code></dt>
|
|
<dd><p>This option specifies that the output generated by the assembler should be
|
|
marked as using specified floating point ABI.
|
|
The following values are recognized:
|
|
<code>soft</code>,
|
|
<code>softfp</code>
|
|
and
|
|
<code>hard</code>.
|
|
</p>
|
|
<a name="index-_002deabi_003d-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-meabi=<var>ver</var></code></dt>
|
|
<dd><p>This option specifies which EABI version the produced object files should
|
|
conform to.
|
|
The following values are recognized:
|
|
<code>gnu</code>,
|
|
<code>4</code>
|
|
and
|
|
<code>5</code>.
|
|
</p>
|
|
<a name="index-_002dEB-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-EB</code></dt>
|
|
<dd><p>This option specifies that the output generated by the assembler should
|
|
be marked as being encoded for a big-endian processor.
|
|
</p>
|
|
<p>Note: If a program is being built for a system with big-endian data
|
|
and little-endian instructions then it should be assembled with the
|
|
<samp>-EB</samp> option, (all of it, code and data) and then linked with
|
|
the <samp>--be8</samp> option. This will reverse the endianness of the
|
|
instructions back to little-endian, but leave the data as big-endian.
|
|
</p>
|
|
<a name="index-_002dEL-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-EL</code></dt>
|
|
<dd><p>This option specifies that the output generated by the assembler should
|
|
be marked as being encoded for a little-endian processor.
|
|
</p>
|
|
<a name="index-_002dk-command_002dline-option_002c-ARM"></a>
|
|
<a name="index-PIC-code-generation-for-ARM"></a>
|
|
</dd>
|
|
<dt><code>-k</code></dt>
|
|
<dd><p>This option specifies that the output of the assembler should be marked
|
|
as position-independent code (PIC).
|
|
</p>
|
|
<a name="index-_002d_002dfix_002dv4bx-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>--fix-v4bx</code></dt>
|
|
<dd><p>Allow <code>BX</code> instructions in ARMv4 code. This is intended for use with
|
|
the linker option of the same name.
|
|
</p>
|
|
<a name="index-_002dmwarn_002ddeprecated-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-mwarn-deprecated</code></dt>
|
|
<dt><code>-mno-warn-deprecated</code></dt>
|
|
<dd><p>Enable or disable warnings about using deprecated options or
|
|
features. The default is to warn.
|
|
</p>
|
|
<a name="index-_002dmccs-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-mccs</code></dt>
|
|
<dd><p>Turns on CodeComposer Studio assembly syntax compatibility mode.
|
|
</p>
|
|
<a name="index-_002dmwarn_002dsyms-command_002dline-option_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>-mwarn-syms</code></dt>
|
|
<dt><code>-mno-warn-syms</code></dt>
|
|
<dd><p>Enable or disable warnings about symbols that match the names of ARM
|
|
instructions. The default is to warn.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
<hr>
|
|
<a name="ARM-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARM-Floating-Point" accesskey="n" rel="next">ARM Floating Point</a>, Previous: <a href="#ARM-Options" accesskey="p" rel="previous">ARM Options</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-5"></a>
|
|
<h4 class="subsection">9.4.2 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#ARM_002dInstruction_002dSet" accesskey="1">ARM-Instruction-Set</a>:</td><td> </td><td align="left" valign="top">Instruction Set
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARM_002dChars" accesskey="2">ARM-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARM_002dRegs" accesskey="3">ARM-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARM_002dRelocations" accesskey="4">ARM-Relocations</a>:</td><td> </td><td align="left" valign="top">Relocations
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#ARM_002dNeon_002dAlignment" accesskey="5">ARM-Neon-Alignment</a>:</td><td> </td><td align="left" valign="top">NEON Alignment Specifiers
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="ARM_002dInstruction_002dSet"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARM_002dChars" accesskey="n" rel="next">ARM-Chars</a>, Up: <a href="#ARM-Syntax" accesskey="u" rel="up">ARM Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Instruction-Set-Syntax"></a>
|
|
<h4 class="subsubsection">9.4.2.1 Instruction Set Syntax</h4>
|
|
<p>Two slightly different syntaxes are support for ARM and THUMB
|
|
instructions. The default, <code>divided</code>, uses the old style where
|
|
ARM and THUMB instructions had their own, separate syntaxes. The new,
|
|
<code>unified</code> syntax, which can be selected via the <code>.syntax</code>
|
|
directive, and has the following main features:
|
|
</p>
|
|
<ul>
|
|
<li> Immediate operands do not require a <code>#</code> prefix.
|
|
|
|
</li><li> The <code>IT</code> instruction may appear, and if it does it is validated
|
|
against subsequent conditional affixes. In ARM mode it does not
|
|
generate machine code, in THUMB mode it does.
|
|
|
|
</li><li> For ARM instructions the conditional affixes always appear at the end
|
|
of the instruction. For THUMB instructions conditional affixes can be
|
|
used, but only inside the scope of an <code>IT</code> instruction.
|
|
|
|
</li><li> All of the instructions new to the V6T2 architecture (and later) are
|
|
available. (Only a few such instructions can be written in the
|
|
<code>divided</code> syntax).
|
|
|
|
</li><li> The <code>.N</code> and <code>.W</code> suffixes are recognized and honored.
|
|
|
|
</li><li> All instructions set the flags if and only if they have an <code>s</code>
|
|
affix.
|
|
</li></ul>
|
|
|
|
<hr>
|
|
<a name="ARM_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARM_002dRegs" accesskey="n" rel="next">ARM-Regs</a>, Previous: <a href="#ARM_002dInstruction_002dSet" accesskey="p" rel="previous">ARM-Instruction-Set</a>, Up: <a href="#ARM-Syntax" accesskey="u" rel="up">ARM Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-3"></a>
|
|
<h4 class="subsubsection">9.4.2.2 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-ARM"></a>
|
|
<a name="index-ARM-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>@</samp>’ anywhere on a line indicates the start of
|
|
a comment that extends to the end of that line.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line then the whole
|
|
line is treated as a comment, but in this case the line could also be
|
|
a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-ARM"></a>
|
|
<a name="index-statement-separator_002c-ARM"></a>
|
|
<a name="index-ARM-line-separator"></a>
|
|
<p>The ‘<samp>;</samp>’ character can be used instead of a newline to separate
|
|
statements.
|
|
</p>
|
|
<a name="index-immediate-character_002c-ARM"></a>
|
|
<a name="index-ARM-immediate-character"></a>
|
|
<p>Either ‘<samp>#</samp>’ or ‘<samp>$</samp>’ can be used to indicate immediate operands.
|
|
</p>
|
|
<a name="index-identifiers_002c-ARM"></a>
|
|
<a name="index-ARM-identifiers"></a>
|
|
<p>*TODO* Explain about /data modifier on symbols.
|
|
</p>
|
|
<hr>
|
|
<a name="ARM_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARM_002dRelocations" accesskey="n" rel="next">ARM-Relocations</a>, Previous: <a href="#ARM_002dChars" accesskey="p" rel="previous">ARM-Chars</a>, Up: <a href="#ARM-Syntax" accesskey="u" rel="up">ARM Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-3"></a>
|
|
<h4 class="subsubsection">9.4.2.3 Register Names</h4>
|
|
|
|
<a name="index-ARM-register-names"></a>
|
|
<a name="index-register-names_002c-ARM"></a>
|
|
<p>*TODO* Explain about ARM register naming, and the predefined names.
|
|
</p>
|
|
<hr>
|
|
<a name="ARM_002dRelocations"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARM_002dNeon_002dAlignment" accesskey="n" rel="next">ARM-Neon-Alignment</a>, Previous: <a href="#ARM_002dRegs" accesskey="p" rel="previous">ARM-Regs</a>, Up: <a href="#ARM-Syntax" accesskey="u" rel="up">ARM Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="ARM-relocation-generation"></a>
|
|
<h4 class="subsubsection">9.4.2.4 ARM relocation generation</h4>
|
|
|
|
<a name="index-data-relocations_002c-ARM"></a>
|
|
<a name="index-ARM-data-relocations"></a>
|
|
<p>Specific data relocations can be generated by putting the relocation name
|
|
in parentheses after the symbol name. For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .word foo(TARGET1)
|
|
</pre></div>
|
|
|
|
<p>This will generate an ‘<samp>R_ARM_TARGET1</samp>’ relocation against the symbol
|
|
<var>foo</var>.
|
|
The following relocations are supported:
|
|
<code>GOT</code>,
|
|
<code>GOTOFF</code>,
|
|
<code>TARGET1</code>,
|
|
<code>TARGET2</code>,
|
|
<code>SBREL</code>,
|
|
<code>TLSGD</code>,
|
|
<code>TLSLDM</code>,
|
|
<code>TLSLDO</code>,
|
|
<code>TLSDESC</code>,
|
|
<code>TLSCALL</code>,
|
|
<code>GOTTPOFF</code>,
|
|
<code>GOT_PREL</code>
|
|
and
|
|
<code>TPOFF</code>.
|
|
</p>
|
|
<p>For compatibility with older toolchains the assembler also accepts
|
|
<code>(PLT)</code> after branch targets. On legacy targets this will
|
|
generate the deprecated ‘<samp>R_ARM_PLT32</samp>’ relocation. On EABI
|
|
targets it will encode either the ‘<samp>R_ARM_CALL</samp>’ or
|
|
‘<samp>R_ARM_JUMP24</samp>’ relocation, as appropriate.
|
|
</p>
|
|
<a name="index-MOVW-and-MOVT-relocations_002c-ARM"></a>
|
|
<p>Relocations for ‘<samp>MOVW</samp>’ and ‘<samp>MOVT</samp>’ instructions can be generated
|
|
by prefixing the value with ‘<samp>#:lower16:</samp>’ and ‘<samp>#:upper16</samp>’
|
|
respectively. For example to load the 32-bit address of foo into r0:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> MOVW r0, #:lower16:foo
|
|
MOVT r0, #:upper16:foo
|
|
</pre></div>
|
|
|
|
<p>Relocations ‘<samp>R_ARM_THM_ALU_ABS_G0_NC</samp>’, ‘<samp>R_ARM_THM_ALU_ABS_G1_NC</samp>’,
|
|
‘<samp>R_ARM_THM_ALU_ABS_G2_NC</samp>’ and ‘<samp>R_ARM_THM_ALU_ABS_G3_NC</samp>’ can be
|
|
generated by prefixing the value with ‘<samp>#:lower0_7:#</samp>’,
|
|
‘<samp>#:lower8_15:#</samp>’, ‘<samp>#:upper0_7:#</samp>’ and ‘<samp>#:upper8_15:#</samp>’
|
|
respectively. For example to load the 32-bit address of foo into r0:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> MOVS r0, #:upper8_15:#foo
|
|
LSLS r0, r0, #8
|
|
ADDS r0, #:upper0_7:#foo
|
|
LSLS r0, r0, #8
|
|
ADDS r0, #:lower8_15:#foo
|
|
LSLS r0, r0, #8
|
|
ADDS r0, #:lower0_7:#foo
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="ARM_002dNeon_002dAlignment"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#ARM_002dRelocations" accesskey="p" rel="previous">ARM-Relocations</a>, Up: <a href="#ARM-Syntax" accesskey="u" rel="up">ARM Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="NEON-Alignment-Specifiers"></a>
|
|
<h4 class="subsubsection">9.4.2.5 NEON Alignment Specifiers</h4>
|
|
|
|
<a name="index-alignment-for-NEON-instructions"></a>
|
|
<p>Some NEON load/store instructions allow an optional address
|
|
alignment qualifier.
|
|
The ARM documentation specifies that this is indicated by
|
|
‘<samp>@ <var>align</var></samp>’. However GAS already interprets
|
|
the ‘<samp>@</samp>’ character as a "line comment" start,
|
|
so ‘<samp>: <var>align</var></samp>’ is used instead. For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> vld1.8 {q0}, [r0, :128]
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="ARM-Floating-Point"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARM-Directives" accesskey="n" rel="next">ARM Directives</a>, Previous: <a href="#ARM-Syntax" accesskey="p" rel="previous">ARM Syntax</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-2"></a>
|
|
<h4 class="subsection">9.4.3 Floating Point</h4>
|
|
|
|
<a name="index-floating-point_002c-ARM-_0028IEEE_0029"></a>
|
|
<a name="index-ARM-floating-point-_0028IEEE_0029"></a>
|
|
<p>The ARM family uses <small>IEEE</small> floating-point numbers.
|
|
</p>
|
|
<hr>
|
|
<a name="ARM-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARM-Opcodes" accesskey="n" rel="next">ARM Opcodes</a>, Previous: <a href="#ARM-Floating-Point" accesskey="p" rel="previous">ARM Floating Point</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="ARM-Machine-Directives"></a>
|
|
<h4 class="subsection">9.4.4 ARM Machine Directives</h4>
|
|
|
|
<a name="index-machine-directives_002c-ARM"></a>
|
|
<a name="index-ARM-machine-directives"></a>
|
|
<dl compact="compact">
|
|
<dd>
|
|
|
|
|
|
<a name="index-_002ealign-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.align <var>expression</var> [, <var>expression</var>]</code></dt>
|
|
<dd><p>This is the generic <var>.align</var> directive. For the ARM however if the
|
|
first argument is zero (ie no alignment is needed) the assembler will
|
|
behave as if the argument had been 2 (ie pad to the next four byte
|
|
boundary). This is for compatibility with ARM’s own assembler.
|
|
</p>
|
|
<a name="index-_002earch-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.arch <var>name</var></code></dt>
|
|
<dd><p>Select the target architecture. Valid values for <var>name</var> are the same as
|
|
for the <samp>-march</samp> command-line option without the instruction set
|
|
extension.
|
|
</p>
|
|
<p>Specifying <code>.arch</code> clears any previously selected architecture
|
|
extensions.
|
|
</p>
|
|
<a name="index-_002earch_005fextension-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.arch_extension <var>name</var></code></dt>
|
|
<dd><p>Add or remove an architecture extension to the target architecture. Valid
|
|
values for <var>name</var> are the same as those accepted as architectural
|
|
extensions by the <samp>-mcpu</samp> and <samp>-march</samp> command-line options.
|
|
</p>
|
|
<p><code>.arch_extension</code> may be used multiple times to add or remove extensions
|
|
incrementally to the architecture being compiled for.
|
|
</p>
|
|
<a name="index-_002earm-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.arm</code></dt>
|
|
<dd><p>This performs the same action as <var>.code 32</var>.
|
|
</p>
|
|
|
|
<a name="index-_002ebss-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.bss</code></dt>
|
|
<dd><p>This directive switches to the <code>.bss</code> section.
|
|
</p>
|
|
|
|
<a name="index-_002ecantunwind-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.cantunwind</code></dt>
|
|
<dd><p>Prevents unwinding through the current function. No personality routine
|
|
or exception table data is required or permitted.
|
|
</p>
|
|
<a name="index-_002ecode-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.code <code>[16|32]</code></code></dt>
|
|
<dd><p>This directive selects the instruction set being generated. The value 16
|
|
selects Thumb, with the value 32 selecting ARM.
|
|
</p>
|
|
<a name="index-_002ecpu-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.cpu <var>name</var></code></dt>
|
|
<dd><p>Select the target processor. Valid values for <var>name</var> are the same as
|
|
for the <samp>-mcpu</samp> command-line option without the instruction set
|
|
extension.
|
|
</p>
|
|
<p>Specifying <code>.cpu</code> clears any previously selected architecture
|
|
extensions.
|
|
</p>
|
|
|
|
<a name="index-_002edn-and-_002eqn-directives_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code><var>name</var> .dn <var>register name</var> [<var>.type</var>] [[<var>index</var>]]</code></dt>
|
|
<dt><code><var>name</var> .qn <var>register name</var> [<var>.type</var>] [[<var>index</var>]]</code></dt>
|
|
<dd>
|
|
<p>The <code>dn</code> and <code>qn</code> directives are used to create typed
|
|
and/or indexed register aliases for use in Advanced SIMD Extension
|
|
(Neon) instructions. The former should be used to create aliases
|
|
of double-precision registers, and the latter to create aliases of
|
|
quad-precision registers.
|
|
</p>
|
|
<p>If these directives are used to create typed aliases, those aliases can
|
|
be used in Neon instructions instead of writing types after the mnemonic
|
|
or after each operand. For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> x .dn d2.f32
|
|
y .dn d3.f32
|
|
z .dn d4.f32[1]
|
|
vmul x,y,z
|
|
</pre></div>
|
|
|
|
<p>This is equivalent to writing the following:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> vmul.f32 d2,d3,d4[1]
|
|
</pre></div>
|
|
|
|
<p>Aliases created using <code>dn</code> or <code>qn</code> can be destroyed using
|
|
<code>unreq</code>.
|
|
</p>
|
|
|
|
<a name="index-_002eeabi_005fattribute-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.eabi_attribute <var>tag</var>, <var>value</var></code></dt>
|
|
<dd><p>Set the EABI object attribute <var>tag</var> to <var>value</var>.
|
|
</p>
|
|
<p>The <var>tag</var> is either an attribute number, or one of the following:
|
|
<code>Tag_CPU_raw_name</code>, <code>Tag_CPU_name</code>, <code>Tag_CPU_arch</code>,
|
|
<code>Tag_CPU_arch_profile</code>, <code>Tag_ARM_ISA_use</code>,
|
|
<code>Tag_THUMB_ISA_use</code>, <code>Tag_FP_arch</code>, <code>Tag_WMMX_arch</code>,
|
|
<code>Tag_Advanced_SIMD_arch</code>, <code>Tag_MVE_arch</code>, <code>Tag_PCS_config</code>,
|
|
<code>Tag_ABI_PCS_R9_use</code>, <code>Tag_ABI_PCS_RW_data</code>,
|
|
<code>Tag_ABI_PCS_RO_data</code>, <code>Tag_ABI_PCS_GOT_use</code>,
|
|
<code>Tag_ABI_PCS_wchar_t</code>, <code>Tag_ABI_FP_rounding</code>,
|
|
<code>Tag_ABI_FP_denormal</code>, <code>Tag_ABI_FP_exceptions</code>,
|
|
<code>Tag_ABI_FP_user_exceptions</code>, <code>Tag_ABI_FP_number_model</code>,
|
|
<code>Tag_ABI_align_needed</code>, <code>Tag_ABI_align_preserved</code>,
|
|
<code>Tag_ABI_enum_size</code>, <code>Tag_ABI_HardFP_use</code>,
|
|
<code>Tag_ABI_VFP_args</code>, <code>Tag_ABI_WMMX_args</code>,
|
|
<code>Tag_ABI_optimization_goals</code>, <code>Tag_ABI_FP_optimization_goals</code>,
|
|
<code>Tag_compatibility</code>, <code>Tag_CPU_unaligned_access</code>,
|
|
<code>Tag_FP_HP_extension</code>, <code>Tag_ABI_FP_16bit_format</code>,
|
|
<code>Tag_MPextension_use</code>, <code>Tag_DIV_use</code>,
|
|
<code>Tag_nodefaults</code>, <code>Tag_also_compatible_with</code>,
|
|
<code>Tag_conformance</code>, <code>Tag_T2EE_use</code>,
|
|
<code>Tag_Virtualization_use</code>
|
|
</p>
|
|
<p>The <var>value</var> is either a <code>number</code>, <code>"string"</code>, or
|
|
<code>number, "string"</code> depending on the tag.
|
|
</p>
|
|
<p>Note - the following legacy values are also accepted by <var>tag</var>:
|
|
<code>Tag_VFP_arch</code>, <code>Tag_ABI_align8_needed</code>,
|
|
<code>Tag_ABI_align8_preserved</code>, <code>Tag_VFP_HP_extension</code>,
|
|
</p>
|
|
<a name="index-_002eeven-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.even</code></dt>
|
|
<dd><p>This directive aligns to an even-numbered address.
|
|
</p>
|
|
<a name="index-_002eextend-directive_002c-ARM"></a>
|
|
<a name="index-_002eldouble-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.extend <var>expression</var> [, <var>expression</var>]*</code></dt>
|
|
<dt><code>.ldouble <var>expression</var> [, <var>expression</var>]*</code></dt>
|
|
<dd><p>These directives write 12byte long double floating-point values to the
|
|
output section. These are not compatible with current ARM processors
|
|
or ABIs.
|
|
</p>
|
|
|
|
<a name="index-_002efloat16-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.float16 <var>value [,...,value_n]</var></code></dt>
|
|
<dd><p>Place the half precision floating point representation of one or more
|
|
floating-point values into the current section. The exact format of the
|
|
encoding is specified by <code>.float16_format</code>. If the format has not
|
|
been explicitly set yet (either via the <code>.float16_format</code> directive or
|
|
the command line option) then the IEEE 754-2008 format is used.
|
|
</p>
|
|
<a name="index-_002efloat16_005fformat-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.float16_format <var>format</var></code></dt>
|
|
<dd><p>Set the format to use when encoding float16 values emitted by
|
|
the <code>.float16</code> directive.
|
|
Once the format has been set it cannot be changed.
|
|
<code>format</code> should be one of the following: <code>ieee</code> (encode in
|
|
the IEEE 754-2008 half precision format) or <code>alternative</code> (encode in
|
|
the Arm alternative half precision format).
|
|
</p>
|
|
<a name="arm_005ffnend"></a><a name="index-_002efnend-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.fnend</code></dt>
|
|
<dd><p>Marks the end of a function with an unwind table entry. The unwind index
|
|
table entry is created when this directive is processed.
|
|
</p>
|
|
<p>If no personality routine has been specified then standard personality
|
|
routine 0 or 1 will be used, depending on the number of unwind opcodes
|
|
required.
|
|
</p>
|
|
<a name="arm_005ffnstart"></a><a name="index-_002efnstart-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.fnstart</code></dt>
|
|
<dd><p>Marks the start of a function with an unwind table entry.
|
|
</p>
|
|
<a name="index-_002eforce_005fthumb-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.force_thumb</code></dt>
|
|
<dd><p>This directive forces the selection of Thumb instructions, even if the
|
|
target processor does not support those instructions
|
|
</p>
|
|
<a name="index-_002efpu-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.fpu <var>name</var></code></dt>
|
|
<dd><p>Select the floating-point unit to assemble for. Valid values for <var>name</var>
|
|
are the same as for the <samp>-mfpu</samp> command-line option.
|
|
</p>
|
|
|
|
<a name="index-_002ehandlerdata-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.handlerdata</code></dt>
|
|
<dd><p>Marks the end of the current function, and the start of the exception table
|
|
entry for that function. Anything between this directive and the
|
|
<code>.fnend</code> directive will be added to the exception table entry.
|
|
</p>
|
|
<p>Must be preceded by a <code>.personality</code> or <code>.personalityindex</code>
|
|
directive.
|
|
</p>
|
|
|
|
<a name="index-_002einst-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.inst <var>opcode</var> [ , … ]</code></dt>
|
|
<dt><code>.inst.n <var>opcode</var> [ , … ]</code></dt>
|
|
<dt><code>.inst.w <var>opcode</var> [ , … ]</code></dt>
|
|
<dd><p>Generates the instruction corresponding to the numerical value <var>opcode</var>.
|
|
<code>.inst.n</code> and <code>.inst.w</code> allow the Thumb instruction size to be
|
|
specified explicitly, overriding the normal encoding rules.
|
|
</p>
|
|
|
|
</dd>
|
|
<dt><code>.ldouble <var>expression</var> [, <var>expression</var>]*</code></dt>
|
|
<dd><p>See <code>.extend</code>.
|
|
</p>
|
|
<a name="index-_002eltorg-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.ltorg</code></dt>
|
|
<dd><p>This directive causes the current contents of the literal pool to be
|
|
dumped into the current section (which is assumed to be the .text
|
|
section) at the current location (aligned to a word boundary).
|
|
<code>GAS</code> maintains a separate literal pool for each section and each
|
|
sub-section. The <code>.ltorg</code> directive will only affect the literal
|
|
pool of the current section and sub-section. At the end of assembly
|
|
all remaining, un-empty literal pools will automatically be dumped.
|
|
</p>
|
|
<p>Note - older versions of <code>GAS</code> would dump the current literal
|
|
pool any time a section change occurred. This is no longer done, since
|
|
it prevents accurate control of the placement of literal pools.
|
|
</p>
|
|
|
|
<a name="index-_002emovsp-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.movsp <var>reg</var> [, #<var>offset</var>]</code></dt>
|
|
<dd><p>Tell the unwinder that <var>reg</var> contains an offset from the current
|
|
stack pointer. If <var>offset</var> is not specified then it is assumed to be
|
|
zero.
|
|
</p>
|
|
|
|
<a name="index-_002eobject_005farch-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.object_arch <var>name</var></code></dt>
|
|
<dd><p>Override the architecture recorded in the EABI object attribute section.
|
|
Valid values for <var>name</var> are the same as for the <code>.arch</code> directive.
|
|
Typically this is useful when code uses runtime detection of CPU features.
|
|
</p>
|
|
|
|
<a name="index-_002epacked-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.packed <var>expression</var> [, <var>expression</var>]*</code></dt>
|
|
<dd><p>This directive writes 12-byte packed floating-point values to the
|
|
output section. These are not compatible with current ARM processors
|
|
or ABIs.
|
|
</p>
|
|
<a name="arm_005fpad"></a><a name="index-_002epad-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.pad #<var>count</var></code></dt>
|
|
<dd><p>Generate unwinder annotations for a stack adjustment of <var>count</var> bytes.
|
|
A positive value indicates the function prologue allocated stack space by
|
|
decrementing the stack pointer.
|
|
</p>
|
|
<a name="index-_002epersonality-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.personality <var>name</var></code></dt>
|
|
<dd><p>Sets the personality routine for the current function to <var>name</var>.
|
|
</p>
|
|
<a name="index-_002epersonalityindex-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.personalityindex <var>index</var></code></dt>
|
|
<dd><p>Sets the personality routine for the current function to the EABI standard
|
|
routine number <var>index</var>
|
|
</p>
|
|
<a name="index-_002epool-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.pool</code></dt>
|
|
<dd><p>This is a synonym for .ltorg.
|
|
</p>
|
|
|
|
<a name="index-_002ereq-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code><var>name</var> .req <var>register name</var></code></dt>
|
|
<dd><p>This creates an alias for <var>register name</var> called <var>name</var>. For
|
|
example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> foo .req r0
|
|
</pre></div>
|
|
|
|
|
|
<a name="arm_005fsave"></a><a name="index-_002esave-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.save <var>reglist</var></code></dt>
|
|
<dd><p>Generate unwinder annotations to restore the registers in <var>reglist</var>.
|
|
The format of <var>reglist</var> is the same as the corresponding store-multiple
|
|
instruction.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><em>core registers</em>
|
|
</pre><pre class="smallexample"> .save {r4, r5, r6, lr}
|
|
stmfd sp!, {r4, r5, r6, lr}
|
|
</pre><pre class="smallexample"><em>FPA registers</em>
|
|
</pre><pre class="smallexample"> .save f4, 2
|
|
sfmfd f4, 2, [sp]!
|
|
</pre><pre class="smallexample"><em>VFP registers</em>
|
|
</pre><pre class="smallexample"> .save {d8, d9, d10}
|
|
fstmdx sp!, {d8, d9, d10}
|
|
</pre><pre class="smallexample"><em>iWMMXt registers</em>
|
|
</pre><pre class="smallexample"> .save {wr10, wr11}
|
|
wstrd wr11, [sp, #-8]!
|
|
wstrd wr10, [sp, #-8]!
|
|
or
|
|
.save wr11
|
|
wstrd wr11, [sp, #-8]!
|
|
.save wr10
|
|
wstrd wr10, [sp, #-8]!
|
|
</pre></div>
|
|
|
|
<a name="arm_005fsetfp"></a><a name="index-_002esetfp-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.setfp <var>fpreg</var>, <var>spreg</var> [, #<var>offset</var>]</code></dt>
|
|
<dd><p>Make all unwinder annotations relative to a frame pointer. Without this
|
|
the unwinder will use offsets from the stack pointer.
|
|
</p>
|
|
<p>The syntax of this directive is the same as the <code>add</code> or <code>mov</code>
|
|
instruction used to set the frame pointer. <var>spreg</var> must be either
|
|
<code>sp</code> or mentioned in a previous <code>.movsp</code> directive.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.movsp ip
|
|
mov ip, sp
|
|
…
|
|
.setfp fp, ip, #4
|
|
add fp, ip, #4
|
|
</pre></div>
|
|
|
|
<a name="index-_002esecrel32-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.secrel32 <var>expression</var> [, <var>expression</var>]*</code></dt>
|
|
<dd><p>This directive emits relocations that evaluate to the section-relative
|
|
offset of each expression’s symbol. This directive is only supported
|
|
for PE targets.
|
|
</p>
|
|
<a name="index-_002esyntax-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.syntax [<code>unified</code> | <code>divided</code>]</code></dt>
|
|
<dd><p>This directive sets the Instruction Set Syntax as described in the
|
|
<a href="#ARM_002dInstruction_002dSet">ARM-Instruction-Set</a> section.
|
|
</p>
|
|
|
|
<a name="index-_002ethumb-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.thumb</code></dt>
|
|
<dd><p>This performs the same action as <var>.code 16</var>.
|
|
</p>
|
|
<a name="index-_002ethumb_005ffunc-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.thumb_func</code></dt>
|
|
<dd><p>This directive specifies that the following symbol is the name of a
|
|
Thumb encoded function. This information is necessary in order to allow
|
|
the assembler and linker to generate correct code for interworking
|
|
between Arm and Thumb instructions and should be used even if
|
|
interworking is not going to be performed. The presence of this
|
|
directive also implies <code>.thumb</code>
|
|
</p>
|
|
<p>This directive is not necessary when generating EABI objects. On these
|
|
targets the encoding is implicit when generating Thumb code.
|
|
</p>
|
|
<a name="index-_002ethumb_005fset-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.thumb_set</code></dt>
|
|
<dd><p>This performs the equivalent of a <code>.set</code> directive in that it
|
|
creates a symbol which is an alias for another symbol (possibly not yet
|
|
defined). This directive also has the added property in that it marks
|
|
the aliased symbol as being a thumb function entry point, in the same
|
|
way that the <code>.thumb_func</code> directive does.
|
|
</p>
|
|
<a name="index-_002etlsdescseq-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.tlsdescseq <var>tls-variable</var></code></dt>
|
|
<dd><p>This directive is used to annotate parts of an inlined TLS descriptor
|
|
trampoline. Normally the trampoline is provided by the linker, and
|
|
this directive is not needed.
|
|
</p>
|
|
|
|
<a name="index-_002eunreq-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.unreq <var>alias-name</var></code></dt>
|
|
<dd><p>This undefines a register alias which was previously defined using the
|
|
<code>req</code>, <code>dn</code> or <code>qn</code> directives. For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> foo .req r0
|
|
.unreq foo
|
|
</pre></div>
|
|
|
|
<p>An error occurs if the name is undefined. Note - this pseudo op can
|
|
be used to delete builtin in register name aliases (eg ’r0’). This
|
|
should only be done if it is really necessary.
|
|
</p>
|
|
<a name="index-_002eunwind_005fraw-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.unwind_raw <var>offset</var>, <var>byte1</var>, …</code></dt>
|
|
<dd><p>Insert one of more arbitrary unwind opcode bytes, which are known to adjust
|
|
the stack pointer by <var>offset</var> bytes.
|
|
</p>
|
|
<p>For example <code>.unwind_raw 4, 0xb1, 0x01</code> is equivalent to
|
|
<code>.save {r0}</code>
|
|
</p>
|
|
|
|
<a name="index-_002evsave-directive_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>.vsave <var>vfp-reglist</var></code></dt>
|
|
<dd><p>Generate unwinder annotations to restore the VFP registers in <var>vfp-reglist</var>
|
|
using FLDMD. Also works for VFPv3 registers
|
|
that are to be restored using VLDM.
|
|
The format of <var>vfp-reglist</var> is the same as the corresponding store-multiple
|
|
instruction.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><em>VFP registers</em>
|
|
</pre><pre class="smallexample"> .vsave {d8, d9, d10}
|
|
fstmdd sp!, {d8, d9, d10}
|
|
</pre><pre class="smallexample"><em>VFPv3 registers</em>
|
|
</pre><pre class="smallexample"> .vsave {d15, d16, d17}
|
|
vstm sp!, {d15, d16, d17}
|
|
</pre></div>
|
|
|
|
<p>Since FLDMX and FSTMX are now deprecated, this directive should be
|
|
used in favour of <code>.save</code> for saving VFP registers for ARMv6 and above.
|
|
</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="ARM-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARM-Mapping-Symbols" accesskey="n" rel="next">ARM Mapping Symbols</a>, Previous: <a href="#ARM-Directives" accesskey="p" rel="previous">ARM Directives</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-3"></a>
|
|
<h4 class="subsection">9.4.5 Opcodes</h4>
|
|
|
|
<a name="index-ARM-opcodes"></a>
|
|
<a name="index-opcodes-for-ARM"></a>
|
|
<p><code>as</code> implements all the standard ARM opcodes. It also
|
|
implements several pseudo opcodes, including several synthetic load
|
|
instructions.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-NOP-pseudo-op_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>NOP</code></dt>
|
|
<dd><div class="smallexample">
|
|
<pre class="smallexample"> nop
|
|
</pre></div>
|
|
|
|
<p>This pseudo op will always evaluate to a legal ARM instruction that does
|
|
nothing. Currently it will evaluate to MOV r0, r0.
|
|
</p>
|
|
<a name="index-LDR-reg_002c_003d_003clabel_003e-pseudo-op_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>LDR</code></dt>
|
|
<dd><div class="smallexample">
|
|
<pre class="smallexample"> ldr <register> , = <expression>
|
|
</pre></div>
|
|
|
|
<p>If expression evaluates to a numeric constant then a MOV or MVN
|
|
instruction will be used in place of the LDR instruction, if the
|
|
constant can be generated by either of these instructions. Otherwise
|
|
the constant will be placed into the nearest literal pool (if it not
|
|
already there) and a PC relative LDR instruction will be generated.
|
|
</p>
|
|
<a name="index-ADR-reg_002c_003clabel_003e-pseudo-op_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>ADR</code></dt>
|
|
<dd><div class="smallexample">
|
|
<pre class="smallexample"> adr <register> <label>
|
|
</pre></div>
|
|
|
|
<p>This instruction will load the address of <var>label</var> into the indicated
|
|
register. The instruction will evaluate to a PC relative ADD or SUB
|
|
instruction depending upon where the label is located. If the label is
|
|
out of range, or if it is not defined in the same file (and section) as
|
|
the ADR instruction, then an error will be generated. This instruction
|
|
will not make use of the literal pool.
|
|
</p>
|
|
<p>If <var>label</var> is a thumb function symbol, and thumb interworking has
|
|
been enabled via the <samp>-mthumb-interwork</samp> option then the bottom
|
|
bit of the value stored into <var>register</var> will be set. This allows
|
|
the following sequence to work as expected:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> adr r0, thumb_function
|
|
blx r0
|
|
</pre></div>
|
|
|
|
<a name="index-ADRL-reg_002c_003clabel_003e-pseudo-op_002c-ARM"></a>
|
|
</dd>
|
|
<dt><code>ADRL</code></dt>
|
|
<dd><div class="smallexample">
|
|
<pre class="smallexample"> adrl <register> <label>
|
|
</pre></div>
|
|
|
|
<p>This instruction will load the address of <var>label</var> into the indicated
|
|
register. The instruction will evaluate to one or two PC relative ADD
|
|
or SUB instructions depending upon where the label is located. If a
|
|
second instruction is not needed a NOP instruction will be generated in
|
|
its place, so that this instruction is always 8 bytes long.
|
|
</p>
|
|
<p>If the label is out of range, or if it is not defined in the same file
|
|
(and section) as the ADRL instruction, then an error will be generated.
|
|
This instruction will not make use of the literal pool.
|
|
</p>
|
|
<p>If <var>label</var> is a thumb function symbol, and thumb interworking has
|
|
been enabled via the <samp>-mthumb-interwork</samp> option then the bottom
|
|
bit of the value stored into <var>register</var> will be set.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For information on the ARM or Thumb instruction sets, see <cite>ARM
|
|
Software Development Toolkit Reference Manual</cite>, Advanced RISC Machines
|
|
Ltd.
|
|
</p>
|
|
<hr>
|
|
<a name="ARM-Mapping-Symbols"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#ARM-Unwinding-Tutorial" accesskey="n" rel="next">ARM Unwinding Tutorial</a>, Previous: <a href="#ARM-Opcodes" accesskey="p" rel="previous">ARM Opcodes</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Mapping-Symbols-1"></a>
|
|
<h4 class="subsection">9.4.6 Mapping Symbols</h4>
|
|
|
|
<p>The ARM ELF specification requires that special symbols be inserted
|
|
into object files to mark certain features:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_0024a"></a>
|
|
</dd>
|
|
<dt><code>$a</code></dt>
|
|
<dd><p>At the start of a region of code containing ARM instructions.
|
|
</p>
|
|
<a name="index-_0024t"></a>
|
|
</dd>
|
|
<dt><code>$t</code></dt>
|
|
<dd><p>At the start of a region of code containing THUMB instructions.
|
|
</p>
|
|
<a name="index-_0024d-1"></a>
|
|
</dd>
|
|
<dt><code>$d</code></dt>
|
|
<dd><p>At the start of a region of data.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The assembler will automatically insert these symbols for you - there
|
|
is no need to code them yourself. Support for tagging symbols ($b,
|
|
$f, $p and $m) which is also mentioned in the current ARM ELF
|
|
specification is not implemented. This is because they have been
|
|
dropped from the new EABI and so tools cannot rely upon their
|
|
presence.
|
|
</p>
|
|
<hr>
|
|
<a name="ARM-Unwinding-Tutorial"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#ARM-Mapping-Symbols" accesskey="p" rel="previous">ARM Mapping Symbols</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Unwinding"></a>
|
|
<h4 class="subsection">9.4.7 Unwinding</h4>
|
|
|
|
<p>The ABI for the ARM Architecture specifies a standard format for
|
|
exception unwind information. This information is used when an
|
|
exception is thrown to determine where control should be transferred.
|
|
In particular, the unwind information is used to determine which
|
|
function called the function that threw the exception, and which
|
|
function called that one, and so forth. This information is also used
|
|
to restore the values of callee-saved registers in the function
|
|
catching the exception.
|
|
</p>
|
|
<p>If you are writing functions in assembly code, and those functions
|
|
call other functions that throw exceptions, you must use assembly
|
|
pseudo ops to ensure that appropriate exception unwind information is
|
|
generated. Otherwise, if one of the functions called by your assembly
|
|
code throws an exception, the run-time library will be unable to
|
|
unwind the stack through your assembly code and your program will not
|
|
behave correctly.
|
|
</p>
|
|
<p>To illustrate the use of these pseudo ops, we will examine the code
|
|
that G++ generates for the following C++ input:
|
|
</p>
|
|
<pre class="verbatim">void callee (int *);
|
|
|
|
int
|
|
caller ()
|
|
{
|
|
int i;
|
|
callee (&i);
|
|
return i;
|
|
}
|
|
</pre>
|
|
<p>This example does not show how to throw or catch an exception from
|
|
assembly code. That is a much more complex operation and should
|
|
always be done in a high-level language, such as C++, that directly
|
|
supports exceptions.
|
|
</p>
|
|
<p>The code generated by one particular version of G++ when compiling the
|
|
example above is:
|
|
</p>
|
|
<pre class="verbatim">_Z6callerv:
|
|
.fnstart
|
|
.LFB2:
|
|
@ Function supports interworking.
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
stmfd sp!, {fp, lr}
|
|
.save {fp, lr}
|
|
.LCFI0:
|
|
.setfp fp, sp, #4
|
|
add fp, sp, #4
|
|
.LCFI1:
|
|
.pad #8
|
|
sub sp, sp, #8
|
|
.LCFI2:
|
|
sub r3, fp, #8
|
|
mov r0, r3
|
|
bl _Z6calleePi
|
|
ldr r3, [fp, #-8]
|
|
mov r0, r3
|
|
sub sp, fp, #4
|
|
ldmfd sp!, {fp, lr}
|
|
bx lr
|
|
.LFE2:
|
|
.fnend
|
|
</pre>
|
|
<p>Of course, the sequence of instructions varies based on the options
|
|
you pass to GCC and on the version of GCC in use. The exact
|
|
instructions are not important since we are focusing on the pseudo ops
|
|
that are used to generate unwind information.
|
|
</p>
|
|
<p>An important assumption made by the unwinder is that the stack frame
|
|
does not change during the body of the function. In particular, since
|
|
we assume that the assembly code does not itself throw an exception,
|
|
the only point where an exception can be thrown is from a call, such
|
|
as the <code>bl</code> instruction above. At each call site, the same saved
|
|
registers (including <code>lr</code>, which indicates the return address)
|
|
must be located in the same locations relative to the frame pointer.
|
|
</p>
|
|
<p>The <code>.fnstart</code> (see <a href="#arm_005ffnstart">.fnstart pseudo op</a>) pseudo
|
|
op appears immediately before the first instruction of the function
|
|
while the <code>.fnend</code> (see <a href="#arm_005ffnend">.fnend pseudo op</a>) pseudo
|
|
op appears immediately after the last instruction of the function.
|
|
These pseudo ops specify the range of the function.
|
|
</p>
|
|
<p>Only the order of the other pseudos ops (e.g., <code>.setfp</code> or
|
|
<code>.pad</code>) matters; their exact locations are irrelevant. In the
|
|
example above, the compiler emits the pseudo ops with particular
|
|
instructions. That makes it easier to understand the code, but it is
|
|
not required for correctness. It would work just as well to emit all
|
|
of the pseudo ops other than <code>.fnend</code> in the same order, but
|
|
immediately after <code>.fnstart</code>.
|
|
</p>
|
|
<p>The <code>.save</code> (see <a href="#arm_005fsave">.save pseudo op</a>) pseudo op
|
|
indicates registers that have been saved to the stack so that they can
|
|
be restored before the function returns. The argument to the
|
|
<code>.save</code> pseudo op is a list of registers to save. If a register
|
|
is “callee-saved” (as specified by the ABI) and is modified by the
|
|
function you are writing, then your code must save the value before it
|
|
is modified and restore the original value before the function
|
|
returns. If an exception is thrown, the run-time library restores the
|
|
values of these registers from their locations on the stack before
|
|
returning control to the exception handler. (Of course, if an
|
|
exception is not thrown, the function that contains the <code>.save</code>
|
|
pseudo op restores these registers in the function epilogue, as is
|
|
done with the <code>ldmfd</code> instruction above.)
|
|
</p>
|
|
<p>You do not have to save callee-saved registers at the very beginning
|
|
of the function and you do not need to use the <code>.save</code> pseudo op
|
|
immediately following the point at which the registers are saved.
|
|
However, if you modify a callee-saved register, you must save it on
|
|
the stack before modifying it and before calling any functions which
|
|
might throw an exception. And, you must use the <code>.save</code> pseudo
|
|
op to indicate that you have done so.
|
|
</p>
|
|
<p>The <code>.pad</code> (see <a href="#arm_005fpad">.pad</a>) pseudo op indicates a
|
|
modification of the stack pointer that does not save any registers.
|
|
The argument is the number of bytes (in decimal) that are subtracted
|
|
from the stack pointer. (On ARM CPUs, the stack grows downwards, so
|
|
subtracting from the stack pointer increases the size of the stack.)
|
|
</p>
|
|
<p>The <code>.setfp</code> (see <a href="#arm_005fsetfp">.setfp pseudo op</a>) pseudo op
|
|
indicates the register that contains the frame pointer. The first
|
|
argument is the register that is set, which is typically <code>fp</code>.
|
|
The second argument indicates the register from which the frame
|
|
pointer takes its value. The third argument, if present, is the value
|
|
(in decimal) added to the register specified by the second argument to
|
|
compute the value of the frame pointer. You should not modify the
|
|
frame pointer in the body of the function.
|
|
</p>
|
|
<p>If you do not use a frame pointer, then you should not use the
|
|
<code>.setfp</code> pseudo op. If you do not use a frame pointer, then you
|
|
should avoid modifying the stack pointer outside of the function
|
|
prologue. Otherwise, the run-time library will be unable to find
|
|
saved registers when it is unwinding the stack.
|
|
</p>
|
|
<p>The pseudo ops described above are sufficient for writing assembly
|
|
code that calls functions which may throw exceptions. If you need to
|
|
know more about the object-file format used to represent unwind
|
|
information, you may consult the <cite>Exception Handling ABI for the
|
|
ARM Architecture</cite> available from <a href="http://infocenter.arm.com">http://infocenter.arm.com</a>.
|
|
</p>
|
|
|
|
|
|
<hr>
|
|
<a name="AVR_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Blackfin_002dDependent" accesskey="n" rel="next">Blackfin-Dependent</a>, Previous: <a href="#ARM_002dDependent" accesskey="p" rel="previous">ARM-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="AVR-Dependent-Features"></a>
|
|
<h3 class="section">9.5 AVR Dependent Features</h3>
|
|
|
|
|
|
<a name="index-AVR-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#AVR-Options" accesskey="1">AVR Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AVR-Syntax" accesskey="2">AVR Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AVR-Opcodes" accesskey="3">AVR Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AVR-Pseudo-Instructions" accesskey="4">AVR Pseudo Instructions</a>:</td><td> </td><td align="left" valign="top">Pseudo Instructions
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="AVR-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AVR-Syntax" accesskey="n" rel="next">AVR Syntax</a>, Up: <a href="#AVR_002dDependent" accesskey="u" rel="up">AVR-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-4"></a>
|
|
<h4 class="subsection">9.5.1 Options</h4>
|
|
<a name="index-AVR-options-_0028none_0029"></a>
|
|
<a name="index-options-for-AVR-_0028none_0029"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dmmcu_003d-command_002dline-option_002c-AVR"></a>
|
|
</dd>
|
|
<dt><code>-mmcu=<var>mcu</var></code></dt>
|
|
<dd><p>Specify ATMEL AVR instruction set or MCU type.
|
|
</p>
|
|
<p>Instruction set avr1 is for the minimal AVR core, not supported by the C
|
|
compiler, only for assembler programs (MCU types: at90s1200,
|
|
attiny11, attiny12, attiny15, attiny28).
|
|
</p>
|
|
<p>Instruction set avr2 (default) is for the classic AVR core with up to
|
|
8K program memory space (MCU types: at90s2313, at90s2323, at90s2333, at90s2343,
|
|
attiny22, attiny26, at90s4414, at90s4433, at90s4434, at90s8515, at90c8534,
|
|
at90s8535).
|
|
</p>
|
|
<p>Instruction set avr25 is for the classic AVR core with up to 8K program memory
|
|
space plus the MOVW instruction (MCU types: attiny13, attiny13a, attiny2313,
|
|
attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84,
|
|
attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny461,
|
|
attiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88,
|
|
attiny828, at86rf401, ata6289, ata5272).
|
|
</p>
|
|
<p>Instruction set avr3 is for the classic AVR core with up to 128K program
|
|
memory space (MCU types: at43usb355, at76c711).
|
|
</p>
|
|
<p>Instruction set avr31 is for the classic AVR core with exactly 128K program
|
|
memory space (MCU types: atmega103, at43usb320).
|
|
</p>
|
|
<p>Instruction set avr35 is for classic AVR core plus MOVW, CALL, and JMP
|
|
instructions (MCU types: attiny167, attiny1634, at90usb82, at90usb162,
|
|
atmega8u2, atmega16u2, atmega32u2, ata5505).
|
|
</p>
|
|
<p>Instruction set avr4 is for the enhanced AVR core with up to 8K program
|
|
memory space (MCU types: atmega48, atmega48a, atmega48pa, atmega48p, atmega8,
|
|
atmega8a, atmega88, atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535,
|
|
atmega8hva, at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81,
|
|
ata6285, ata6286).
|
|
</p>
|
|
<p>Instruction set avr5 is for the enhanced AVR core with up to 128K program
|
|
memory space (MCU types: at90pwm161, atmega16, atmega16a, atmega161, atmega162,
|
|
atmega163, atmega164a, atmega164p, atmega164pa, atmega165, atmega165a,
|
|
atmega165p, atmega165pa, atmega168, atmega168a, atmega168p, atmega168pa,
|
|
atmega169, atmega169a, atmega169p, atmega169pa, atmega32, atmega323, atmega324a,
|
|
atmega324p, atmega324pa, atmega325, atmega325a, atmega32, atmega32a, atmega323,
|
|
atmega324a, atmega324p, atmega324pa, atmega325, atmega325a, atmega325p,
|
|
atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa,
|
|
atmega328, atmega328p, atmega329, atmega329a, atmega329p, atmega329pa,
|
|
atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega64a,
|
|
atmega64rfr2, atmega644rfr2, atmega640, atmega644, atmega644a, atmega644p,
|
|
atmega644pa, atmega645, atmega645a, atmega645p, atmega6450, atmega6450a,
|
|
atmega6450p, atmega649, atmega649a, atmega649p, atmega6490, atmega6490a,
|
|
atmega6490p, atmega16hva, atmega16hva2, atmega16hvb, atmega16hvbrevb,
|
|
atmega32hvb, atmega32hvbrevb, atmega64hve, at90can32, at90can64, at90pwm161,
|
|
at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1, atmega32m1,
|
|
atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k,
|
|
at90scr100, ata5790, ata5795).
|
|
</p>
|
|
<p>Instruction set avr51 is for the enhanced AVR core with exactly 128K
|
|
program memory space (MCU types: atmega128, atmega128a, atmega1280,
|
|
atmega1281, atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2,
|
|
atmega1284rfr2, at90can128, at90usb1286, at90usb1287, m3000).
|
|
</p>
|
|
<p>Instruction set avr6 is for the enhanced AVR core with a 3-byte PC
|
|
(MCU types: atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2).
|
|
</p>
|
|
<p>Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K
|
|
program memory space and less than 64K data space (MCU types:
|
|
atxmega16a4, atxmega16a4u, atxmega16c4, atxmega16d4, atxmega16x1,
|
|
atxmega32a4, atxmega32a4u, atxmega32c4, atxmega32d4, atxmega16e5,
|
|
atxmega8e5, atxmega32e5, atxmega32x1).
|
|
</p>
|
|
<p>Instruction set avrxmega3 is for the XMEGA AVR core with up to 64K
|
|
of combined program memory and RAM, and with program memory
|
|
visible in the RAM address space (MCU types:
|
|
attiny212, attiny214, attiny412, attiny414, attiny416, attiny417,
|
|
attiny814, attiny816, attiny817, attiny1614, attiny1616, attiny1617,
|
|
attiny3214, attiny3216, attiny3217).
|
|
</p>
|
|
<p>Instruction set avrxmega4 is for the XMEGA AVR core with up to 64K
|
|
program memory space and less than 64K data space (MCU types:
|
|
atxmega64a3, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3,
|
|
atxmega64c3, atxmega64d3, atxmega64d4).
|
|
</p>
|
|
<p>Instruction set avrxmega5 is for the XMEGA AVR core with up to 64K
|
|
program memory space and greater than 64K data space (MCU types:
|
|
atxmega64a1, atxmega64a1u).
|
|
</p>
|
|
<p>Instruction set avrxmega6 is for the XMEGA AVR core with larger than
|
|
64K program memory space and less than 64K data space (MCU types:
|
|
atxmega128a3, atxmega128a3u, atxmega128c3, atxmega128d3, atxmega128d4,
|
|
atxmega192a3, atxmega192a3u, atxmega128b1, atxmega128b3, atxmega192c3,
|
|
atxmega192d3, atxmega256a3, atxmega256a3u, atxmega256a3b,
|
|
atxmega256a3bu, atxmega256c3, atxmega256d3, atxmega384c3,
|
|
atxmega256d3).
|
|
</p>
|
|
<p>Instruction set avrxmega7 is for the XMEGA AVR core with larger than
|
|
64K program memory space and greater than 64K data space (MCU types:
|
|
atxmega128a1, atxmega128a1u, atxmega128a4u).
|
|
</p>
|
|
<p>Instruction set avrtiny is for the ATtiny4/5/9/10/20/40
|
|
microcontrollers.
|
|
</p>
|
|
<a name="index-_002dmall_002dopcodes-command_002dline-option_002c-AVR"></a>
|
|
</dd>
|
|
<dt><code>-mall-opcodes</code></dt>
|
|
<dd><p>Accept all AVR opcodes, even if not supported by <code>-mmcu</code>.
|
|
</p>
|
|
<a name="index-_002dmno_002dskip_002dbug-command_002dline-option_002c-AVR"></a>
|
|
</dd>
|
|
<dt><code>-mno-skip-bug</code></dt>
|
|
<dd><p>This option disable warnings for skipping two-word instructions.
|
|
</p>
|
|
<a name="index-_002dmno_002dwrap-command_002dline-option_002c-AVR"></a>
|
|
</dd>
|
|
<dt><code>-mno-wrap</code></dt>
|
|
<dd><p>This option reject <code>rjmp/rcall</code> instructions with 8K wrap-around.
|
|
</p>
|
|
<a name="index-_002dmrmw-command_002dline-option_002c-AVR"></a>
|
|
</dd>
|
|
<dt><code>-mrmw</code></dt>
|
|
<dd><p>Accept Read-Modify-Write (<code>XCH,LAC,LAS,LAT</code>) instructions.
|
|
</p>
|
|
<a name="index-_002dmlink_002drelax-command_002dline-option_002c-AVR"></a>
|
|
</dd>
|
|
<dt><code>-mlink-relax</code></dt>
|
|
<dd><p>Enable support for link-time relaxation. This is now on by default
|
|
and this flag no longer has any effect.
|
|
</p>
|
|
<a name="index-_002dmno_002dlink_002drelax-command_002dline-option_002c-AVR"></a>
|
|
</dd>
|
|
<dt><code>-mno-link-relax</code></dt>
|
|
<dd><p>Disable support for link-time relaxation. The assembler will resolve
|
|
relocations when it can, and may be able to better compress some debug
|
|
information.
|
|
</p>
|
|
<a name="index-_002dmgcc_002disr-command_002dline-option_002c-AVR"></a>
|
|
</dd>
|
|
<dt><code>-mgcc-isr</code></dt>
|
|
<dd><p>Enable the <code>__gcc_isr</code> pseudo instruction.
|
|
</p>
|
|
<a name="index-_002dmno_002ddollar_002dline_002dseparator-command-line-option_002c-AVR"></a>
|
|
</dd>
|
|
<dt><code>-mno-dollar-line-separator</code></dt>
|
|
<dd><p>Do not treat the <code>$</code> character as a line separator character.
|
|
This is for languages where <code>$</code> is valid character inside symbol
|
|
names.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
<hr>
|
|
<a name="AVR-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AVR-Opcodes" accesskey="n" rel="next">AVR Opcodes</a>, Previous: <a href="#AVR-Options" accesskey="p" rel="previous">AVR Options</a>, Up: <a href="#AVR_002dDependent" accesskey="u" rel="up">AVR-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-6"></a>
|
|
<h4 class="subsection">9.5.2 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#AVR_002dChars" accesskey="1">AVR-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AVR_002dRegs" accesskey="2">AVR-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#AVR_002dModifiers" accesskey="3">AVR-Modifiers</a>:</td><td> </td><td align="left" valign="top">Relocatable Expression Modifiers
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="AVR_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AVR_002dRegs" accesskey="n" rel="next">AVR-Regs</a>, Up: <a href="#AVR-Syntax" accesskey="u" rel="up">AVR Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-4"></a>
|
|
<h4 class="subsubsection">9.5.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-AVR"></a>
|
|
<a name="index-AVR-line-comment-character"></a>
|
|
|
|
<p>The presence of a ‘<samp>;</samp>’ anywhere on a line indicates the start of a
|
|
comment that extends to the end of that line.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line, the whole line
|
|
is treated as a comment, but in this case the line can also be a
|
|
logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-AVR"></a>
|
|
<a name="index-statement-separator_002c-AVR"></a>
|
|
<a name="index-AVR-line-separator"></a>
|
|
|
|
<p>The ‘<samp>$</samp>’ character can be used instead of a newline to separate
|
|
statements. Note: the <samp>-mno-dollar-line-separator</samp> option
|
|
disables this behaviour.
|
|
</p>
|
|
<hr>
|
|
<a name="AVR_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AVR_002dModifiers" accesskey="n" rel="next">AVR-Modifiers</a>, Previous: <a href="#AVR_002dChars" accesskey="p" rel="previous">AVR-Chars</a>, Up: <a href="#AVR-Syntax" accesskey="u" rel="up">AVR Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-4"></a>
|
|
<h4 class="subsubsection">9.5.2.2 Register Names</h4>
|
|
|
|
<a name="index-AVR-register-names"></a>
|
|
<a name="index-register-names_002c-AVR"></a>
|
|
|
|
<p>The AVR has 32 x 8-bit general purpose working registers ‘<samp>r0</samp>’,
|
|
‘<samp>r1</samp>’, ... ‘<samp>r31</samp>’.
|
|
Six of the 32 registers can be used as three 16-bit indirect address
|
|
register pointers for Data Space addressing. One of the these address
|
|
pointers can also be used as an address pointer for look up tables in
|
|
Flash program memory. These added function registers are the 16-bit
|
|
‘<samp>X</samp>’, ‘<samp>Y</samp>’ and ‘<samp>Z</samp>’ - registers.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">X = <span class="roman">r26:r27</span>
|
|
Y = <span class="roman">r28:r29</span>
|
|
Z = <span class="roman">r30:r31</span>
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="AVR_002dModifiers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#AVR_002dRegs" accesskey="p" rel="previous">AVR-Regs</a>, Up: <a href="#AVR-Syntax" accesskey="u" rel="up">AVR Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Relocatable-Expression-Modifiers"></a>
|
|
<h4 class="subsubsection">9.5.2.3 Relocatable Expression Modifiers</h4>
|
|
|
|
<a name="index-AVR-modifiers"></a>
|
|
<a name="index-syntax_002c-AVR"></a>
|
|
|
|
<p>The assembler supports several modifiers when using relocatable addresses
|
|
in AVR instruction operands. The general syntax is the following:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">modifier(relocatable-expression)
|
|
</pre></div>
|
|
|
|
<dl compact="compact">
|
|
<dd><a name="index-symbol-modifiers"></a>
|
|
|
|
</dd>
|
|
<dt><code>lo8</code></dt>
|
|
<dd>
|
|
<p>This modifier allows you to use bits 0 through 7 of
|
|
an address expression as an 8 bit relocatable expression.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hi8</code></dt>
|
|
<dd>
|
|
<p>This modifier allows you to use bits 7 through 15 of an address expression
|
|
as an 8 bit relocatable expression. This is useful with, for example, the
|
|
AVR ‘<samp>ldi</samp>’ instruction and ‘<samp>lo8</samp>’ modifier.
|
|
</p>
|
|
<p>For example
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">ldi r26, lo8(sym+10)
|
|
ldi r27, hi8(sym+10)
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>hh8</code></dt>
|
|
<dd>
|
|
<p>This modifier allows you to use bits 16 through 23 of
|
|
an address expression as an 8 bit relocatable expression.
|
|
Also, can be useful for loading 32 bit constants.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hlo8</code></dt>
|
|
<dd>
|
|
<p>Synonym of ‘<samp>hh8</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hhi8</code></dt>
|
|
<dd>
|
|
<p>This modifier allows you to use bits 24 through 31 of
|
|
an expression as an 8 bit expression. This is useful with, for example, the
|
|
AVR ‘<samp>ldi</samp>’ instruction and ‘<samp>lo8</samp>’, ‘<samp>hi8</samp>’, ‘<samp>hlo8</samp>’,
|
|
‘<samp>hhi8</samp>’, modifier.
|
|
</p>
|
|
<p>For example
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">ldi r26, lo8(285774925)
|
|
ldi r27, hi8(285774925)
|
|
ldi r28, hlo8(285774925)
|
|
ldi r29, hhi8(285774925)
|
|
; r29,r28,r27,r26 = 285774925
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>pm_lo8</code></dt>
|
|
<dd>
|
|
<p>This modifier allows you to use bits 0 through 7 of
|
|
an address expression as an 8 bit relocatable expression.
|
|
This modifier is useful for addressing data or code from
|
|
Flash/Program memory by two-byte words. The use of ‘<samp>pm_lo8</samp>’
|
|
is similar to ‘<samp>lo8</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>pm_hi8</code></dt>
|
|
<dd>
|
|
<p>This modifier allows you to use bits 8 through 15 of
|
|
an address expression as an 8 bit relocatable expression.
|
|
This modifier is useful for addressing data or code from
|
|
Flash/Program memory by two-byte words.
|
|
</p>
|
|
<p>For example, when setting the AVR ‘<samp>Z</samp>’ register with the ‘<samp>ldi</samp>’
|
|
instruction for subsequent use by the ‘<samp>ijmp</samp>’ instruction:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">ldi r30, pm_lo8(sym)
|
|
ldi r31, pm_hi8(sym)
|
|
ijmp
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>pm_hh8</code></dt>
|
|
<dd>
|
|
<p>This modifier allows you to use bits 15 through 23 of
|
|
an address expression as an 8 bit relocatable expression.
|
|
This modifier is useful for addressing data or code from
|
|
Flash/Program memory by two-byte words.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="AVR-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AVR-Pseudo-Instructions" accesskey="n" rel="next">AVR Pseudo Instructions</a>, Previous: <a href="#AVR-Syntax" accesskey="p" rel="previous">AVR Syntax</a>, Up: <a href="#AVR_002dDependent" accesskey="u" rel="up">AVR-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-4"></a>
|
|
<h4 class="subsection">9.5.3 Opcodes</h4>
|
|
|
|
<a name="index-AVR-opcode-summary"></a>
|
|
<a name="index-opcode-summary_002c-AVR"></a>
|
|
<a name="index-mnemonics_002c-AVR"></a>
|
|
<a name="index-instruction-summary_002c-AVR"></a>
|
|
<p>For detailed information on the AVR machine instruction set, see
|
|
<a href="www.atmel.com/products/AVR">www.atmel.com/products/AVR</a>.
|
|
</p>
|
|
<p><code>as</code> implements all the standard AVR opcodes.
|
|
The following table summarizes the AVR opcodes, and their arguments.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><i>Legend:</i>
|
|
r <span class="roman">any register</span>
|
|
d <span class="roman">‘ldi’ register (r16-r31)</span>
|
|
v <span class="roman">‘movw’ even register (r0, r2, ..., r28, r30)</span>
|
|
a <span class="roman">‘fmul’ register (r16-r23)</span>
|
|
w <span class="roman">‘adiw’ register (r24,r26,r28,r30)</span>
|
|
e <span class="roman">pointer registers (X,Y,Z)</span>
|
|
b <span class="roman">base pointer register and displacement ([YZ]+disp)</span>
|
|
z <span class="roman">Z pointer register (for [e]lpm Rd,Z[+])</span>
|
|
M <span class="roman">immediate value from 0 to 255</span>
|
|
n <span class="roman">immediate value from 0 to 255 ( n = ~M ). Relocation impossible</span>
|
|
s <span class="roman">immediate value from 0 to 7</span>
|
|
P <span class="roman">Port address value from 0 to 63. (in, out)</span>
|
|
p <span class="roman">Port address value from 0 to 31. (cbi, sbi, sbic, sbis)</span>
|
|
K <span class="roman">immediate value from 0 to 63 (used in ‘adiw’, ‘sbiw’)</span>
|
|
i <span class="roman">immediate value</span>
|
|
l <span class="roman">signed pc relative offset from -64 to 63</span>
|
|
L <span class="roman">signed pc relative offset from -2048 to 2047</span>
|
|
h <span class="roman">absolute code address (call, jmp)</span>
|
|
S <span class="roman">immediate value from 0 to 7 (S = s << 4)</span>
|
|
? <span class="roman">use this opcode entry if no parameters, else use next opcode entry</span>
|
|
|
|
1001010010001000 clc
|
|
1001010011011000 clh
|
|
1001010011111000 cli
|
|
1001010010101000 cln
|
|
1001010011001000 cls
|
|
1001010011101000 clt
|
|
1001010010111000 clv
|
|
1001010010011000 clz
|
|
1001010000001000 sec
|
|
1001010001011000 seh
|
|
1001010001111000 sei
|
|
1001010000101000 sen
|
|
1001010001001000 ses
|
|
1001010001101000 set
|
|
1001010000111000 sev
|
|
1001010000011000 sez
|
|
100101001SSS1000 bclr S
|
|
100101000SSS1000 bset S
|
|
1001010100001001 icall
|
|
1001010000001001 ijmp
|
|
1001010111001000 lpm ?
|
|
1001000ddddd010+ lpm r,z
|
|
1001010111011000 elpm ?
|
|
1001000ddddd011+ elpm r,z
|
|
0000000000000000 nop
|
|
1001010100001000 ret
|
|
1001010100011000 reti
|
|
1001010110001000 sleep
|
|
1001010110011000 break
|
|
1001010110101000 wdr
|
|
1001010111101000 spm
|
|
000111rdddddrrrr adc r,r
|
|
000011rdddddrrrr add r,r
|
|
001000rdddddrrrr and r,r
|
|
000101rdddddrrrr cp r,r
|
|
000001rdddddrrrr cpc r,r
|
|
000100rdddddrrrr cpse r,r
|
|
001001rdddddrrrr eor r,r
|
|
001011rdddddrrrr mov r,r
|
|
100111rdddddrrrr mul r,r
|
|
001010rdddddrrrr or r,r
|
|
000010rdddddrrrr sbc r,r
|
|
000110rdddddrrrr sub r,r
|
|
001001rdddddrrrr clr r
|
|
000011rdddddrrrr lsl r
|
|
000111rdddddrrrr rol r
|
|
001000rdddddrrrr tst r
|
|
0111KKKKddddKKKK andi d,M
|
|
0111KKKKddddKKKK cbr d,n
|
|
1110KKKKddddKKKK ldi d,M
|
|
11101111dddd1111 ser d
|
|
0110KKKKddddKKKK ori d,M
|
|
0110KKKKddddKKKK sbr d,M
|
|
0011KKKKddddKKKK cpi d,M
|
|
0100KKKKddddKKKK sbci d,M
|
|
0101KKKKddddKKKK subi d,M
|
|
1111110rrrrr0sss sbrc r,s
|
|
1111111rrrrr0sss sbrs r,s
|
|
1111100ddddd0sss bld r,s
|
|
1111101ddddd0sss bst r,s
|
|
10110PPdddddPPPP in r,P
|
|
10111PPrrrrrPPPP out P,r
|
|
10010110KKddKKKK adiw w,K
|
|
10010111KKddKKKK sbiw w,K
|
|
10011000pppppsss cbi p,s
|
|
10011010pppppsss sbi p,s
|
|
10011001pppppsss sbic p,s
|
|
10011011pppppsss sbis p,s
|
|
111101lllllll000 brcc l
|
|
111100lllllll000 brcs l
|
|
111100lllllll001 breq l
|
|
111101lllllll100 brge l
|
|
111101lllllll101 brhc l
|
|
111100lllllll101 brhs l
|
|
111101lllllll111 brid l
|
|
111100lllllll111 brie l
|
|
111100lllllll000 brlo l
|
|
111100lllllll100 brlt l
|
|
111100lllllll010 brmi l
|
|
111101lllllll001 brne l
|
|
111101lllllll010 brpl l
|
|
111101lllllll000 brsh l
|
|
111101lllllll110 brtc l
|
|
111100lllllll110 brts l
|
|
111101lllllll011 brvc l
|
|
111100lllllll011 brvs l
|
|
111101lllllllsss brbc s,l
|
|
111100lllllllsss brbs s,l
|
|
1101LLLLLLLLLLLL rcall L
|
|
1100LLLLLLLLLLLL rjmp L
|
|
1001010hhhhh111h call h
|
|
1001010hhhhh110h jmp h
|
|
1001010rrrrr0101 asr r
|
|
1001010rrrrr0000 com r
|
|
1001010rrrrr1010 dec r
|
|
1001010rrrrr0011 inc r
|
|
1001010rrrrr0110 lsr r
|
|
1001010rrrrr0001 neg r
|
|
1001000rrrrr1111 pop r
|
|
1001001rrrrr1111 push r
|
|
1001010rrrrr0111 ror r
|
|
1001010rrrrr0010 swap r
|
|
00000001ddddrrrr movw v,v
|
|
00000010ddddrrrr muls d,d
|
|
000000110ddd0rrr mulsu a,a
|
|
000000110ddd1rrr fmul a,a
|
|
000000111ddd0rrr fmuls a,a
|
|
000000111ddd1rrr fmulsu a,a
|
|
1001001ddddd0000 sts i,r
|
|
1001000ddddd0000 lds r,i
|
|
10o0oo0dddddbooo ldd r,b
|
|
100!000dddddee-+ ld r,e
|
|
10o0oo1rrrrrbooo std b,r
|
|
100!001rrrrree-+ st e,r
|
|
1001010100011001 eicall
|
|
1001010000011001 eijmp
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="AVR-Pseudo-Instructions"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#AVR-Opcodes" accesskey="p" rel="previous">AVR Opcodes</a>, Up: <a href="#AVR_002dDependent" accesskey="u" rel="up">AVR-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Pseudo-Instructions"></a>
|
|
<h4 class="subsection">9.5.4 Pseudo Instructions</h4>
|
|
|
|
<p>The only available pseudo-instruction <code>__gcc_isr</code> can be activated by
|
|
option <samp>-mgcc-isr</samp>.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>__gcc_isr 1</code></dt>
|
|
<dd><p>Emit code chunk to be used in avr-gcc ISR prologue.
|
|
It will expand to at most six 1-word instructions, all optional:
|
|
push of <code>tmp_reg</code>, push of <code>SREG</code>,
|
|
push and clear of <code>zero_reg</code>, push of <var>Reg</var>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>__gcc_isr 2</code></dt>
|
|
<dd><p>Emit code chunk to be used in an avr-gcc ISR epilogue.
|
|
It will expand to at most five 1-word instructions, all optional:
|
|
pop of <var>Reg</var>, pop of <code>zero_reg</code>,
|
|
pop of <code>SREG</code>, pop of <code>tmp_reg</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>__gcc_isr 0, <var>Reg</var></code></dt>
|
|
<dd><p>Finish avr-gcc ISR function. Scan code since the last prologue
|
|
for usage of: <code>SREG</code>, <code>tmp_reg</code>, <code>zero_reg</code>.
|
|
Prologue chunk and epilogue chunks will be replaced by appropriate code
|
|
to save / restore <code>SREG</code>, <code>tmp_reg</code>, <code>zero_reg</code> and <var>Reg</var>.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Example input:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">__vector1:
|
|
__gcc_isr 1
|
|
lds r24, var
|
|
inc r24
|
|
sts var, r24
|
|
__gcc_isr 2
|
|
reti
|
|
__gcc_isr 0, r24
|
|
</pre></div>
|
|
|
|
<p>Example output:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">00000000 <__vector1>:
|
|
0: 8f 93 push r24
|
|
2: 8f b7 in r24, 0x3f
|
|
4: 8f 93 push r24
|
|
6: 80 91 60 00 lds r24, 0x0060 ; 0x800060 <var>
|
|
a: 83 95 inc r24
|
|
c: 80 93 60 00 sts 0x0060, r24 ; 0x800060 <var>
|
|
10: 8f 91 pop r24
|
|
12: 8f bf out 0x3f, r24
|
|
14: 8f 91 pop r24
|
|
16: 18 95 reti
|
|
</pre></div>
|
|
|
|
|
|
<hr>
|
|
<a name="Blackfin_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#BPF_002dDependent" accesskey="n" rel="next">BPF-Dependent</a>, Previous: <a href="#AVR_002dDependent" accesskey="p" rel="previous">AVR-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Blackfin-Dependent-Features"></a>
|
|
<h3 class="section">9.6 Blackfin Dependent Features</h3>
|
|
|
|
|
|
<a name="index-Blackfin-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Blackfin-Options" accesskey="1">Blackfin Options</a>:</td><td> </td><td align="left" valign="top">Blackfin Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Blackfin-Syntax" accesskey="2">Blackfin Syntax</a>:</td><td> </td><td align="left" valign="top">Blackfin Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Blackfin-Directives" accesskey="3">Blackfin Directives</a>:</td><td> </td><td align="left" valign="top">Blackfin Directives
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Blackfin-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Blackfin-Syntax" accesskey="n" rel="next">Blackfin Syntax</a>, Up: <a href="#Blackfin_002dDependent" accesskey="u" rel="up">Blackfin-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-5"></a>
|
|
<h4 class="subsection">9.6.1 Options</h4>
|
|
<a name="index-Blackfin-options-_0028none_0029"></a>
|
|
<a name="index-options-for-Blackfin-_0028none_0029"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dmcpu_003d-command_002dline-option_002c-Blackfin"></a>
|
|
</dd>
|
|
<dt><code>-mcpu=<var>processor</var><span class="roman">[</span>-<var>sirevision</var><span class="roman">]</span></code></dt>
|
|
<dd><p>This option specifies the target processor. The optional <var>sirevision</var>
|
|
is not used in assembler. It’s here such that GCC can easily pass down its
|
|
<code>-mcpu=</code> option. The assembler will issue an
|
|
error message if an attempt is made to assemble an instruction which
|
|
will not execute on the target processor. The following processor names are
|
|
recognized:
|
|
<code>bf504</code>,
|
|
<code>bf506</code>,
|
|
<code>bf512</code>,
|
|
<code>bf514</code>,
|
|
<code>bf516</code>,
|
|
<code>bf518</code>,
|
|
<code>bf522</code>,
|
|
<code>bf523</code>,
|
|
<code>bf524</code>,
|
|
<code>bf525</code>,
|
|
<code>bf526</code>,
|
|
<code>bf527</code>,
|
|
<code>bf531</code>,
|
|
<code>bf532</code>,
|
|
<code>bf533</code>,
|
|
<code>bf534</code>,
|
|
<code>bf535</code> (not implemented yet),
|
|
<code>bf536</code>,
|
|
<code>bf537</code>,
|
|
<code>bf538</code>,
|
|
<code>bf539</code>,
|
|
<code>bf542</code>,
|
|
<code>bf542m</code>,
|
|
<code>bf544</code>,
|
|
<code>bf544m</code>,
|
|
<code>bf547</code>,
|
|
<code>bf547m</code>,
|
|
<code>bf548</code>,
|
|
<code>bf548m</code>,
|
|
<code>bf549</code>,
|
|
<code>bf549m</code>,
|
|
<code>bf561</code>,
|
|
and
|
|
<code>bf592</code>.
|
|
</p>
|
|
<a name="index-_002dmfdpic-command_002dline-option_002c-Blackfin"></a>
|
|
</dd>
|
|
<dt><code>-mfdpic</code></dt>
|
|
<dd><p>Assemble for the FDPIC ABI.
|
|
</p>
|
|
<a name="index-_002dmno_002dfdpic-command_002dline-option_002c-Blackfin"></a>
|
|
<a name="index-_002dmnopic-command_002dline-option_002c-Blackfin"></a>
|
|
</dd>
|
|
<dt><code>-mno-fdpic</code></dt>
|
|
<dt><code>-mnopic</code></dt>
|
|
<dd><p>Disable -mfdpic.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Blackfin-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Blackfin-Directives" accesskey="n" rel="next">Blackfin Directives</a>, Previous: <a href="#Blackfin-Options" accesskey="p" rel="previous">Blackfin Options</a>, Up: <a href="#Blackfin_002dDependent" accesskey="u" rel="up">Blackfin-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-7"></a>
|
|
<h4 class="subsection">9.6.2 Syntax</h4>
|
|
<a name="index-Blackfin-syntax"></a>
|
|
<a name="index-syntax_002c-Blackfin"></a>
|
|
|
|
<dl compact="compact">
|
|
<dt><code>Special Characters</code></dt>
|
|
<dd><p>Assembler input is free format and may appear anywhere on the line.
|
|
One instruction may extend across multiple lines or more than one
|
|
instruction may appear on the same line. White space (space, tab,
|
|
comments or newline) may appear anywhere between tokens. A token must
|
|
not have embedded spaces. Tokens include numbers, register names,
|
|
keywords, user identifiers, and also some multicharacter special
|
|
symbols like "+=", "/*" or "||".
|
|
</p>
|
|
<p>Comments are introduced by the ‘<samp>#</samp>’ character and extend to the
|
|
end of the current line. If the ‘<samp>#</samp>’ appears as the first
|
|
character of a line, the whole line is treated as a comment, but in
|
|
this case the line can also be a logical line number directive
|
|
(see <a href="#Comments">Comments</a>) or a preprocessor control command
|
|
(see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
</dd>
|
|
<dt><code>Instruction Delimiting</code></dt>
|
|
<dd><p>A semicolon must terminate every instruction. Sometimes a complete
|
|
instruction will consist of more than one operation. There are two
|
|
cases where this occurs. The first is when two general operations
|
|
are combined. Normally a comma separates the different parts, as in
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">a0= r3.h * r2.l, a1 = r3.l * r2.h ;
|
|
</pre></div>
|
|
|
|
<p>The second case occurs when a general instruction is combined with one
|
|
or two memory references for joint issue. The latter portions are
|
|
set off by a "||" token.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">a0 = r3.h * r2.l || r1 = [p3++] || r4 = [i2++];
|
|
</pre></div>
|
|
|
|
<p>Multiple instructions can occur on the same line. Each must be
|
|
terminated by a semicolon character.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Register Names</code></dt>
|
|
<dd>
|
|
<p>The assembler treats register names and instruction keywords in a case
|
|
insensitive manner. User identifiers are case sensitive. Thus, R3.l,
|
|
R3.L, r3.l and r3.L are all equivalent input to the assembler.
|
|
</p>
|
|
<p>Register names are reserved and may not be used as program identifiers.
|
|
</p>
|
|
<p>Some operations (such as "Move Register") require a register pair.
|
|
Register pairs are always data registers and are denoted using a colon,
|
|
eg., R3:2. The larger number must be written firsts. Note that the
|
|
hardware only supports odd-even pairs, eg., R7:6, R5:4, R3:2, and R1:0.
|
|
</p>
|
|
<p>Some instructions (such as –SP (Push Multiple)) require a group of
|
|
adjacent registers. Adjacent registers are denoted in the syntax by
|
|
the range enclosed in parentheses and separated by a colon, eg., (R7:3).
|
|
Again, the larger number appears first.
|
|
</p>
|
|
<p>Portions of a particular register may be individually specified. This
|
|
is written with a dot (".") following the register name and then a
|
|
letter denoting the desired portion. For 32-bit registers, ".H"
|
|
denotes the most significant ("High") portion. ".L" denotes the
|
|
least-significant portion. The subdivisions of the 40-bit registers
|
|
are described later.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Accumulators</code></dt>
|
|
<dd><p>The set of 40-bit registers A1 and A0 that normally contain data that
|
|
is being manipulated. Each accumulator can be accessed in four ways.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>one 40-bit register</code></dt>
|
|
<dd><p>The register will be referred to as A1 or A0.
|
|
</p></dd>
|
|
<dt><code>one 32-bit register</code></dt>
|
|
<dd><p>The registers are designated as A1.W or A0.W.
|
|
</p></dd>
|
|
<dt><code>two 16-bit registers</code></dt>
|
|
<dd><p>The registers are designated as A1.H, A1.L, A0.H or A0.L.
|
|
</p></dd>
|
|
<dt><code>one 8-bit register</code></dt>
|
|
<dd><p>The registers are designated as A1.X or A0.X for the bits that
|
|
extend beyond bit 31.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt><code>Data Registers</code></dt>
|
|
<dd><p>The set of 32-bit registers (R0, R1, R2, R3, R4, R5, R6 and R7) that
|
|
normally contain data for manipulation. These are abbreviated as
|
|
D-register or Dreg. Data registers can be accessed as 32-bit registers
|
|
or as two independent 16-bit registers. The least significant 16 bits
|
|
of each register is called the "low" half and is designated with ".L"
|
|
following the register name. The most significant 16 bits are called
|
|
the "high" half and is designated with ".H" following the name.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> R7.L, r2.h, r4.L, R0.H
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>Pointer Registers</code></dt>
|
|
<dd><p>The set of 32-bit registers (P0, P1, P2, P3, P4, P5, SP and FP) that
|
|
normally contain byte addresses of data structures. These are
|
|
abbreviated as P-register or Preg.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">p2, p5, fp, sp
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>Stack Pointer SP</code></dt>
|
|
<dd><p>The stack pointer contains the 32-bit address of the last occupied
|
|
byte location in the stack. The stack grows by decrementing the
|
|
stack pointer.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Frame Pointer FP</code></dt>
|
|
<dd><p>The frame pointer contains the 32-bit address of the previous frame
|
|
pointer in the stack. It is located at the top of a frame.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Loop Top</code></dt>
|
|
<dd><p>LT0 and LT1. These registers contain the 32-bit address of the top of
|
|
a zero overhead loop.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Loop Count</code></dt>
|
|
<dd><p>LC0 and LC1. These registers contain the 32-bit counter of the zero
|
|
overhead loop executions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Loop Bottom</code></dt>
|
|
<dd><p>LB0 and LB1. These registers contain the 32-bit address of the bottom
|
|
of a zero overhead loop.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Index Registers</code></dt>
|
|
<dd><p>The set of 32-bit registers (I0, I1, I2, I3) that normally contain byte
|
|
addresses of data structures. Abbreviated I-register or Ireg.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Modify Registers</code></dt>
|
|
<dd><p>The set of 32-bit registers (M0, M1, M2, M3) that normally contain
|
|
offset values that are added and subtracted to one of the index
|
|
registers. Abbreviated as Mreg.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Length Registers</code></dt>
|
|
<dd><p>The set of 32-bit registers (L0, L1, L2, L3) that normally contain the
|
|
length in bytes of the circular buffer. Abbreviated as Lreg. Clear
|
|
the Lreg to disable circular addressing for the corresponding Ireg.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Base Registers</code></dt>
|
|
<dd><p>The set of 32-bit registers (B0, B1, B2, B3) that normally contain the
|
|
base address in bytes of the circular buffer. Abbreviated as Breg.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Floating Point</code></dt>
|
|
<dd><p>The Blackfin family has no hardware floating point but the .float
|
|
directive generates ieee floating point numbers for use with software
|
|
floating point libraries.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Blackfin Opcodes</code></dt>
|
|
<dd><p>For detailed information on the Blackfin machine instruction set, see
|
|
the Blackfin Processor Instruction Set Reference.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Blackfin-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Blackfin-Syntax" accesskey="p" rel="previous">Blackfin Syntax</a>, Up: <a href="#Blackfin_002dDependent" accesskey="u" rel="up">Blackfin-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directives"></a>
|
|
<h4 class="subsection">9.6.3 Directives</h4>
|
|
<a name="index-Blackfin-directives"></a>
|
|
<a name="index-directives_002c-Blackfin"></a>
|
|
|
|
<p>The following directives are provided for compatibility with the VDSP assembler.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>.byte2</code></dt>
|
|
<dd><p>Initializes a two byte data object.
|
|
</p>
|
|
<p>This maps to the <code>.short</code> directive.
|
|
</p></dd>
|
|
<dt><code>.byte4</code></dt>
|
|
<dd><p>Initializes a four byte data object.
|
|
</p>
|
|
<p>This maps to the <code>.int</code> directive.
|
|
</p></dd>
|
|
<dt><code>.db</code></dt>
|
|
<dd><p>Initializes a single byte data object.
|
|
</p>
|
|
<p>This directive is a synonym for <code>.byte</code>.
|
|
</p></dd>
|
|
<dt><code>.dw</code></dt>
|
|
<dd><p>Initializes a two byte data object.
|
|
</p>
|
|
<p>This directive is a synonym for <code>.byte2</code>.
|
|
</p></dd>
|
|
<dt><code>.dd</code></dt>
|
|
<dd><p>Initializes a four byte data object.
|
|
</p>
|
|
<p>This directive is a synonym for <code>.byte4</code>.
|
|
</p></dd>
|
|
<dt><code>.var</code></dt>
|
|
<dd><p>Define and initialize a 32 bit data object.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<hr>
|
|
<a name="BPF_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#CR16_002dDependent" accesskey="n" rel="next">CR16-Dependent</a>, Previous: <a href="#Blackfin_002dDependent" accesskey="p" rel="previous">Blackfin-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="BPF-Dependent-Features"></a>
|
|
<h3 class="section">9.7 BPF Dependent Features</h3>
|
|
|
|
|
|
<a name="index-BPF-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#BPF-Options" accesskey="1">BPF Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#BPF-Syntax" accesskey="2">BPF Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#BPF-Directives" accesskey="3">BPF Directives</a>:</td><td> </td><td align="left" valign="top">Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#BPF-Opcodes" accesskey="4">BPF Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="BPF-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#BPF-Syntax" accesskey="n" rel="next">BPF Syntax</a>, Up: <a href="#BPF_002dDependent" accesskey="u" rel="up">BPF-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-6"></a>
|
|
<h4 class="subsection">9.7.1 Options</h4>
|
|
<a name="index-BPF-options-_0028none_0029"></a>
|
|
<a name="index-options-for-BPF-_0028none_0029"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dEB-command_002dline-option_002c-BPF"></a>
|
|
</dd>
|
|
<dt><code>-EB</code></dt>
|
|
<dd><p>This option specifies that the assembler should emit big-endian eBPF.
|
|
</p>
|
|
<a name="index-_002dEL-command_002dline-option_002c-BPF"></a>
|
|
</dd>
|
|
<dt><code>-EL</code></dt>
|
|
<dd><p>This option specifies that the assembler should emit little-endian
|
|
eBPF.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Note that if no endianness option is specified in the command line,
|
|
the host endianness is used.
|
|
</p>
|
|
<hr>
|
|
<a name="BPF-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#BPF-Directives" accesskey="n" rel="next">BPF Directives</a>, Previous: <a href="#BPF-Options" accesskey="p" rel="previous">BPF Options</a>, Up: <a href="#BPF_002dDependent" accesskey="u" rel="up">BPF-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-8"></a>
|
|
<h4 class="subsection">9.7.2 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#BPF_002dChars" accesskey="1">BPF-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#BPF_002dRegs" accesskey="2">BPF-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#BPF_002dPseudo_002dMaps" accesskey="3">BPF-Pseudo-Maps</a>:</td><td> </td><td align="left" valign="top">Pseudo map fds
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="BPF_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#BPF_002dRegs" accesskey="n" rel="next">BPF-Regs</a>, Up: <a href="#BPF-Syntax" accesskey="u" rel="up">BPF Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-5"></a>
|
|
<h4 class="subsubsection">9.7.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-BPF"></a>
|
|
<a name="index-BPF-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>;</samp>’ on a line indicates the start of a comment
|
|
that extends to the end of the current line. If a ‘<samp>#</samp>’ appears as
|
|
the first character of a line, the whole line is treated as a comment.
|
|
</p>
|
|
<a name="index-statement-separator_002c-BPF"></a>
|
|
<p>Statements and assembly directives are separated by newlines.
|
|
</p>
|
|
<hr>
|
|
<a name="BPF_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#BPF_002dPseudo_002dMaps" accesskey="n" rel="next">BPF-Pseudo-Maps</a>, Previous: <a href="#BPF_002dChars" accesskey="p" rel="previous">BPF-Chars</a>, Up: <a href="#BPF-Syntax" accesskey="u" rel="up">BPF Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-5"></a>
|
|
<h4 class="subsubsection">9.7.2.2 Register Names</h4>
|
|
|
|
<a name="index-BPF-register-names"></a>
|
|
<a name="index-register-names_002c-BPF"></a>
|
|
<p>The eBPF processor provides ten general-purpose 64-bit registers,
|
|
which are read-write, and a read-only frame pointer register:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt>‘<samp>%r0 .. %r9</samp>’</dt>
|
|
<dd><p>General-purpose registers.
|
|
</p></dd>
|
|
<dt>‘<samp>%r10</samp>’</dt>
|
|
<dd><p>Frame pointer register.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Some registers have additional names, to reflect their role in the
|
|
eBPF ABI:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt>‘<samp>%a</samp>’</dt>
|
|
<dd><p>This is ‘<samp>%r0</samp>’.
|
|
</p></dd>
|
|
<dt>‘<samp>%ctx</samp>’</dt>
|
|
<dd><p>This is ‘<samp>%r6</samp>’.
|
|
</p></dd>
|
|
<dt>‘<samp>%fp</samp>’</dt>
|
|
<dd><p>This is ‘<samp>%r10</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="BPF_002dPseudo_002dMaps"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#BPF_002dRegs" accesskey="p" rel="previous">BPF-Regs</a>, Up: <a href="#BPF-Syntax" accesskey="u" rel="up">BPF Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Pseudo-Maps"></a>
|
|
<h4 class="subsubsection">9.7.2.3 Pseudo Maps</h4>
|
|
|
|
<a name="index-pseudo-map-fd_002c-BPF"></a>
|
|
<p>The ‘<samp>LDDW</samp>’ instruction can take a literal pseudo map file
|
|
descriptor as its second argument. This uses the syntax
|
|
‘<samp>%map_fd(N)</samp>’ where ‘<samp>N</samp>’ is a signed number.
|
|
</p>
|
|
<p>For example, to load the address of the pseudo map with file
|
|
descriptor ‘<samp>2</samp>’ in register ‘<samp>r1</samp>’ we would do:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> lddw %r1, %map_fd(2)
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="BPF-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#BPF-Opcodes" accesskey="n" rel="next">BPF Opcodes</a>, Previous: <a href="#BPF-Syntax" accesskey="p" rel="previous">BPF Syntax</a>, Up: <a href="#BPF_002dDependent" accesskey="u" rel="up">BPF-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Machine-Directives"></a>
|
|
<h4 class="subsection">9.7.3 Machine Directives</h4>
|
|
|
|
<a name="index-machine-directives_002c-BPF"></a>
|
|
|
|
<p>The BPF version of <code>as</code> supports the following additional
|
|
machine directives:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-half-directive_002c-BPF"></a>
|
|
</dd>
|
|
<dt><code>.word</code></dt>
|
|
<dd><p>The <code>.half</code> directive produces a 16 bit value.
|
|
</p>
|
|
<a name="index-word-directive_002c-BPF"></a>
|
|
</dd>
|
|
<dt><code>.word</code></dt>
|
|
<dd><p>The <code>.word</code> directive produces a 32 bit value.
|
|
</p>
|
|
<a name="index-dword-directive_002c-BPF"></a>
|
|
</dd>
|
|
<dt><code>.dword</code></dt>
|
|
<dd><p>The <code>.dword</code> directive produces a 64 bit value.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="BPF-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#BPF-Directives" accesskey="p" rel="previous">BPF Directives</a>, Up: <a href="#BPF_002dDependent" accesskey="u" rel="up">BPF-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-5"></a>
|
|
<h4 class="subsection">9.7.4 Opcodes</h4>
|
|
|
|
<a name="index-BPF-opcodes"></a>
|
|
<a name="index-opcodes-for-BPF"></a>
|
|
<p>In the instruction descriptions below the following field descriptors
|
|
are used:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>%d</code></dt>
|
|
<dd><p>Destination general-purpose register whose role is to be destination
|
|
of an operation.
|
|
</p></dd>
|
|
<dt><code>%s</code></dt>
|
|
<dd><p>Source general-purpose register whose role is to be the source of an
|
|
operation.
|
|
</p></dd>
|
|
<dt><code>disp16</code></dt>
|
|
<dd><p>16-bit signed PC-relative offset, measured in number of 64-bit words,
|
|
minus one.
|
|
</p></dd>
|
|
<dt><code>disp32</code></dt>
|
|
<dd><p>32-bit signed PC-relative offset, measured in number of 64-bit words,
|
|
minus one.
|
|
</p></dd>
|
|
<dt><code>offset16</code></dt>
|
|
<dd><p>Signed 16-bit immediate.
|
|
</p></dd>
|
|
<dt><code>imm32</code></dt>
|
|
<dd><p>Signed 32-bit immediate.
|
|
</p></dd>
|
|
<dt><code>imm64</code></dt>
|
|
<dd><p>Signed 64-bit immediate.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Arithmetic-instructions"></a>
|
|
<h4 class="subsubsection">9.7.4.1 Arithmetic instructions</h4>
|
|
|
|
<p>The destination register in these instructions act like an
|
|
accumulator.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>add %d, (%s|imm32)</code></dt>
|
|
<dd><p>64-bit arithmetic addition.
|
|
</p></dd>
|
|
<dt><code>sub %d, (%s|imm32)</code></dt>
|
|
<dd><p>64-bit arithmetic subtraction.
|
|
</p></dd>
|
|
<dt><code>mul %d, (%s|imm32)</code></dt>
|
|
<dd><p>64-bit arithmetic multiplication.
|
|
</p></dd>
|
|
<dt><code>div %d, (%s|imm32)</code></dt>
|
|
<dd><p>64-bit arithmetic integer division.
|
|
</p></dd>
|
|
<dt><code>mod %d, (%s|imm32)</code></dt>
|
|
<dd><p>64-bit integer remainder.
|
|
</p></dd>
|
|
<dt><code>and %d, (%s|imm32)</code></dt>
|
|
<dd><p>64-bit bit-wise “and” operation.
|
|
</p></dd>
|
|
<dt><code>or %d, (%s|imm32)</code></dt>
|
|
<dd><p>64-bit bit-wise “or” operation.
|
|
</p></dd>
|
|
<dt><code>xor %d, (%s|imm32)</code></dt>
|
|
<dd><p>64-bit bit-wise exclusive-or operation.
|
|
</p></dd>
|
|
<dt><code>lsh %d, (%s|imm32)</code></dt>
|
|
<dd><p>64-bit left shift, by <code>%s</code> or <code>imm32</code> bits.
|
|
</p></dd>
|
|
<dt><code>rsh %d, (%s|imm32)</code></dt>
|
|
<dd><p>64-bit right logical shift, by <code>%s</code> or <code>imm32</code> bits.
|
|
</p></dd>
|
|
<dt><code>arsh %d, (%s|imm32)</code></dt>
|
|
<dd><p>64-bit right arithmetic shift, by <code>%s</code> or <code>imm32</code> bits.
|
|
</p></dd>
|
|
<dt><code>neg %d</code></dt>
|
|
<dd><p>64-bit arithmetic negation.
|
|
</p></dd>
|
|
<dt><code>mov %d, (%s|imm32)</code></dt>
|
|
<dd><p>Move the 64-bit value of <code>%s</code> in <code>%d</code>, or load <code>imm32</code>
|
|
in <code>%d</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="g_t32_002dbit-arithmetic-instructions"></a>
|
|
<h4 class="subsubsection">9.7.4.2 32-bit arithmetic instructions</h4>
|
|
|
|
<p>The destination register in these instructions act as an accumulator.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>add32 %d, (%s|imm32)</code></dt>
|
|
<dd><p>32-bit arithmetic addition.
|
|
</p></dd>
|
|
<dt><code>sub32 %d, (%s|imm32)</code></dt>
|
|
<dd><p>32-bit arithmetic subtraction.
|
|
</p></dd>
|
|
<dt><code>mul32 %d, (%s|imm32)</code></dt>
|
|
<dd><p>32-bit arithmetic multiplication.
|
|
</p></dd>
|
|
<dt><code>div32 %d, (%s|imm32)</code></dt>
|
|
<dd><p>32-bit arithmetic integer division.
|
|
</p></dd>
|
|
<dt><code>mod32 %d, (%s|imm32)</code></dt>
|
|
<dd><p>32-bit integer remainder.
|
|
</p></dd>
|
|
<dt><code>and32 %d, (%s|imm32)</code></dt>
|
|
<dd><p>32-bit bit-wise “and” operation.
|
|
</p></dd>
|
|
<dt><code>or32 %d, (%s|imm32)</code></dt>
|
|
<dd><p>32-bit bit-wise “or” operation.
|
|
</p></dd>
|
|
<dt><code>xor32 %d, (%s|imm32)</code></dt>
|
|
<dd><p>32-bit bit-wise exclusive-or operation.
|
|
</p></dd>
|
|
<dt><code>lsh32 %d, (%s|imm32)</code></dt>
|
|
<dd><p>32-bit left shift, by <code>%s</code> or <code>imm32</code> bits.
|
|
</p></dd>
|
|
<dt><code>rsh32 %d, (%s|imm32)</code></dt>
|
|
<dd><p>32-bit right logical shift, by <code>%s</code> or <code>imm32</code> bits.
|
|
</p></dd>
|
|
<dt><code>arsh32 %d, (%s|imm32)</code></dt>
|
|
<dd><p>32-bit right arithmetic shift, by <code>%s</code> or <code>imm32</code> bits.
|
|
</p></dd>
|
|
<dt><code>neg32 %d</code></dt>
|
|
<dd><p>32-bit arithmetic negation.
|
|
</p></dd>
|
|
<dt><code>mov32 %d, (%s|imm32)</code></dt>
|
|
<dd><p>Move the 32-bit value of <code>%s</code> in <code>%d</code>, or load <code>imm32</code>
|
|
in <code>%d</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Endianness-conversion-instructions"></a>
|
|
<h4 class="subsubsection">9.7.4.3 Endianness conversion instructions</h4>
|
|
|
|
<dl compact="compact">
|
|
<dt><code>endle %d, (8|16|32)</code></dt>
|
|
<dd><p>Convert the 8-bit, 16-bit or 32-bit value in <code>%d</code> to
|
|
little-endian.
|
|
</p></dd>
|
|
<dt><code>endbe %d, (8|16|32)</code></dt>
|
|
<dd><p>Convert the 8-bit, 16-bit or 32-bit value in <code>%d</code> to big-endian.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="g_t64_002dbit-load-and-pseudo-maps"></a>
|
|
<h4 class="subsubsection">9.7.4.4 64-bit load and pseudo maps</h4>
|
|
|
|
<dl compact="compact">
|
|
<dt><code>lddw %d, imm64</code></dt>
|
|
<dd><p>Load the given signed 64-bit immediate, or pseudo map descriptor, to
|
|
the destination register <code>%d</code>.
|
|
</p></dd>
|
|
<dt><code>lddw %d, %map_fd(N)</code></dt>
|
|
<dd><p>Load the address of the given pseudo map fd <em>N</em> to the
|
|
destination register <code>%d</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Load-instructions-for-socket-filters"></a>
|
|
<h4 class="subsubsection">9.7.4.5 Load instructions for socket filters</h4>
|
|
|
|
<p>The following instructions are intended to be used in socket filters,
|
|
and are therefore not general-purpose: they make assumptions on the
|
|
contents of several registers. See the file
|
|
<samp>Documentation/networking/filter.txt</samp> in the Linux kernel source
|
|
tree for more information.
|
|
</p>
|
|
<p>Absolute loads:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>ldabsdw imm32</code></dt>
|
|
<dd><p>Absolute 64-bit load.
|
|
</p></dd>
|
|
<dt><code>ldabsw imm32</code></dt>
|
|
<dd><p>Absolute 32-bit load.
|
|
</p></dd>
|
|
<dt><code>ldabsh imm32</code></dt>
|
|
<dd><p>Absolute 16-bit load.
|
|
</p></dd>
|
|
<dt><code>ldabsb imm32</code></dt>
|
|
<dd><p>Absolute 8-bit load.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Indirect loads:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>ldinddw %s, imm32</code></dt>
|
|
<dd><p>Indirect 64-bit load.
|
|
</p></dd>
|
|
<dt><code>ldindw %s, imm32</code></dt>
|
|
<dd><p>Indirect 32-bit load.
|
|
</p></dd>
|
|
<dt><code>ldindh %s, imm32</code></dt>
|
|
<dd><p>Indirect 16-bit load.
|
|
</p></dd>
|
|
<dt><code>ldindb %s, imm32</code></dt>
|
|
<dd><p>Indirect 8-bit load.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Generic-load_002fstore-instructions"></a>
|
|
<h4 class="subsubsection">9.7.4.6 Generic load/store instructions</h4>
|
|
|
|
<p>General-purpose load and store instructions are provided for several
|
|
word sizes.
|
|
</p>
|
|
<p>Load to register instructions:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>ldxdw %d, [%s+offset16]</code></dt>
|
|
<dd><p>Generic 64-bit load.
|
|
</p></dd>
|
|
<dt><code>ldxw %d, [%s+offset16]</code></dt>
|
|
<dd><p>Generic 32-bit load.
|
|
</p></dd>
|
|
<dt><code>ldxh %d, [%s+offset16]</code></dt>
|
|
<dd><p>Generic 16-bit load.
|
|
</p></dd>
|
|
<dt><code>ldxb %d, [%s+offset16]</code></dt>
|
|
<dd><p>Generic 8-bit load.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Store from register instructions:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>stxdw [%d+offset16], %s</code></dt>
|
|
<dd><p>Generic 64-bit store.
|
|
</p></dd>
|
|
<dt><code>stxw [%d+offset16], %s</code></dt>
|
|
<dd><p>Generic 32-bit store.
|
|
</p></dd>
|
|
<dt><code>stxh [%d+offset16], %s</code></dt>
|
|
<dd><p>Generic 16-bit store.
|
|
</p></dd>
|
|
<dt><code>stxb [%d+offset16], %s</code></dt>
|
|
<dd><p>Generic 8-bit store.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Store from immediates instructions:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>stddw [%d+offset16], imm32</code></dt>
|
|
<dd><p>Store immediate as 64-bit.
|
|
</p></dd>
|
|
<dt><code>stdw [%d+offset16], imm32</code></dt>
|
|
<dd><p>Store immediate as 32-bit.
|
|
</p></dd>
|
|
<dt><code>stdh [%d+offset16], imm32</code></dt>
|
|
<dd><p>Store immediate as 16-bit.
|
|
</p></dd>
|
|
<dt><code>stdb [%d+offset16], imm32</code></dt>
|
|
<dd><p>Store immediate as 8-bit.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Jump-instructions"></a>
|
|
<h4 class="subsubsection">9.7.4.7 Jump instructions</h4>
|
|
|
|
<p>eBPF provides the following compare-and-jump instructions, which
|
|
compare the values of the two given registers, or the values of a
|
|
register and an immediate, and perform a branch in case the comparison
|
|
holds true.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>ja %d,(%s|imm32),disp16</code></dt>
|
|
<dd><p>Jump-always.
|
|
</p></dd>
|
|
<dt><code>jeq %d,(%s|imm32),disp16</code></dt>
|
|
<dd><p>Jump if equal.
|
|
</p></dd>
|
|
<dt><code>jgt %d,(%s|imm32),disp16</code></dt>
|
|
<dd><p>Jump if greater.
|
|
</p></dd>
|
|
<dt><code>jge %d,(%s|imm32),disp16</code></dt>
|
|
<dd><p>Jump if greater or equal.
|
|
</p></dd>
|
|
<dt><code>jlt %d,(%s|imm32),disp16</code></dt>
|
|
<dd><p>Jump if lesser.
|
|
</p></dd>
|
|
<dt><code>jle %d,(%s|imm32),disp16</code></dt>
|
|
<dd><p>Jump if lesser or equal.
|
|
</p></dd>
|
|
<dt><code>jset %d,(%s|imm32),disp16</code></dt>
|
|
<dd><p>Jump if signed equal.
|
|
</p></dd>
|
|
<dt><code>jne %d,(%s|imm32),disp16</code></dt>
|
|
<dd><p>Jump if not equal.
|
|
</p></dd>
|
|
<dt><code>jsgt %d,(%s|imm32),disp16</code></dt>
|
|
<dd><p>Jump if signed greater.
|
|
</p></dd>
|
|
<dt><code>jsge %d,(%s|imm32),disp16</code></dt>
|
|
<dd><p>Jump if signed greater or equal.
|
|
</p></dd>
|
|
<dt><code>jslt %d,(%s|imm32),disp16</code></dt>
|
|
<dd><p>Jump if signed lesser.
|
|
</p></dd>
|
|
<dt><code>jsle %d,(%s|imm32),disp16</code></dt>
|
|
<dd><p>Jump if signed lesser or equal.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>A call instruction is provided in order to perform calls to other eBPF
|
|
functions, or to external kernel helpers:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>call (disp32|imm32)</code></dt>
|
|
<dd><p>Jump and link to the offset <em>disp32</em>, or to the kernel helper
|
|
function identified by <em>imm32</em>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Finally:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>exit</code></dt>
|
|
<dd><p>Terminate the eBPF program.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Atomic-instructions"></a>
|
|
<h4 class="subsubsection">9.7.4.8 Atomic instructions</h4>
|
|
|
|
<p>Atomic exchange-and-add instructions are provided in two flavors: one
|
|
for swapping 64-bit quantities and another for 32-bit quantities.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>xadddw [%d+offset16],%s</code></dt>
|
|
<dd><p>Exchange-and-add a 64-bit value at the specified location.
|
|
</p></dd>
|
|
<dt><code>xaddw [%d+offset16],%s</code></dt>
|
|
<dd><p>Exchange-and-add a 32-bit value at the specified location.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<hr>
|
|
<a name="CR16_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#CRIS_002dDependent" accesskey="n" rel="next">CRIS-Dependent</a>, Previous: <a href="#BPF_002dDependent" accesskey="p" rel="previous">BPF-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="CR16-Dependent-Features"></a>
|
|
<h3 class="section">9.8 CR16 Dependent Features</h3>
|
|
|
|
<a name="index-CR16-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#CR16-Operand-Qualifiers" accesskey="1">CR16 Operand Qualifiers</a>:</td><td> </td><td align="left" valign="top">CR16 Machine Operand Qualifiers
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#CR16-Syntax" accesskey="2">CR16 Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax for the CR16
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="CR16-Operand-Qualifiers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#CR16-Syntax" accesskey="n" rel="next">CR16 Syntax</a>, Up: <a href="#CR16_002dDependent" accesskey="u" rel="up">CR16-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="CR16-Operand-Qualifiers-1"></a>
|
|
<h4 class="subsection">9.8.1 CR16 Operand Qualifiers</h4>
|
|
<a name="index-CR16-Operand-Qualifiers"></a>
|
|
|
|
<p>The National Semiconductor CR16 target of <code>as</code> has a few machine dependent operand qualifiers.
|
|
</p>
|
|
<p>Operand expression type qualifier is an optional field in the instruction operand, to determines the type of the expression field of an operand. The <code>@</code> is required. CR16 architecture uses one of the following expression qualifiers:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>s</code></dt>
|
|
<dd><p>- <code>Specifies expression operand type as small</code>
|
|
</p></dd>
|
|
<dt><code>m</code></dt>
|
|
<dd><p>- <code>Specifies expression operand type as medium</code>
|
|
</p></dd>
|
|
<dt><code>l</code></dt>
|
|
<dd><p>- <code>Specifies expression operand type as large</code>
|
|
</p></dd>
|
|
<dt><code>c</code></dt>
|
|
<dd><p>- <code>Specifies the CR16 Assembler generates a relocation entry for the operand, where pc has implied bit, the expression is adjusted accordingly. The linker uses the relocation entry to update the operand address at link time.</code>
|
|
</p></dd>
|
|
<dt><code>got/GOT</code></dt>
|
|
<dd><p>- <code>Specifies the CR16 Assembler generates a relocation entry for the operand, offset from Global Offset Table. The linker uses this relocation entry to update the operand address at link time</code>
|
|
</p></dd>
|
|
<dt><code>cgot/cGOT</code></dt>
|
|
<dd><p>- <code>Specifies the CompactRISC Assembler generates a relocation entry for the operand, where pc has implied bit, the expression is adjusted accordingly. The linker uses the relocation entry to update the operand address at link time.</code>
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>CR16 target operand qualifiers and its size (in bits):
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt>‘<samp>Immediate Operand: s</samp>’</dt>
|
|
<dd><p>4 bits.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>Immediate Operand: m</samp>’</dt>
|
|
<dd><p>16 bits, for movb and movw instructions.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>Immediate Operand: m</samp>’</dt>
|
|
<dd><p>20 bits, movd instructions.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>Immediate Operand: l</samp>’</dt>
|
|
<dd><p>32 bits.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>Absolute Operand: s</samp>’</dt>
|
|
<dd><p>Illegal specifier for this operand.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>Absolute Operand: m</samp>’</dt>
|
|
<dd><p>20 bits, movd instructions.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>Displacement Operand: s</samp>’</dt>
|
|
<dd><p>8 bits.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>Displacement Operand: m</samp>’</dt>
|
|
<dd><p>16 bits.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>Displacement Operand: l</samp>’</dt>
|
|
<dd><p>24 bits.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For example:
|
|
</p><div class="example">
|
|
<pre class="example">1 <code>movw $_myfun@c,r1</code>
|
|
|
|
This loads the address of _myfun, shifted right by 1, into r1.
|
|
|
|
2 <code>movd $_myfun@c,(r2,r1)</code>
|
|
|
|
This loads the address of _myfun, shifted right by 1, into register-pair r2-r1.
|
|
|
|
3 <code>_myfun_ptr:</code>
|
|
<code>.long _myfun@c</code>
|
|
<code>loadd _myfun_ptr, (r1,r0)</code>
|
|
<code>jal (r1,r0)</code>
|
|
|
|
This .long directive, the address of _myfunc, shifted right by 1 at link time.
|
|
|
|
4 <code>loadd _data1@GOT(r12), (r1,r0)</code>
|
|
|
|
This loads the address of _data1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r2-r1.
|
|
|
|
5 <code>loadd _myfunc@cGOT(r12), (r1,r0)</code>
|
|
|
|
This loads the address of _myfun, shifted right by 1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r1-r0.
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="CR16-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#CR16-Operand-Qualifiers" accesskey="p" rel="previous">CR16 Operand Qualifiers</a>, Up: <a href="#CR16_002dDependent" accesskey="u" rel="up">CR16-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="CR16-Syntax-1"></a>
|
|
<h4 class="subsection">9.8.2 CR16 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#CR16_002dChars" accesskey="1">CR16-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="CR16_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#CR16-Syntax" accesskey="u" rel="up">CR16 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-6"></a>
|
|
<h4 class="subsubsection">9.8.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-CR16"></a>
|
|
<a name="index-CR16-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>#</samp>’ on a line indicates the start of a comment
|
|
that extends to the end of the current line. If the ‘<samp>#</samp>’ appears
|
|
as the first character of a line, the whole line is treated as a
|
|
comment, but in this case the line can also be a logical line number
|
|
directive (see <a href="#Comments">Comments</a>) or a preprocessor control command
|
|
(see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-CR16"></a>
|
|
<a name="index-statement-separator_002c-CR16"></a>
|
|
<a name="index-CR16-line-separator"></a>
|
|
<p>The ‘<samp>;</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
<hr>
|
|
<a name="CRIS_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#C_002dSKY_002dDependent" accesskey="n" rel="next">C-SKY-Dependent</a>, Previous: <a href="#CR16_002dDependent" accesskey="p" rel="previous">CR16-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="CRIS-Dependent-Features"></a>
|
|
<h3 class="section">9.9 CRIS Dependent Features</h3>
|
|
|
|
<a name="index-CRIS-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#CRIS_002dOpts" accesskey="1">CRIS-Opts</a>:</td><td> </td><td align="left" valign="top">Command-line Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#CRIS_002dExpand" accesskey="2">CRIS-Expand</a>:</td><td> </td><td align="left" valign="top">Instruction expansion
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#CRIS_002dSymbols" accesskey="3">CRIS-Symbols</a>:</td><td> </td><td align="left" valign="top">Symbols
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#CRIS_002dSyntax" accesskey="4">CRIS-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="CRIS_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#CRIS_002dExpand" accesskey="n" rel="next">CRIS-Expand</a>, Up: <a href="#CRIS_002dDependent" accesskey="u" rel="up">CRIS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Command_002dline-Options"></a>
|
|
<h4 class="subsection">9.9.1 Command-line Options</h4>
|
|
|
|
<a name="index-options_002c-CRIS"></a>
|
|
<a name="index-CRIS-options"></a>
|
|
<p>The CRIS version of <code>as</code> has these
|
|
machine-dependent command-line options.
|
|
</p>
|
|
<a name="index-_002d_002demulation_003dcriself-command_002dline-option_002c-CRIS"></a>
|
|
<a name="index-_002d_002demulation_003dcrisaout-command_002dline-option_002c-CRIS"></a>
|
|
<a name="index-CRIS-_002d_002demulation_003dcriself-command_002dline-option"></a>
|
|
<a name="index-CRIS-_002d_002demulation_003dcrisaout-command_002dline-option"></a>
|
|
|
|
<p>The format of the generated object files can be either ELF or
|
|
a.out, specified by the command-line options
|
|
<samp>--emulation=crisaout</samp> and <samp>--emulation=criself</samp>.
|
|
The default is ELF (criself), unless <code>as</code> has been
|
|
configured specifically for a.out by using the configuration
|
|
name <code>cris-axis-aout</code>.
|
|
</p>
|
|
<a name="index-_002d_002dunderscore-command_002dline-option_002c-CRIS"></a>
|
|
<a name="index-_002d_002dno_002dunderscore-command_002dline-option_002c-CRIS"></a>
|
|
<a name="index-CRIS-_002d_002dunderscore-command_002dline-option"></a>
|
|
<a name="index-CRIS-_002d_002dno_002dunderscore-command_002dline-option"></a>
|
|
<p>There are two different link-incompatible ELF object file
|
|
variants for CRIS, for use in environments where symbols are
|
|
expected to be prefixed by a leading ‘<samp>_</samp>’ character and for
|
|
environments without such a symbol prefix. The variant used for
|
|
GNU/Linux port has no symbol prefix. Which variant to produce
|
|
is specified by either of the options <samp>--underscore</samp> and
|
|
<samp>--no-underscore</samp>. The default is <samp>--underscore</samp>.
|
|
Since symbols in CRIS a.out objects are expected to have a
|
|
‘<samp>_</samp>’ prefix, specifying <samp>--no-underscore</samp> when
|
|
generating a.out objects is an error. Besides the object format
|
|
difference, the effect of this option is to parse register names
|
|
differently (see <a href="#crisnous">crisnous</a>). The <samp>--no-underscore</samp>
|
|
option makes a ‘<samp>$</samp>’ register prefix mandatory.
|
|
</p>
|
|
<a name="index-_002d_002dpic-command_002dline-option_002c-CRIS"></a>
|
|
<a name="index-CRIS-_002d_002dpic-command_002dline-option"></a>
|
|
<a name="index-Position_002dindependent-code_002c-CRIS"></a>
|
|
<a name="index-CRIS-position_002dindependent-code"></a>
|
|
<p>The option <samp>--pic</samp> must be passed to <code>as</code> in
|
|
order to recognize the symbol syntax used for ELF (SVR4 PIC)
|
|
position-independent-code (see <a href="#crispic">crispic</a>). This will also
|
|
affect expansion of instructions. The expansion with
|
|
<samp>--pic</samp> will use PC-relative rather than (slightly
|
|
faster) absolute addresses in those expansions. This option is only
|
|
valid when generating ELF format object files.
|
|
</p>
|
|
<a name="index-_002d_002dmarch_003darchitecture-command_002dline-option_002c-CRIS"></a>
|
|
<a name="index-CRIS-_002d_002dmarch_003darchitecture-command_002dline-option"></a>
|
|
<a name="index-Architecture-variant-option_002c-CRIS"></a>
|
|
<a name="index-CRIS-architecture-variant-option"></a>
|
|
<p>The option <samp>--march=<var>architecture</var></samp>
|
|
<a name="march_002doption"></a>specifies the recognized instruction set
|
|
and recognized register names. It also controls the
|
|
architecture type of the object file. Valid values for
|
|
<var>architecture</var> are:
|
|
</p><dl compact="compact">
|
|
<dt><code>v0_v10</code></dt>
|
|
<dd><p>All instructions and register names for any architecture variant
|
|
in the set v0…v10 are recognized. This is the
|
|
default if the target is configured as cris-*.
|
|
</p>
|
|
</dd>
|
|
<dt><code>v10</code></dt>
|
|
<dd><p>Only instructions and register names for CRIS v10 (as found in
|
|
ETRAX 100 LX) are recognized. This is the default if the target
|
|
is configured as crisv10-*.
|
|
</p>
|
|
</dd>
|
|
<dt><code>v32</code></dt>
|
|
<dd><p>Only instructions and register names for CRIS v32 (code name
|
|
Guinness) are recognized. This is the default if the target is
|
|
configured as crisv32-*. This value implies
|
|
<samp>--no-mul-bug-abort</samp>. (A subsequent
|
|
<samp>--mul-bug-abort</samp> will turn it back on.)
|
|
</p>
|
|
</dd>
|
|
<dt><code>common_v10_v32</code></dt>
|
|
<dd><p>Only instructions with register names and addressing modes with
|
|
opcodes common to the v10 and v32 are recognized.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="index-_002dN-command_002dline-option_002c-CRIS"></a>
|
|
<a name="index-CRIS-_002dN-command_002dline-option"></a>
|
|
<p>When <samp>-N</samp> is specified, <code>as</code> will emit a
|
|
warning when a 16-bit branch instruction is expanded into a
|
|
32-bit multiple-instruction construct (see <a href="#CRIS_002dExpand">CRIS-Expand</a>).
|
|
</p>
|
|
<a name="index-_002d_002dno_002dmul_002dbug_002dabort-command_002dline-option_002c-CRIS"></a>
|
|
<a name="index-_002d_002dmul_002dbug_002dabort-command_002dline-option_002c-CRIS"></a>
|
|
<a name="index-CRIS-_002d_002dno_002dmul_002dbug_002dabort-command_002dline-option"></a>
|
|
<a name="index-CRIS-_002d_002dmul_002dbug_002dabort-command_002dline-option"></a>
|
|
|
|
<p>Some versions of the CRIS v10, for example in the Etrax 100 LX,
|
|
contain a bug that causes destabilizing memory accesses when a
|
|
multiply instruction is executed with certain values in the
|
|
first operand just before a cache-miss. When the
|
|
<samp>--mul-bug-abort</samp> command-line option is active (the
|
|
default value), <code>as</code> will refuse to assemble a file
|
|
containing a multiply instruction at a dangerous offset, one
|
|
that could be the last on a cache-line, or is in a section with
|
|
insufficient alignment. This placement checking does not catch
|
|
any case where the multiply instruction is dangerously placed
|
|
because it is located in a delay-slot. The
|
|
<samp>--mul-bug-abort</samp> command-line option turns off the
|
|
checking.
|
|
</p>
|
|
<hr>
|
|
<a name="CRIS_002dExpand"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#CRIS_002dSymbols" accesskey="n" rel="next">CRIS-Symbols</a>, Previous: <a href="#CRIS_002dOpts" accesskey="p" rel="previous">CRIS-Opts</a>, Up: <a href="#CRIS_002dDependent" accesskey="u" rel="up">CRIS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Instruction-expansion"></a>
|
|
<h4 class="subsection">9.9.2 Instruction expansion</h4>
|
|
|
|
<a name="index-instruction-expansion_002c-CRIS"></a>
|
|
<a name="index-CRIS-instruction-expansion"></a>
|
|
<p><code>as</code> will silently choose an instruction that fits
|
|
the operand size for ‘<samp>[register+constant]</samp>’ operands. For
|
|
example, the offset <code>127</code> in <code>move.d [r3+127],r4</code> fits
|
|
in an instruction using a signed-byte offset. Similarly,
|
|
<code>move.d [r2+32767],r1</code> will generate an instruction using a
|
|
16-bit offset. For symbolic expressions and constants that do
|
|
not fit in 16 bits including the sign bit, a 32-bit offset is
|
|
generated.
|
|
</p>
|
|
<p>For branches, <code>as</code> will expand from a 16-bit branch
|
|
instruction into a sequence of instructions that can reach a
|
|
full 32-bit address. Since this does not correspond to a single
|
|
instruction, such expansions can optionally be warned about.
|
|
See <a href="#CRIS_002dOpts">CRIS-Opts</a>.
|
|
</p>
|
|
<p>If the operand is found to fit the range, a <code>lapc</code> mnemonic
|
|
will translate to a <code>lapcq</code> instruction. Use <code>lapc.d</code>
|
|
to force the 32-bit <code>lapc</code> instruction.
|
|
</p>
|
|
<p>Similarly, the <code>addo</code> mnemonic will translate to the
|
|
shortest fitting instruction of <code>addoq</code>, <code>addo.w</code> and
|
|
<code>addo.d</code>, when used with a operand that is a constant known
|
|
at assembly time.
|
|
</p>
|
|
<hr>
|
|
<a name="CRIS_002dSymbols"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#CRIS_002dSyntax" accesskey="n" rel="next">CRIS-Syntax</a>, Previous: <a href="#CRIS_002dExpand" accesskey="p" rel="previous">CRIS-Expand</a>, Up: <a href="#CRIS_002dDependent" accesskey="u" rel="up">CRIS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbols-3"></a>
|
|
<h4 class="subsection">9.9.3 Symbols</h4>
|
|
<a name="index-Symbols_002c-built_002din_002c-CRIS"></a>
|
|
<a name="index-Symbols_002c-CRIS_002c-built_002din"></a>
|
|
<a name="index-CRIS-built_002din-symbols"></a>
|
|
<a name="index-Built_002din-symbols_002c-CRIS"></a>
|
|
|
|
<p>Some symbols are defined by the assembler. They’re intended to
|
|
be used in conditional assembly, for example:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> .if ..asm.arch.cris.v32
|
|
<var>code for CRIS v32</var>
|
|
.elseif ..asm.arch.cris.common_v10_v32
|
|
<var>code common to CRIS v32 and CRIS v10</var>
|
|
.elseif ..asm.arch.cris.v10 | ..asm.arch.cris.any_v0_v10
|
|
<var>code for v10</var>
|
|
.else
|
|
.error "Code needs to be added here."
|
|
.endif
|
|
</pre></div>
|
|
|
|
<p>These symbols are defined in the assembler, reflecting
|
|
command-line options, either when specified or the default.
|
|
They are always defined, to 0 or 1.
|
|
</p><dl compact="compact">
|
|
<dt><code>..asm.arch.cris.any_v0_v10</code></dt>
|
|
<dd><p>This symbol is non-zero when <samp>--march=v0_v10</samp> is specified
|
|
or the default.
|
|
</p>
|
|
</dd>
|
|
<dt><code>..asm.arch.cris.common_v10_v32</code></dt>
|
|
<dd><p>Set according to the option <samp>--march=common_v10_v32</samp>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>..asm.arch.cris.v10</code></dt>
|
|
<dd><p>Reflects the option <samp>--march=v10</samp>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>..asm.arch.cris.v32</code></dt>
|
|
<dd><p>Corresponds to <samp>--march=v10</samp>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Speaking of symbols, when a symbol is used in code, it can have
|
|
a suffix modifying its value for use in position-independent
|
|
code. See <a href="#CRIS_002dPic">CRIS-Pic</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="CRIS_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#CRIS_002dSymbols" accesskey="p" rel="previous">CRIS-Symbols</a>, Up: <a href="#CRIS_002dDependent" accesskey="u" rel="up">CRIS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-9"></a>
|
|
<h4 class="subsection">9.9.4 Syntax</h4>
|
|
|
|
<p>There are different aspects of the CRIS assembly syntax.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#CRIS_002dChars" accesskey="1">CRIS-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#CRIS_002dPic" accesskey="2">CRIS-Pic</a>:</td><td> </td><td align="left" valign="top">Position-Independent Code Symbols
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#CRIS_002dRegs" accesskey="3">CRIS-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#CRIS_002dPseudos" accesskey="4">CRIS-Pseudos</a>:</td><td> </td><td align="left" valign="top">Assembler Directives
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="CRIS_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#CRIS_002dPic" accesskey="n" rel="next">CRIS-Pic</a>, Up: <a href="#CRIS_002dSyntax" accesskey="u" rel="up">CRIS-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-7"></a>
|
|
<h4 class="subsubsection">9.9.4.1 Special Characters</h4>
|
|
<a name="index-line-comment-characters_002c-CRIS"></a>
|
|
<a name="index-CRIS-line-comment-characters"></a>
|
|
|
|
<p>The character ‘<samp>#</samp>’ is a line comment character. It starts a
|
|
comment if and only if it is placed at the beginning of a line.
|
|
</p>
|
|
<p>A ‘<samp>;</samp>’ character starts a comment anywhere on the line,
|
|
causing all characters up to the end of the line to be ignored.
|
|
</p>
|
|
<p>A ‘<samp>@</samp>’ character is handled as a line separator equivalent
|
|
to a logical new-line character (except in a comment), so
|
|
separate instructions can be specified on a single line.
|
|
</p>
|
|
<hr>
|
|
<a name="CRIS_002dPic"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#CRIS_002dRegs" accesskey="n" rel="next">CRIS-Regs</a>, Previous: <a href="#CRIS_002dChars" accesskey="p" rel="previous">CRIS-Chars</a>, Up: <a href="#CRIS_002dSyntax" accesskey="u" rel="up">CRIS-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbols-in-position_002dindependent-code"></a>
|
|
<h4 class="subsubsection">9.9.4.2 Symbols in position-independent code</h4>
|
|
<a name="index-Symbols-in-position_002dindependent-code_002c-CRIS"></a>
|
|
<a name="index-CRIS-symbols-in-position_002dindependent-code"></a>
|
|
<a name="index-Position_002dindependent-code_002c-symbols-in_002c-CRIS"></a>
|
|
|
|
<p>When generating <a name="crispic"></a>position-independent code (SVR4
|
|
PIC) for use in cris-axis-linux-gnu or crisv32-axis-linux-gnu
|
|
shared libraries, symbol
|
|
suffixes are used to specify what kind of run-time symbol lookup
|
|
will be used, expressed in the object as different
|
|
<em>relocation types</em>. Usually, all absolute symbol values
|
|
must be located in a table, the <em>global offset table</em>,
|
|
leaving the code position-independent; independent of values of
|
|
global symbols and independent of the address of the code. The
|
|
suffix modifies the value of the symbol, into for example an
|
|
index into the global offset table where the real symbol value
|
|
is entered, or a PC-relative value, or a value relative to the
|
|
start of the global offset table. All symbol suffixes start
|
|
with the character ‘<samp>:</samp>’ (omitted in the list below). Every
|
|
symbol use in code or a read-only section must therefore have a
|
|
PIC suffix to enable a useful shared library to be created.
|
|
Usually, these constructs must not be used with an additive
|
|
constant offset as is usually allowed, i.e. no 4 as in
|
|
<code>symbol + 4</code> is allowed. This restriction is checked at
|
|
link-time, not at assembly-time.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>GOT</code></dt>
|
|
<dd>
|
|
<p>Attaching this suffix to a symbol in an instruction causes the
|
|
symbol to be entered into the global offset table. The value is
|
|
a 32-bit index for that symbol into the global offset table.
|
|
The name of the corresponding relocation is
|
|
‘<samp>R_CRIS_32_GOT</samp>’. Example: <code>move.d
|
|
[$r0+extsym:GOT],$r9</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>GOT16</code></dt>
|
|
<dd>
|
|
<p>Same as for ‘<samp>GOT</samp>’, but the value is a 16-bit index into the
|
|
global offset table. The corresponding relocation is
|
|
‘<samp>R_CRIS_16_GOT</samp>’. Example: <code>move.d
|
|
[$r0+asymbol:GOT16],$r10</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>PLT</code></dt>
|
|
<dd>
|
|
<p>This suffix is used for function symbols. It causes a
|
|
<em>procedure linkage table</em>, an array of code stubs, to be
|
|
created at the time the shared object is created or linked
|
|
against, together with a global offset table entry. The value
|
|
is a pc-relative offset to the corresponding stub code in the
|
|
procedure linkage table. This arrangement causes the run-time
|
|
symbol resolver to be called to look up and set the value of the
|
|
symbol the first time the function is called (at latest;
|
|
depending environment variables). It is only safe to leave the
|
|
symbol unresolved this way if all references are function calls.
|
|
The name of the relocation is ‘<samp>R_CRIS_32_PLT_PCREL</samp>’.
|
|
Example: <code>add.d fnname:PLT,$pc</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>PLTG</code></dt>
|
|
<dd>
|
|
<p>Like PLT, but the value is relative to the beginning of the
|
|
global offset table. The relocation is
|
|
‘<samp>R_CRIS_32_PLT_GOTREL</samp>’. Example: <code>move.d
|
|
fnname:PLTG,$r3</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>GOTPLT</code></dt>
|
|
<dd>
|
|
<p>Similar to ‘<samp>PLT</samp>’, but the value of the symbol is a 32-bit
|
|
index into the global offset table. This is somewhat of a mix
|
|
between the effect of the ‘<samp>GOT</samp>’ and the ‘<samp>PLT</samp>’ suffix;
|
|
the difference to ‘<samp>GOT</samp>’ is that there will be a procedure
|
|
linkage table entry created, and that the symbol is assumed to
|
|
be a function entry and will be resolved by the run-time
|
|
resolver as with ‘<samp>PLT</samp>’. The relocation is
|
|
‘<samp>R_CRIS_32_GOTPLT</samp>’. Example: <code>jsr
|
|
[$r0+fnname:GOTPLT]</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>GOTPLT16</code></dt>
|
|
<dd>
|
|
<p>A variant of ‘<samp>GOTPLT</samp>’ giving a 16-bit value. Its
|
|
relocation name is ‘<samp>R_CRIS_16_GOTPLT</samp>’. Example: <code>jsr
|
|
[$r0+fnname:GOTPLT16]</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>GOTOFF</code></dt>
|
|
<dd>
|
|
<p>This suffix must only be attached to a local symbol, but may be
|
|
used in an expression adding an offset. The value is the
|
|
address of the symbol relative to the start of the global offset
|
|
table. The relocation name is ‘<samp>R_CRIS_32_GOTREL</samp>’.
|
|
Example: <code>move.d [$r0+localsym:GOTOFF],r3</code>
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="CRIS_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#CRIS_002dPseudos" accesskey="n" rel="next">CRIS-Pseudos</a>, Previous: <a href="#CRIS_002dPic" accesskey="p" rel="previous">CRIS-Pic</a>, Up: <a href="#CRIS_002dSyntax" accesskey="u" rel="up">CRIS-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-names"></a>
|
|
<h4 class="subsubsection">9.9.4.3 Register names</h4>
|
|
<a name="index-register-names_002c-CRIS"></a>
|
|
<a name="index-CRIS-register-names"></a>
|
|
|
|
<p>A ‘<samp>$</samp>’ character may always prefix a general or special
|
|
register name in an instruction operand but is mandatory when
|
|
the option <samp>--no-underscore</samp> is specified or when the
|
|
<code>.syntax register_prefix</code> directive is in effect
|
|
(see <a href="#crisnous">crisnous</a>). Register names are case-insensitive.
|
|
</p>
|
|
<hr>
|
|
<a name="CRIS_002dPseudos"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#CRIS_002dRegs" accesskey="p" rel="previous">CRIS-Regs</a>, Up: <a href="#CRIS_002dSyntax" accesskey="u" rel="up">CRIS-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-Directives-1"></a>
|
|
<h4 class="subsubsection">9.9.4.4 Assembler Directives</h4>
|
|
<a name="index-assembler-directives_002c-CRIS"></a>
|
|
<a name="index-pseudo_002dops_002c-CRIS"></a>
|
|
<a name="index-CRIS-assembler-directives"></a>
|
|
<a name="index-CRIS-pseudo_002dops"></a>
|
|
|
|
<p>There are a few CRIS-specific pseudo-directives in addition to
|
|
the generic ones. See <a href="#Pseudo-Ops">Pseudo Ops</a>. Constants emitted by
|
|
pseudo-directives are in little-endian order for CRIS. There is
|
|
no support for floating-point-specific directives for CRIS.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>.dword EXPRESSIONS</code></dt>
|
|
<dd><a name="index-assembler-directive-_002edword_002c-CRIS"></a>
|
|
<a name="index-pseudo_002dop-_002edword_002c-CRIS"></a>
|
|
<a name="index-CRIS-assembler-directive-_002edword"></a>
|
|
<a name="index-CRIS-pseudo_002dop-_002edword"></a>
|
|
|
|
<p>The <code>.dword</code> directive is a synonym for <code>.int</code>,
|
|
expecting zero or more EXPRESSIONS, separated by commas. For
|
|
each expression, a 32-bit little-endian constant is emitted.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.syntax ARGUMENT</code></dt>
|
|
<dd><a name="index-assembler-directive-_002esyntax_002c-CRIS"></a>
|
|
<a name="index-pseudo_002dop-_002esyntax_002c-CRIS"></a>
|
|
<a name="index-CRIS-assembler-directive-_002esyntax"></a>
|
|
<a name="index-CRIS-pseudo_002dop-_002esyntax"></a>
|
|
<p>The <code>.syntax</code> directive takes as <var>ARGUMENT</var> one of the
|
|
following case-sensitive choices.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>no_register_prefix</code></dt>
|
|
<dd>
|
|
<p>The <code>.syntax no_register_prefix</code> <a name="crisnous"></a>directive
|
|
makes a ‘<samp>$</samp>’ character prefix on all registers optional. It
|
|
overrides a previous setting, including the corresponding effect
|
|
of the option <samp>--no-underscore</samp>. If this directive is
|
|
used when ordinary symbols do not have a ‘<samp>_</samp>’ character
|
|
prefix, care must be taken to avoid ambiguities whether an
|
|
operand is a register or a symbol; using symbols with names the
|
|
same as general or special registers then invoke undefined
|
|
behavior.
|
|
</p>
|
|
</dd>
|
|
<dt><code>register_prefix</code></dt>
|
|
<dd>
|
|
<p>This directive makes a ‘<samp>$</samp>’ character prefix on all
|
|
registers mandatory. It overrides a previous setting, including
|
|
the corresponding effect of the option <samp>--underscore</samp>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>leading_underscore</code></dt>
|
|
<dd>
|
|
<p>This is an assertion directive, emitting an error if the
|
|
<samp>--no-underscore</samp> option is in effect.
|
|
</p>
|
|
</dd>
|
|
<dt><code>no_leading_underscore</code></dt>
|
|
<dd>
|
|
<p>This is the opposite of the <code>.syntax leading_underscore</code>
|
|
directive and emits an error if the option <samp>--underscore</samp>
|
|
is in effect.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt><code>.arch ARGUMENT</code></dt>
|
|
<dd><a name="index-assembler-directive-_002earch_002c-CRIS"></a>
|
|
<a name="index-pseudo_002dop-_002earch_002c-CRIS"></a>
|
|
<a name="index-CRIS-assembler-directive-_002earch"></a>
|
|
<a name="index-CRIS-pseudo_002dop-_002earch"></a>
|
|
<p>This is an assertion directive, giving an error if the specified
|
|
<var>ARGUMENT</var> is not the same as the specified or default value
|
|
for the <samp>--march=<var>architecture</var></samp> option
|
|
(see <a href="#march_002doption">march-option</a>).
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="C_002dSKY_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D10V_002dDependent" accesskey="n" rel="next">D10V-Dependent</a>, Previous: <a href="#CRIS_002dDependent" accesskey="p" rel="previous">CRIS-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="C_002dSKY-Dependent-Features"></a>
|
|
<h3 class="section">9.10 C-SKY Dependent Features</h3>
|
|
|
|
<a name="index-C_002dSKY-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#C_002dSKY-Options" accesskey="1">C-SKY Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#C_002dSKY-Syntax" accesskey="2">C-SKY Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="C_002dSKY-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#C_002dSKY-Syntax" accesskey="n" rel="next">C-SKY Syntax</a>, Up: <a href="#C_002dSKY_002dDependent" accesskey="u" rel="up">C-SKY-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-7"></a>
|
|
<h4 class="subsection">9.10.1 Options</h4>
|
|
<a name="index-C_002dSKY-options"></a>
|
|
<a name="index-options-for-C_002dSKY"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-march-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-march=<var>archname</var></code></dt>
|
|
<dd><p>Assemble for architecture <var>archname</var>. The <samp>--help</samp> option
|
|
lists valid values for <var>archname</var>.
|
|
</p>
|
|
<a name="index-mcpu-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mcpu=<var>cpuname</var></code></dt>
|
|
<dd><p>Assemble for architecture <var>cpuname</var>. The <samp>--help</samp> option
|
|
lists valid values for <var>cpuname</var>.
|
|
</p>
|
|
<a name="index-EL-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mlittle_002dendian-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-EL</code></dt>
|
|
<dt><code>-mlittle-endian</code></dt>
|
|
<dd><p>Generate little-endian output.
|
|
</p>
|
|
<a name="index-EB-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mbig_002dendian-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-EB</code></dt>
|
|
<dt><code>-mbig-endian</code></dt>
|
|
<dd><p>Generate big-endian output.
|
|
</p>
|
|
<a name="index-fpic-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-pic-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-fpic</code></dt>
|
|
<dt><code>-pic</code></dt>
|
|
<dd><p>Generate position-independent code.
|
|
</p>
|
|
<a name="index-mljump-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mno_002dljump-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mljump</code></dt>
|
|
<dt><code>-mno-ljump</code></dt>
|
|
<dd><p>Enable/disable transformation of the short branch instructions
|
|
<code>jbf</code>, <code>jbt</code>, and <code>jbr</code> to <code>jmpi</code>.
|
|
This option is for V2 processors only.
|
|
It is ignored on CK801 and CK802 targets, which do not support the <code>jmpi</code>
|
|
instruction, and is enabled by default for other processors.
|
|
</p>
|
|
<a name="index-mbranch_002dstub-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mno_002dbranch_002dstub-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mbranch-stub</code></dt>
|
|
<dt><code>-mno-branch-stub</code></dt>
|
|
<dd><p>Pass through <code>R_CKCORE_PCREL_IMM26BY2</code> relocations for <code>bsr</code>
|
|
instructions to the linker.
|
|
</p>
|
|
<p>This option is only available for bare-metal C-SKY V2 ELF targets,
|
|
where it is enabled by default. It cannot be used in code that will be
|
|
dynamically linked against shared libraries.
|
|
</p>
|
|
<a name="index-force2bsr-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mforce2bsr-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-no_002dforce2bsr-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mno_002dforce2bsr-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-force2bsr</code></dt>
|
|
<dt><code>-mforce2bsr</code></dt>
|
|
<dt><code>-no-force2bsr</code></dt>
|
|
<dt><code>-mno-force2bsr</code></dt>
|
|
<dd><p>Enable/disable transformation of <code>jbsr</code> instructions to <code>bsr</code>.
|
|
This option is always enabled (and <samp>-mno-force2bsr</samp> is ignored)
|
|
for CK801/CK802 targets. It is also always enabled when
|
|
<samp>-mbranch-stub</samp> is in effect.
|
|
</p>
|
|
<a name="index-jsri2bsr-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mjsri2bsr-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-no_002djsri2bsr-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mno_002djsri2bsr-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-jsri2bsr</code></dt>
|
|
<dt><code>-mjsri2bsr</code></dt>
|
|
<dt><code>-no-jsri2bsr</code></dt>
|
|
<dt><code>-mno-jsri2bsr</code></dt>
|
|
<dd><p>Enable/disable transformation of <code>jsri</code> instructions to <code>bsr</code>.
|
|
This option is enabled by default.
|
|
</p>
|
|
<a name="index-mnolrw-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mno_002dlrw-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mnolrw</code></dt>
|
|
<dt><code>-mno-lrw</code></dt>
|
|
<dd><p>Enable/disable transformation of <code>lrw</code> instructions into a
|
|
<code>movih</code>/<code>ori</code> pair.
|
|
</p>
|
|
<a name="index-melrw-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mno_002delrw-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-melrw</code></dt>
|
|
<dt><code>-mno-elrw</code></dt>
|
|
<dd><p>Enable/disable extended <code>lrw</code> instructions.
|
|
This option is enabled by default for CK800-series processors.
|
|
</p>
|
|
<a name="index-mlaf-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mliterals_002dafter_002dfunc-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mno_002dlaf-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mno_002dliterals_002dafter_002dfunc-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mlaf</code></dt>
|
|
<dt><code>-mliterals-after-func</code></dt>
|
|
<dt><code>-mno-laf</code></dt>
|
|
<dt><code>-mno-literals-after-func</code></dt>
|
|
<dd><p>Enable/disable placement of literal pools after each function.
|
|
</p>
|
|
<a name="index-mlabr-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mliterals_002dafter_002dbr-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mno_002dlabr-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mnoliterals_002dafter_002dbr-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mlabr</code></dt>
|
|
<dt><code>-mliterals-after-br</code></dt>
|
|
<dt><code>-mno-labr</code></dt>
|
|
<dt><code>-mnoliterals-after-br</code></dt>
|
|
<dd><p>Enable/disable placement of literal pools after unconditional branches.
|
|
This option is enabled by default.
|
|
</p>
|
|
<a name="index-mistack-command_002dline-option_002c-C_002dSKY"></a>
|
|
<a name="index-mno_002distack-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mistack</code></dt>
|
|
<dt><code>-mno-istack</code></dt>
|
|
<dd><p>Enable/disable interrupt stack instructions. This option is enabled by
|
|
default on CK801, CK802, and CK802 processors.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The following options explicitly enable certain optional instructions.
|
|
These features are also enabled implicitly by using <code>-mcpu=</code> to specify
|
|
a processor that supports it.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-mhard_002dfloat-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mhard-float</code></dt>
|
|
<dd><p>Enable hard float instructions.
|
|
</p>
|
|
<a name="index-mmp-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mmp</code></dt>
|
|
<dd><p>Enable multiprocessor instructions.
|
|
</p>
|
|
<a name="index-mcp-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mcp</code></dt>
|
|
<dd><p>Enable coprocessor instructions.
|
|
</p>
|
|
<a name="index-mcache-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mcache</code></dt>
|
|
<dd><p>Enable cache prefetch instruction.
|
|
</p>
|
|
<a name="index-msecurity-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-msecurity</code></dt>
|
|
<dd><p>Enable C-SKY security instructions.
|
|
</p>
|
|
<a name="index-mtrust-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mtrust</code></dt>
|
|
<dd><p>Enable C-SKY trust instructions.
|
|
</p>
|
|
<a name="index-mdsp-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mdsp</code></dt>
|
|
<dd><p>Enable DSP instructions.
|
|
</p>
|
|
<a name="index-medsp-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-medsp</code></dt>
|
|
<dd><p>Enable enhanced DSP instructions.
|
|
</p>
|
|
<a name="index-mvdsp-command_002dline-option_002c-C_002dSKY"></a>
|
|
</dd>
|
|
<dt><code>-mvdsp</code></dt>
|
|
<dd><p>Enable vector DSP instructions.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="C_002dSKY-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#C_002dSKY-Options" accesskey="p" rel="previous">C-SKY Options</a>, Up: <a href="#C_002dSKY_002dDependent" accesskey="u" rel="up">C-SKY-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-10"></a>
|
|
<h4 class="subsection">9.10.2 Syntax</h4>
|
|
|
|
<p><code>as</code> implements the standard C-SKY assembler syntax
|
|
documented in the
|
|
<cite>C-SKY V2 CPU Applications Binary Interface Standards Manual</cite>.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="D10V_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D30V_002dDependent" accesskey="n" rel="next">D30V-Dependent</a>, Previous: <a href="#C_002dSKY_002dDependent" accesskey="p" rel="previous">C-SKY-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="D10V-Dependent-Features"></a>
|
|
<h3 class="section">9.11 D10V Dependent Features</h3>
|
|
|
|
<a name="index-D10V-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#D10V_002dOpts" accesskey="1">D10V-Opts</a>:</td><td> </td><td align="left" valign="top">D10V Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D10V_002dSyntax" accesskey="2">D10V-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D10V_002dFloat" accesskey="3">D10V-Float</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D10V_002dOpcodes" accesskey="4">D10V-Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="D10V_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D10V_002dSyntax" accesskey="n" rel="next">D10V-Syntax</a>, Up: <a href="#D10V_002dDependent" accesskey="u" rel="up">D10V-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="D10V-Options"></a>
|
|
<h4 class="subsection">9.11.1 D10V Options</h4>
|
|
<a name="index-options_002c-D10V"></a>
|
|
<a name="index-D10V-options"></a>
|
|
<p>The Mitsubishi D10V version of <code>as</code> has a few machine
|
|
dependent options.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt>‘<samp>-O</samp>’</dt>
|
|
<dd><p>The D10V can often execute two sub-instructions in parallel. When this option
|
|
is used, <code>as</code> will attempt to optimize its output by detecting when
|
|
instructions can be executed in parallel.
|
|
</p></dd>
|
|
<dt>‘<samp>--nowarnswap</samp>’</dt>
|
|
<dd><p>To optimize execution performance, <code>as</code> will sometimes swap the
|
|
order of instructions. Normally this generates a warning. When this option
|
|
is used, no warning will be generated when instructions are swapped.
|
|
</p></dd>
|
|
<dt>‘<samp>--gstabs-packing</samp>’</dt>
|
|
<dt>‘<samp>--no-gstabs-packing</samp>’</dt>
|
|
<dd><p><code>as</code> packs adjacent short instructions into a single packed
|
|
instruction. ‘<samp>--no-gstabs-packing</samp>’ turns instruction packing off if
|
|
‘<samp>--gstabs</samp>’ is specified as well; ‘<samp>--gstabs-packing</samp>’ (the
|
|
default) turns instruction packing on even when ‘<samp>--gstabs</samp>’ is
|
|
specified.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="D10V_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D10V_002dFloat" accesskey="n" rel="next">D10V-Float</a>, Previous: <a href="#D10V_002dOpts" accesskey="p" rel="previous">D10V-Opts</a>, Up: <a href="#D10V_002dDependent" accesskey="u" rel="up">D10V-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-11"></a>
|
|
<h4 class="subsection">9.11.2 Syntax</h4>
|
|
<a name="index-D10V-syntax"></a>
|
|
<a name="index-syntax_002c-D10V"></a>
|
|
|
|
<p>The D10V syntax is based on the syntax in Mitsubishi’s D10V architecture manual.
|
|
The differences are detailed below.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#D10V_002dSize" accesskey="1">D10V-Size</a>:</td><td> </td><td align="left" valign="top">Size Modifiers
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D10V_002dSubs" accesskey="2">D10V-Subs</a>:</td><td> </td><td align="left" valign="top">Sub-Instructions
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D10V_002dChars" accesskey="3">D10V-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D10V_002dRegs" accesskey="4">D10V-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D10V_002dAddressing" accesskey="5">D10V-Addressing</a>:</td><td> </td><td align="left" valign="top">Addressing Modes
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D10V_002dWord" accesskey="6">D10V-Word</a>:</td><td> </td><td align="left" valign="top">@WORD Modifier
|
|
</td></tr>
|
|
</table>
|
|
|
|
|
|
<hr>
|
|
<a name="D10V_002dSize"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D10V_002dSubs" accesskey="n" rel="next">D10V-Subs</a>, Up: <a href="#D10V_002dSyntax" accesskey="u" rel="up">D10V-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Size-Modifiers"></a>
|
|
<h4 class="subsubsection">9.11.2.1 Size Modifiers</h4>
|
|
<a name="index-D10V-size-modifiers"></a>
|
|
<a name="index-size-modifiers_002c-D10V"></a>
|
|
<p>The D10V version of <code>as</code> uses the instruction names in the D10V
|
|
Architecture Manual. However, the names in the manual are sometimes ambiguous.
|
|
There are instruction names that can assemble to a short or long form opcode.
|
|
How does the assembler pick the correct form? <code>as</code> will always pick the
|
|
smallest form if it can. When dealing with a symbol that is not defined yet when a
|
|
line is being assembled, it will always use the long form. If you need to force the
|
|
assembler to use either the short or long form of the instruction, you can append
|
|
either ‘<samp>.s</samp>’ (short) or ‘<samp>.l</samp>’ (long) to it. For example, if you are writing
|
|
an assembly program and you want to do a branch to a symbol that is defined later
|
|
in your program, you can write ‘<samp>bra.s foo</samp>’.
|
|
Objdump and GDB will always append ‘<samp>.s</samp>’ or ‘<samp>.l</samp>’ to instructions which
|
|
have both short and long forms.
|
|
</p>
|
|
<hr>
|
|
<a name="D10V_002dSubs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D10V_002dChars" accesskey="n" rel="next">D10V-Chars</a>, Previous: <a href="#D10V_002dSize" accesskey="p" rel="previous">D10V-Size</a>, Up: <a href="#D10V_002dSyntax" accesskey="u" rel="up">D10V-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Sub_002dInstructions"></a>
|
|
<h4 class="subsubsection">9.11.2.2 Sub-Instructions</h4>
|
|
<a name="index-D10V-sub_002dinstructions"></a>
|
|
<a name="index-sub_002dinstructions_002c-D10V"></a>
|
|
<p>The D10V assembler takes as input a series of instructions, either one-per-line,
|
|
or in the special two-per-line format described in the next section. Some of these
|
|
instructions will be short-form or sub-instructions. These sub-instructions can be packed
|
|
into a single instruction. The assembler will do this automatically. It will also detect
|
|
when it should not pack instructions. For example, when a label is defined, the next
|
|
instruction will never be packaged with the previous one. Whenever a branch and link
|
|
instruction is called, it will not be packaged with the next instruction so the return
|
|
address will be valid. Nops are automatically inserted when necessary.
|
|
</p>
|
|
<p>If you do not want the assembler automatically making these decisions, you can control
|
|
the packaging and execution type (parallel or sequential) with the special execution
|
|
symbols described in the next section.
|
|
</p>
|
|
<hr>
|
|
<a name="D10V_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D10V_002dRegs" accesskey="n" rel="next">D10V-Regs</a>, Previous: <a href="#D10V_002dSubs" accesskey="p" rel="previous">D10V-Subs</a>, Up: <a href="#D10V_002dSyntax" accesskey="u" rel="up">D10V-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-8"></a>
|
|
<h4 class="subsubsection">9.11.2.3 Special Characters</h4>
|
|
<a name="index-line-comment-character_002c-D10V"></a>
|
|
<a name="index-D10V-line-comment-character"></a>
|
|
<p>A semicolon (‘<samp>;</samp>’) can be used anywhere on a line to start a
|
|
comment that extends to the end of the line.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line, the whole line
|
|
is treated as a comment, but in this case the line could also be a
|
|
logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-sub_002dinstruction-ordering_002c-D10V"></a>
|
|
<a name="index-D10V-sub_002dinstruction-ordering"></a>
|
|
<p>Sub-instructions may be executed in order, in reverse-order, or in parallel.
|
|
Instructions listed in the standard one-per-line format will be executed sequentially.
|
|
To specify the executing order, use the following symbols:
|
|
</p><dl compact="compact">
|
|
<dt>‘<samp>-></samp>’</dt>
|
|
<dd><p>Sequential with instruction on the left first.
|
|
</p></dd>
|
|
<dt>‘<samp><-</samp>’</dt>
|
|
<dd><p>Sequential with instruction on the right first.
|
|
</p></dd>
|
|
<dt>‘<samp>||</samp>’</dt>
|
|
<dd><p>Parallel
|
|
</p></dd>
|
|
</dl>
|
|
<p>The D10V syntax allows either one instruction per line, one instruction per line with
|
|
the execution symbol, or two instructions per line. For example
|
|
</p><dl compact="compact">
|
|
<dt><code>abs a1 -> abs r0</code></dt>
|
|
<dd><p>Execute these sequentially. The instruction on the right is in the right
|
|
container and is executed second.
|
|
</p></dd>
|
|
<dt><code>abs r0 <- abs a1</code></dt>
|
|
<dd><p>Execute these reverse-sequentially. The instruction on the right is in the right
|
|
container, and is executed first.
|
|
</p></dd>
|
|
<dt><code>ld2w r2,@r8+ || mac a0,r0,r7</code></dt>
|
|
<dd><p>Execute these in parallel.
|
|
</p></dd>
|
|
<dt><code>ld2w r2,@r8+ ||</code></dt>
|
|
<dt><code>mac a0,r0,r7</code></dt>
|
|
<dd><p>Two-line format. Execute these in parallel.
|
|
</p></dd>
|
|
<dt><code>ld2w r2,@r8+</code></dt>
|
|
<dt><code>mac a0,r0,r7</code></dt>
|
|
<dd><p>Two-line format. Execute these sequentially. Assembler will
|
|
put them in the proper containers.
|
|
</p></dd>
|
|
<dt><code>ld2w r2,@r8+ -></code></dt>
|
|
<dt><code>mac a0,r0,r7</code></dt>
|
|
<dd><p>Two-line format. Execute these sequentially. Same as above but
|
|
second instruction will always go into right container.
|
|
</p></dd>
|
|
</dl>
|
|
<a name="index-symbol-names_002c-_0024-in"></a>
|
|
<a name="index-_0024-in-symbol-names"></a>
|
|
<p>Since ‘<samp>$</samp>’ has no special meaning, you may use it in symbol names.
|
|
</p>
|
|
<hr>
|
|
<a name="D10V_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D10V_002dAddressing" accesskey="n" rel="next">D10V-Addressing</a>, Previous: <a href="#D10V_002dChars" accesskey="p" rel="previous">D10V-Chars</a>, Up: <a href="#D10V_002dSyntax" accesskey="u" rel="up">D10V-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-6"></a>
|
|
<h4 class="subsubsection">9.11.2.4 Register Names</h4>
|
|
<a name="index-D10V-registers"></a>
|
|
<a name="index-registers_002c-D10V"></a>
|
|
<p>You can use the predefined symbols ‘<samp>r0</samp>’ through ‘<samp>r15</samp>’ to refer to the D10V
|
|
registers. You can also use ‘<samp>sp</samp>’ as an alias for ‘<samp>r15</samp>’. The accumulators
|
|
are ‘<samp>a0</samp>’ and ‘<samp>a1</samp>’. There are special register-pair names that may
|
|
optionally be used in opcodes that require even-numbered registers. Register names are
|
|
not case sensitive.
|
|
</p>
|
|
<p>Register Pairs
|
|
</p><dl compact="compact">
|
|
<dt><code>r0-r1</code></dt>
|
|
<dt><code>r2-r3</code></dt>
|
|
<dt><code>r4-r5</code></dt>
|
|
<dt><code>r6-r7</code></dt>
|
|
<dt><code>r8-r9</code></dt>
|
|
<dt><code>r10-r11</code></dt>
|
|
<dt><code>r12-r13</code></dt>
|
|
<dt><code>r14-r15</code></dt>
|
|
</dl>
|
|
|
|
<p>The D10V also has predefined symbols for these control registers and status bits:
|
|
</p><dl compact="compact">
|
|
<dt><code>psw</code></dt>
|
|
<dd><p>Processor Status Word
|
|
</p></dd>
|
|
<dt><code>bpsw</code></dt>
|
|
<dd><p>Backup Processor Status Word
|
|
</p></dd>
|
|
<dt><code>pc</code></dt>
|
|
<dd><p>Program Counter
|
|
</p></dd>
|
|
<dt><code>bpc</code></dt>
|
|
<dd><p>Backup Program Counter
|
|
</p></dd>
|
|
<dt><code>rpt_c</code></dt>
|
|
<dd><p>Repeat Count
|
|
</p></dd>
|
|
<dt><code>rpt_s</code></dt>
|
|
<dd><p>Repeat Start address
|
|
</p></dd>
|
|
<dt><code>rpt_e</code></dt>
|
|
<dd><p>Repeat End address
|
|
</p></dd>
|
|
<dt><code>mod_s</code></dt>
|
|
<dd><p>Modulo Start address
|
|
</p></dd>
|
|
<dt><code>mod_e</code></dt>
|
|
<dd><p>Modulo End address
|
|
</p></dd>
|
|
<dt><code>iba</code></dt>
|
|
<dd><p>Instruction Break Address
|
|
</p></dd>
|
|
<dt><code>f0</code></dt>
|
|
<dd><p>Flag 0
|
|
</p></dd>
|
|
<dt><code>f1</code></dt>
|
|
<dd><p>Flag 1
|
|
</p></dd>
|
|
<dt><code>c</code></dt>
|
|
<dd><p>Carry flag
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="D10V_002dAddressing"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D10V_002dWord" accesskey="n" rel="next">D10V-Word</a>, Previous: <a href="#D10V_002dRegs" accesskey="p" rel="previous">D10V-Regs</a>, Up: <a href="#D10V_002dSyntax" accesskey="u" rel="up">D10V-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Addressing-Modes"></a>
|
|
<h4 class="subsubsection">9.11.2.5 Addressing Modes</h4>
|
|
<a name="index-addressing-modes_002c-D10V"></a>
|
|
<a name="index-D10V-addressing-modes"></a>
|
|
<p><code>as</code> understands the following addressing modes for the D10V.
|
|
<code>R<var>n</var></code> in the following refers to any of the numbered
|
|
registers, but <em>not</em> the control registers.
|
|
</p><dl compact="compact">
|
|
<dt><code>R<var>n</var></code></dt>
|
|
<dd><p>Register direct
|
|
</p></dd>
|
|
<dt><code>@R<var>n</var></code></dt>
|
|
<dd><p>Register indirect
|
|
</p></dd>
|
|
<dt><code>@R<var>n</var>+</code></dt>
|
|
<dd><p>Register indirect with post-increment
|
|
</p></dd>
|
|
<dt><code>@R<var>n</var>-</code></dt>
|
|
<dd><p>Register indirect with post-decrement
|
|
</p></dd>
|
|
<dt><code>@-SP</code></dt>
|
|
<dd><p>Register indirect with pre-decrement
|
|
</p></dd>
|
|
<dt><code>@(<var>disp</var>, R<var>n</var>)</code></dt>
|
|
<dd><p>Register indirect with displacement
|
|
</p></dd>
|
|
<dt><code><var>addr</var></code></dt>
|
|
<dd><p>PC relative address (for branch or rep).
|
|
</p></dd>
|
|
<dt><code>#<var>imm</var></code></dt>
|
|
<dd><p>Immediate data (the ‘<samp>#</samp>’ is optional and ignored)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="D10V_002dWord"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#D10V_002dAddressing" accesskey="p" rel="previous">D10V-Addressing</a>, Up: <a href="#D10V_002dSyntax" accesskey="u" rel="up">D10V-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t_0040WORD-Modifier"></a>
|
|
<h4 class="subsubsection">9.11.2.6 @WORD Modifier</h4>
|
|
<a name="index-D10V-_0040word-modifier"></a>
|
|
<a name="index-_0040word-modifier_002c-D10V"></a>
|
|
<p>Any symbol followed by <code>@word</code> will be replaced by the symbol’s value
|
|
shifted right by 2. This is used in situations such as loading a register
|
|
with the address of a function (or any other code fragment). For example, if
|
|
you want to load a register with the location of the function <code>main</code> then
|
|
jump to that function, you could do it as follows:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">ldi r2, main@word
|
|
jmp r2
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="D10V_002dFloat"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D10V_002dOpcodes" accesskey="n" rel="next">D10V-Opcodes</a>, Previous: <a href="#D10V_002dSyntax" accesskey="p" rel="previous">D10V-Syntax</a>, Up: <a href="#D10V_002dDependent" accesskey="u" rel="up">D10V-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-3"></a>
|
|
<h4 class="subsection">9.11.3 Floating Point</h4>
|
|
<a name="index-floating-point_002c-D10V"></a>
|
|
<a name="index-D10V-floating-point"></a>
|
|
<p>The D10V has no hardware floating point, but the <code>.float</code> and <code>.double</code>
|
|
directives generates <small>IEEE</small> floating-point numbers for compatibility
|
|
with other development tools.
|
|
</p>
|
|
<hr>
|
|
<a name="D10V_002dOpcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#D10V_002dFloat" accesskey="p" rel="previous">D10V-Float</a>, Up: <a href="#D10V_002dDependent" accesskey="u" rel="up">D10V-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-6"></a>
|
|
<h4 class="subsection">9.11.4 Opcodes</h4>
|
|
<a name="index-D10V-opcode-summary"></a>
|
|
<a name="index-opcode-summary_002c-D10V"></a>
|
|
<a name="index-mnemonics_002c-D10V"></a>
|
|
<a name="index-instruction-summary_002c-D10V"></a>
|
|
<p>For detailed information on the D10V machine instruction set, see
|
|
<cite>D10V Architecture: A VLIW Microprocessor for Multimedia Applications</cite>
|
|
(Mitsubishi Electric Corp.).
|
|
<code>as</code> implements all the standard D10V opcodes. The only changes are those
|
|
described in the section on size modifiers
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="D30V_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Epiphany_002dDependent" accesskey="n" rel="next">Epiphany-Dependent</a>, Previous: <a href="#D10V_002dDependent" accesskey="p" rel="previous">D10V-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="D30V-Dependent-Features"></a>
|
|
<h3 class="section">9.12 D30V Dependent Features</h3>
|
|
|
|
<a name="index-D30V-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#D30V_002dOpts" accesskey="1">D30V-Opts</a>:</td><td> </td><td align="left" valign="top">D30V Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D30V_002dSyntax" accesskey="2">D30V-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D30V_002dFloat" accesskey="3">D30V-Float</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D30V_002dOpcodes" accesskey="4">D30V-Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="D30V_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D30V_002dSyntax" accesskey="n" rel="next">D30V-Syntax</a>, Up: <a href="#D30V_002dDependent" accesskey="u" rel="up">D30V-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="D30V-Options"></a>
|
|
<h4 class="subsection">9.12.1 D30V Options</h4>
|
|
<a name="index-options_002c-D30V"></a>
|
|
<a name="index-D30V-options"></a>
|
|
<p>The Mitsubishi D30V version of <code>as</code> has a few machine
|
|
dependent options.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt>‘<samp>-O</samp>’</dt>
|
|
<dd><p>The D30V can often execute two sub-instructions in parallel. When this option
|
|
is used, <code>as</code> will attempt to optimize its output by detecting when
|
|
instructions can be executed in parallel.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>-n</samp>’</dt>
|
|
<dd><p>When this option is used, <code>as</code> will issue a warning every
|
|
time it adds a nop instruction.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>-N</samp>’</dt>
|
|
<dd><p>When this option is used, <code>as</code> will issue a warning if it
|
|
needs to insert a nop after a 32-bit multiply before a load or 16-bit
|
|
multiply instruction.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="D30V_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D30V_002dFloat" accesskey="n" rel="next">D30V-Float</a>, Previous: <a href="#D30V_002dOpts" accesskey="p" rel="previous">D30V-Opts</a>, Up: <a href="#D30V_002dDependent" accesskey="u" rel="up">D30V-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-12"></a>
|
|
<h4 class="subsection">9.12.2 Syntax</h4>
|
|
<a name="index-D30V-syntax"></a>
|
|
<a name="index-syntax_002c-D30V"></a>
|
|
|
|
<p>The D30V syntax is based on the syntax in Mitsubishi’s D30V architecture manual.
|
|
The differences are detailed below.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#D30V_002dSize" accesskey="1">D30V-Size</a>:</td><td> </td><td align="left" valign="top">Size Modifiers
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D30V_002dSubs" accesskey="2">D30V-Subs</a>:</td><td> </td><td align="left" valign="top">Sub-Instructions
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D30V_002dChars" accesskey="3">D30V-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D30V_002dGuarded" accesskey="4">D30V-Guarded</a>:</td><td> </td><td align="left" valign="top">Guarded Execution
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D30V_002dRegs" accesskey="5">D30V-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#D30V_002dAddressing" accesskey="6">D30V-Addressing</a>:</td><td> </td><td align="left" valign="top">Addressing Modes
|
|
</td></tr>
|
|
</table>
|
|
|
|
|
|
<hr>
|
|
<a name="D30V_002dSize"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D30V_002dSubs" accesskey="n" rel="next">D30V-Subs</a>, Up: <a href="#D30V_002dSyntax" accesskey="u" rel="up">D30V-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Size-Modifiers-1"></a>
|
|
<h4 class="subsubsection">9.12.2.1 Size Modifiers</h4>
|
|
<a name="index-D30V-size-modifiers"></a>
|
|
<a name="index-size-modifiers_002c-D30V"></a>
|
|
<p>The D30V version of <code>as</code> uses the instruction names in the D30V
|
|
Architecture Manual. However, the names in the manual are sometimes ambiguous.
|
|
There are instruction names that can assemble to a short or long form opcode.
|
|
How does the assembler pick the correct form? <code>as</code> will always pick the
|
|
smallest form if it can. When dealing with a symbol that is not defined yet when a
|
|
line is being assembled, it will always use the long form. If you need to force the
|
|
assembler to use either the short or long form of the instruction, you can append
|
|
either ‘<samp>.s</samp>’ (short) or ‘<samp>.l</samp>’ (long) to it. For example, if you are writing
|
|
an assembly program and you want to do a branch to a symbol that is defined later
|
|
in your program, you can write ‘<samp>bra.s foo</samp>’.
|
|
Objdump and GDB will always append ‘<samp>.s</samp>’ or ‘<samp>.l</samp>’ to instructions which
|
|
have both short and long forms.
|
|
</p>
|
|
<hr>
|
|
<a name="D30V_002dSubs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D30V_002dChars" accesskey="n" rel="next">D30V-Chars</a>, Previous: <a href="#D30V_002dSize" accesskey="p" rel="previous">D30V-Size</a>, Up: <a href="#D30V_002dSyntax" accesskey="u" rel="up">D30V-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Sub_002dInstructions-1"></a>
|
|
<h4 class="subsubsection">9.12.2.2 Sub-Instructions</h4>
|
|
<a name="index-D30V-sub_002dinstructions"></a>
|
|
<a name="index-sub_002dinstructions_002c-D30V"></a>
|
|
<p>The D30V assembler takes as input a series of instructions, either one-per-line,
|
|
or in the special two-per-line format described in the next section. Some of these
|
|
instructions will be short-form or sub-instructions. These sub-instructions can be packed
|
|
into a single instruction. The assembler will do this automatically. It will also detect
|
|
when it should not pack instructions. For example, when a label is defined, the next
|
|
instruction will never be packaged with the previous one. Whenever a branch and link
|
|
instruction is called, it will not be packaged with the next instruction so the return
|
|
address will be valid. Nops are automatically inserted when necessary.
|
|
</p>
|
|
<p>If you do not want the assembler automatically making these decisions, you can control
|
|
the packaging and execution type (parallel or sequential) with the special execution
|
|
symbols described in the next section.
|
|
</p>
|
|
<hr>
|
|
<a name="D30V_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D30V_002dGuarded" accesskey="n" rel="next">D30V-Guarded</a>, Previous: <a href="#D30V_002dSubs" accesskey="p" rel="previous">D30V-Subs</a>, Up: <a href="#D30V_002dSyntax" accesskey="u" rel="up">D30V-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-9"></a>
|
|
<h4 class="subsubsection">9.12.2.3 Special Characters</h4>
|
|
<a name="index-line-comment-character_002c-D30V"></a>
|
|
<a name="index-D30V-line-comment-character"></a>
|
|
<p>A semicolon (‘<samp>;</samp>’) can be used anywhere on a line to start a
|
|
comment that extends to the end of the line.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line, the whole line
|
|
is treated as a comment, but in this case the line could also be a
|
|
logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-sub_002dinstruction-ordering_002c-D30V"></a>
|
|
<a name="index-D30V-sub_002dinstruction-ordering"></a>
|
|
<p>Sub-instructions may be executed in order, in reverse-order, or in parallel.
|
|
Instructions listed in the standard one-per-line format will be executed
|
|
sequentially unless you use the ‘<samp>-O</samp>’ option.
|
|
</p>
|
|
<p>To specify the executing order, use the following symbols:
|
|
</p><dl compact="compact">
|
|
<dt>‘<samp>-></samp>’</dt>
|
|
<dd><p>Sequential with instruction on the left first.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp><-</samp>’</dt>
|
|
<dd><p>Sequential with instruction on the right first.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>||</samp>’</dt>
|
|
<dd><p>Parallel
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The D30V syntax allows either one instruction per line, one instruction per line with
|
|
the execution symbol, or two instructions per line. For example
|
|
</p><dl compact="compact">
|
|
<dt><code>abs r2,r3 -> abs r4,r5</code></dt>
|
|
<dd><p>Execute these sequentially. The instruction on the right is in the right
|
|
container and is executed second.
|
|
</p>
|
|
</dd>
|
|
<dt><code>abs r2,r3 <- abs r4,r5</code></dt>
|
|
<dd><p>Execute these reverse-sequentially. The instruction on the right is in the right
|
|
container, and is executed first.
|
|
</p>
|
|
</dd>
|
|
<dt><code>abs r2,r3 || abs r4,r5</code></dt>
|
|
<dd><p>Execute these in parallel.
|
|
</p>
|
|
</dd>
|
|
<dt><code>ldw r2,@(r3,r4) ||</code></dt>
|
|
<dt><code>mulx r6,r8,r9</code></dt>
|
|
<dd><p>Two-line format. Execute these in parallel.
|
|
</p>
|
|
</dd>
|
|
<dt><code>mulx a0,r8,r9</code></dt>
|
|
<dt><code>stw r2,@(r3,r4)</code></dt>
|
|
<dd><p>Two-line format. Execute these sequentially unless ‘<samp>-O</samp>’ option is
|
|
used. If the ‘<samp>-O</samp>’ option is used, the assembler will determine if
|
|
the instructions could be done in parallel (the above two instructions
|
|
can be done in parallel), and if so, emit them as parallel instructions.
|
|
The assembler will put them in the proper containers. In the above
|
|
example, the assembler will put the ‘<samp>stw</samp>’ instruction in left
|
|
container and the ‘<samp>mulx</samp>’ instruction in the right container.
|
|
</p>
|
|
</dd>
|
|
<dt><code>stw r2,@(r3,r4) -></code></dt>
|
|
<dt><code>mulx a0,r8,r9</code></dt>
|
|
<dd><p>Two-line format. Execute the ‘<samp>stw</samp>’ instruction followed by the
|
|
‘<samp>mulx</samp>’ instruction sequentially. The first instruction goes in the
|
|
left container and the second instruction goes into right container.
|
|
The assembler will give an error if the machine ordering constraints are
|
|
violated.
|
|
</p>
|
|
</dd>
|
|
<dt><code>stw r2,@(r3,r4) <-</code></dt>
|
|
<dt><code>mulx a0,r8,r9</code></dt>
|
|
<dd><p>Same as previous example, except that the ‘<samp>mulx</samp>’ instruction is
|
|
executed before the ‘<samp>stw</samp>’ instruction.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="index-symbol-names_002c-_0024-in-1"></a>
|
|
<a name="index-_0024-in-symbol-names-1"></a>
|
|
<p>Since ‘<samp>$</samp>’ has no special meaning, you may use it in symbol names.
|
|
</p>
|
|
<hr>
|
|
<a name="D30V_002dGuarded"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D30V_002dRegs" accesskey="n" rel="next">D30V-Regs</a>, Previous: <a href="#D30V_002dChars" accesskey="p" rel="previous">D30V-Chars</a>, Up: <a href="#D30V_002dSyntax" accesskey="u" rel="up">D30V-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Guarded-Execution"></a>
|
|
<h4 class="subsubsection">9.12.2.4 Guarded Execution</h4>
|
|
<a name="index-D30V-Guarded-Execution"></a>
|
|
<p><code>as</code> supports the full range of guarded execution
|
|
directives for each instruction. Just append the directive after the
|
|
instruction proper. The directives are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt>‘<samp>/tx</samp>’</dt>
|
|
<dd><p>Execute the instruction if flag f0 is true.
|
|
</p></dd>
|
|
<dt>‘<samp>/fx</samp>’</dt>
|
|
<dd><p>Execute the instruction if flag f0 is false.
|
|
</p></dd>
|
|
<dt>‘<samp>/xt</samp>’</dt>
|
|
<dd><p>Execute the instruction if flag f1 is true.
|
|
</p></dd>
|
|
<dt>‘<samp>/xf</samp>’</dt>
|
|
<dd><p>Execute the instruction if flag f1 is false.
|
|
</p></dd>
|
|
<dt>‘<samp>/tt</samp>’</dt>
|
|
<dd><p>Execute the instruction if both flags f0 and f1 are true.
|
|
</p></dd>
|
|
<dt>‘<samp>/tf</samp>’</dt>
|
|
<dd><p>Execute the instruction if flag f0 is true and flag f1 is false.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="D30V_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D30V_002dAddressing" accesskey="n" rel="next">D30V-Addressing</a>, Previous: <a href="#D30V_002dGuarded" accesskey="p" rel="previous">D30V-Guarded</a>, Up: <a href="#D30V_002dSyntax" accesskey="u" rel="up">D30V-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-7"></a>
|
|
<h4 class="subsubsection">9.12.2.5 Register Names</h4>
|
|
<a name="index-D30V-registers"></a>
|
|
<a name="index-registers_002c-D30V"></a>
|
|
<p>You can use the predefined symbols ‘<samp>r0</samp>’ through ‘<samp>r63</samp>’ to refer
|
|
to the D30V registers. You can also use ‘<samp>sp</samp>’ as an alias for
|
|
‘<samp>r63</samp>’ and ‘<samp>link</samp>’ as an alias for ‘<samp>r62</samp>’. The accumulators
|
|
are ‘<samp>a0</samp>’ and ‘<samp>a1</samp>’.
|
|
</p>
|
|
<p>The D30V also has predefined symbols for these control registers and status bits:
|
|
</p><dl compact="compact">
|
|
<dt><code>psw</code></dt>
|
|
<dd><p>Processor Status Word
|
|
</p></dd>
|
|
<dt><code>bpsw</code></dt>
|
|
<dd><p>Backup Processor Status Word
|
|
</p></dd>
|
|
<dt><code>pc</code></dt>
|
|
<dd><p>Program Counter
|
|
</p></dd>
|
|
<dt><code>bpc</code></dt>
|
|
<dd><p>Backup Program Counter
|
|
</p></dd>
|
|
<dt><code>rpt_c</code></dt>
|
|
<dd><p>Repeat Count
|
|
</p></dd>
|
|
<dt><code>rpt_s</code></dt>
|
|
<dd><p>Repeat Start address
|
|
</p></dd>
|
|
<dt><code>rpt_e</code></dt>
|
|
<dd><p>Repeat End address
|
|
</p></dd>
|
|
<dt><code>mod_s</code></dt>
|
|
<dd><p>Modulo Start address
|
|
</p></dd>
|
|
<dt><code>mod_e</code></dt>
|
|
<dd><p>Modulo End address
|
|
</p></dd>
|
|
<dt><code>iba</code></dt>
|
|
<dd><p>Instruction Break Address
|
|
</p></dd>
|
|
<dt><code>f0</code></dt>
|
|
<dd><p>Flag 0
|
|
</p></dd>
|
|
<dt><code>f1</code></dt>
|
|
<dd><p>Flag 1
|
|
</p></dd>
|
|
<dt><code>f2</code></dt>
|
|
<dd><p>Flag 2
|
|
</p></dd>
|
|
<dt><code>f3</code></dt>
|
|
<dd><p>Flag 3
|
|
</p></dd>
|
|
<dt><code>f4</code></dt>
|
|
<dd><p>Flag 4
|
|
</p></dd>
|
|
<dt><code>f5</code></dt>
|
|
<dd><p>Flag 5
|
|
</p></dd>
|
|
<dt><code>f6</code></dt>
|
|
<dd><p>Flag 6
|
|
</p></dd>
|
|
<dt><code>f7</code></dt>
|
|
<dd><p>Flag 7
|
|
</p></dd>
|
|
<dt><code>s</code></dt>
|
|
<dd><p>Same as flag 4 (saturation flag)
|
|
</p></dd>
|
|
<dt><code>v</code></dt>
|
|
<dd><p>Same as flag 5 (overflow flag)
|
|
</p></dd>
|
|
<dt><code>va</code></dt>
|
|
<dd><p>Same as flag 6 (sticky overflow flag)
|
|
</p></dd>
|
|
<dt><code>c</code></dt>
|
|
<dd><p>Same as flag 7 (carry/borrow flag)
|
|
</p></dd>
|
|
<dt><code>b</code></dt>
|
|
<dd><p>Same as flag 7 (carry/borrow flag)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="D30V_002dAddressing"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#D30V_002dRegs" accesskey="p" rel="previous">D30V-Regs</a>, Up: <a href="#D30V_002dSyntax" accesskey="u" rel="up">D30V-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Addressing-Modes-1"></a>
|
|
<h4 class="subsubsection">9.12.2.6 Addressing Modes</h4>
|
|
<a name="index-addressing-modes_002c-D30V"></a>
|
|
<a name="index-D30V-addressing-modes"></a>
|
|
<p><code>as</code> understands the following addressing modes for the D30V.
|
|
<code>R<var>n</var></code> in the following refers to any of the numbered
|
|
registers, but <em>not</em> the control registers.
|
|
</p><dl compact="compact">
|
|
<dt><code>R<var>n</var></code></dt>
|
|
<dd><p>Register direct
|
|
</p></dd>
|
|
<dt><code>@R<var>n</var></code></dt>
|
|
<dd><p>Register indirect
|
|
</p></dd>
|
|
<dt><code>@R<var>n</var>+</code></dt>
|
|
<dd><p>Register indirect with post-increment
|
|
</p></dd>
|
|
<dt><code>@R<var>n</var>-</code></dt>
|
|
<dd><p>Register indirect with post-decrement
|
|
</p></dd>
|
|
<dt><code>@-SP</code></dt>
|
|
<dd><p>Register indirect with pre-decrement
|
|
</p></dd>
|
|
<dt><code>@(<var>disp</var>, R<var>n</var>)</code></dt>
|
|
<dd><p>Register indirect with displacement
|
|
</p></dd>
|
|
<dt><code><var>addr</var></code></dt>
|
|
<dd><p>PC relative address (for branch or rep).
|
|
</p></dd>
|
|
<dt><code>#<var>imm</var></code></dt>
|
|
<dd><p>Immediate data (the ‘<samp>#</samp>’ is optional and ignored)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="D30V_002dFloat"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#D30V_002dOpcodes" accesskey="n" rel="next">D30V-Opcodes</a>, Previous: <a href="#D30V_002dSyntax" accesskey="p" rel="previous">D30V-Syntax</a>, Up: <a href="#D30V_002dDependent" accesskey="u" rel="up">D30V-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-4"></a>
|
|
<h4 class="subsection">9.12.3 Floating Point</h4>
|
|
<a name="index-floating-point_002c-D30V"></a>
|
|
<a name="index-D30V-floating-point"></a>
|
|
<p>The D30V has no hardware floating point, but the <code>.float</code> and <code>.double</code>
|
|
directives generates <small>IEEE</small> floating-point numbers for compatibility
|
|
with other development tools.
|
|
</p>
|
|
<hr>
|
|
<a name="D30V_002dOpcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#D30V_002dFloat" accesskey="p" rel="previous">D30V-Float</a>, Up: <a href="#D30V_002dDependent" accesskey="u" rel="up">D30V-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-7"></a>
|
|
<h4 class="subsection">9.12.4 Opcodes</h4>
|
|
<a name="index-D30V-opcode-summary"></a>
|
|
<a name="index-opcode-summary_002c-D30V"></a>
|
|
<a name="index-mnemonics_002c-D30V"></a>
|
|
<a name="index-instruction-summary_002c-D30V"></a>
|
|
<p>For detailed information on the D30V machine instruction set, see
|
|
<cite>D30V Architecture: A VLIW Microprocessor for Multimedia Applications</cite>
|
|
(Mitsubishi Electric Corp.).
|
|
<code>as</code> implements all the standard D30V opcodes. The only changes are those
|
|
described in the section on size modifiers
|
|
</p>
|
|
|
|
|
|
<hr>
|
|
<a name="Epiphany_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#H8_002f300_002dDependent" accesskey="n" rel="next">H8/300-Dependent</a>, Previous: <a href="#D30V_002dDependent" accesskey="p" rel="previous">D30V-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Epiphany-Dependent-Features"></a>
|
|
<h3 class="section">9.13 Epiphany Dependent Features</h3>
|
|
|
|
<a name="index-Epiphany-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Epiphany-Options" accesskey="1">Epiphany Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Epiphany-Syntax" accesskey="2">Epiphany Syntax</a>:</td><td> </td><td align="left" valign="top">Epiphany Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Epiphany-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Epiphany-Syntax" accesskey="n" rel="next">Epiphany Syntax</a>, Up: <a href="#Epiphany_002dDependent" accesskey="u" rel="up">Epiphany-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-8"></a>
|
|
<h4 class="subsection">9.13.1 Options</h4>
|
|
|
|
<a name="index-Epiphany-options"></a>
|
|
<a name="index-options_002c-Epiphany"></a>
|
|
<p><code>as</code> has two additional command-line options for the Epiphany
|
|
architecture.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dmepiphany-command_002dline-option_002c-Epiphany"></a>
|
|
</dd>
|
|
<dt><code>-mepiphany</code></dt>
|
|
<dd><p>Specifies that the both 32 and 16 bit instructions are allowed. This is the
|
|
default behavior.
|
|
</p>
|
|
<a name="index-_002dmepiphany16-command_002dline-option_002c-Epiphany"></a>
|
|
</dd>
|
|
<dt><code>-mepiphany16</code></dt>
|
|
<dd><p>Restricts the permitted instructions to just the 16 bit set.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Epiphany-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Epiphany-Options" accesskey="p" rel="previous">Epiphany Options</a>, Up: <a href="#Epiphany_002dDependent" accesskey="u" rel="up">Epiphany-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Epiphany-Syntax-1"></a>
|
|
<h4 class="subsection">9.13.2 Epiphany Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Epiphany_002dChars" accesskey="1">Epiphany-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Epiphany_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#Epiphany-Syntax" accesskey="u" rel="up">Epiphany Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-10"></a>
|
|
<h4 class="subsubsection">9.13.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-Epiphany"></a>
|
|
<a name="index-Epiphany-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>;</samp>’ on a line indicates the start
|
|
of a comment that extends to the end of the current line.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line then the whole
|
|
line is treated as a comment, but in this case the line could also be
|
|
a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-Epiphany"></a>
|
|
<a name="index-statement-separator_002c-Epiphany"></a>
|
|
<a name="index-Epiphany-line-separator"></a>
|
|
<p>The ‘<samp>`</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
<hr>
|
|
<a name="H8_002f300_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#HPPA_002dDependent" accesskey="n" rel="next">HPPA-Dependent</a>, Previous: <a href="#Epiphany_002dDependent" accesskey="p" rel="previous">Epiphany-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="H8_002f300-Dependent-Features"></a>
|
|
<h3 class="section">9.14 H8/300 Dependent Features</h3>
|
|
|
|
<a name="index-H8_002f300-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#H8_002f300-Options" accesskey="1">H8/300 Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#H8_002f300-Syntax" accesskey="2">H8/300 Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#H8_002f300-Floating-Point" accesskey="3">H8/300 Floating Point</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#H8_002f300-Directives" accesskey="4">H8/300 Directives</a>:</td><td> </td><td align="left" valign="top">H8/300 Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#H8_002f300-Opcodes" accesskey="5">H8/300 Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="H8_002f300-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#H8_002f300-Syntax" accesskey="n" rel="next">H8/300 Syntax</a>, Up: <a href="#H8_002f300_002dDependent" accesskey="u" rel="up">H8/300-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-9"></a>
|
|
<h4 class="subsection">9.14.1 Options</h4>
|
|
|
|
<a name="index-H8_002f300-options"></a>
|
|
<a name="index-options_002c-H8_002f300"></a>
|
|
<p>The Renesas H8/300 version of <code>as</code> has one
|
|
machine-dependent option:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-h-tick-hex</code></dt>
|
|
<dd><p>Support H’00 style hex constants in addition to 0x00 style.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mach=<var>name</var></code></dt>
|
|
<dd><p>Sets the H8300 machine variant. The following machine names
|
|
are recognised:
|
|
<code>h8300h</code>,
|
|
<code>h8300hn</code>,
|
|
<code>h8300s</code>,
|
|
<code>h8300sn</code>,
|
|
<code>h8300sx</code> and
|
|
<code>h8300sxn</code>.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="H8_002f300-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#H8_002f300-Floating-Point" accesskey="n" rel="next">H8/300 Floating Point</a>, Previous: <a href="#H8_002f300-Options" accesskey="p" rel="previous">H8/300 Options</a>, Up: <a href="#H8_002f300_002dDependent" accesskey="u" rel="up">H8/300-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-13"></a>
|
|
<h4 class="subsection">9.14.2 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#H8_002f300_002dChars" accesskey="1">H8/300-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#H8_002f300_002dRegs" accesskey="2">H8/300-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#H8_002f300_002dAddressing" accesskey="3">H8/300-Addressing</a>:</td><td> </td><td align="left" valign="top">Addressing Modes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="H8_002f300_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#H8_002f300_002dRegs" accesskey="n" rel="next">H8/300-Regs</a>, Up: <a href="#H8_002f300-Syntax" accesskey="u" rel="up">H8/300 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-11"></a>
|
|
<h4 class="subsubsection">9.14.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-H8_002f300"></a>
|
|
<a name="index-H8_002f300-line-comment-character"></a>
|
|
<p>‘<samp>;</samp>’ is the line comment character.
|
|
</p>
|
|
<a name="index-line-separator_002c-H8_002f300"></a>
|
|
<a name="index-statement-separator_002c-H8_002f300"></a>
|
|
<a name="index-H8_002f300-line-separator"></a>
|
|
<p>‘<samp>$</samp>’ can be used instead of a newline to separate statements.
|
|
Therefore <em>you may not use ‘<samp>$</samp>’ in symbol names</em> on the H8/300.
|
|
</p>
|
|
<hr>
|
|
<a name="H8_002f300_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#H8_002f300_002dAddressing" accesskey="n" rel="next">H8/300-Addressing</a>, Previous: <a href="#H8_002f300_002dChars" accesskey="p" rel="previous">H8/300-Chars</a>, Up: <a href="#H8_002f300-Syntax" accesskey="u" rel="up">H8/300 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-8"></a>
|
|
<h4 class="subsubsection">9.14.2.2 Register Names</h4>
|
|
|
|
<a name="index-H8_002f300-registers"></a>
|
|
<a name="index-register-names_002c-H8_002f300"></a>
|
|
<p>You can use predefined symbols of the form ‘<samp>r<var>n</var>h</samp>’ and
|
|
‘<samp>r<var>n</var>l</samp>’ to refer to the H8/300 registers as sixteen 8-bit
|
|
general-purpose registers. <var>n</var> is a digit from ‘<samp>0</samp>’ to
|
|
‘<samp>7</samp>’); for instance, both ‘<samp>r0h</samp>’ and ‘<samp>r7l</samp>’ are valid
|
|
register names.
|
|
</p>
|
|
<p>You can also use the eight predefined symbols ‘<samp>r<var>n</var></samp>’ to refer
|
|
to the H8/300 registers as 16-bit registers (you must use this form for
|
|
addressing).
|
|
</p>
|
|
<p>On the H8/300H, you can also use the eight predefined symbols
|
|
‘<samp>er<var>n</var></samp>’ (‘<samp>er0</samp>’ … ‘<samp>er7</samp>’) to refer to the 32-bit
|
|
general purpose registers.
|
|
</p>
|
|
<p>The two control registers are called <code>pc</code> (program counter; a
|
|
16-bit register, except on the H8/300H where it is 24 bits) and
|
|
<code>ccr</code> (condition code register; an 8-bit register). <code>r7</code> is
|
|
used as the stack pointer, and can also be called <code>sp</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="H8_002f300_002dAddressing"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#H8_002f300_002dRegs" accesskey="p" rel="previous">H8/300-Regs</a>, Up: <a href="#H8_002f300-Syntax" accesskey="u" rel="up">H8/300 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Addressing-Modes-2"></a>
|
|
<h4 class="subsubsection">9.14.2.3 Addressing Modes</h4>
|
|
|
|
<a name="index-addressing-modes_002c-H8_002f300"></a>
|
|
<a name="index-H8_002f300-addressing-modes"></a>
|
|
<p>as understands the following addressing modes for the H8/300:
|
|
</p><dl compact="compact">
|
|
<dt><code>r<var>n</var></code></dt>
|
|
<dd><p>Register direct
|
|
</p>
|
|
</dd>
|
|
<dt><code>@r<var>n</var></code></dt>
|
|
<dd><p>Register indirect
|
|
</p>
|
|
</dd>
|
|
<dt><code>@(<var>d</var>, r<var>n</var>)</code></dt>
|
|
<dt><code>@(<var>d</var>:16, r<var>n</var>)</code></dt>
|
|
<dt><code>@(<var>d</var>:24, r<var>n</var>)</code></dt>
|
|
<dd><p>Register indirect: 16-bit or 24-bit displacement <var>d</var> from register
|
|
<var>n</var>. (24-bit displacements are only meaningful on the H8/300H.)
|
|
</p>
|
|
</dd>
|
|
<dt><code>@r<var>n</var>+</code></dt>
|
|
<dd><p>Register indirect with post-increment
|
|
</p>
|
|
</dd>
|
|
<dt><code>@-r<var>n</var></code></dt>
|
|
<dd><p>Register indirect with pre-decrement
|
|
</p>
|
|
</dd>
|
|
<dt><code><code>@</code><var>aa</var></code></dt>
|
|
<dt><code><code>@</code><var>aa</var>:8</code></dt>
|
|
<dt><code><code>@</code><var>aa</var>:16</code></dt>
|
|
<dt><code><code>@</code><var>aa</var>:24</code></dt>
|
|
<dd><p>Absolute address <code>aa</code>. (The address size ‘<samp>:24</samp>’ only makes
|
|
sense on the H8/300H.)
|
|
</p>
|
|
</dd>
|
|
<dt><code>#<var>xx</var></code></dt>
|
|
<dt><code>#<var>xx</var>:8</code></dt>
|
|
<dt><code>#<var>xx</var>:16</code></dt>
|
|
<dt><code>#<var>xx</var>:32</code></dt>
|
|
<dd><p>Immediate data <var>xx</var>. You may specify the ‘<samp>:8</samp>’, ‘<samp>:16</samp>’, or
|
|
‘<samp>:32</samp>’ for clarity, if you wish; but <code>as</code> neither
|
|
requires this nor uses it—the data size required is taken from
|
|
context.
|
|
</p>
|
|
</dd>
|
|
<dt><code><code>@</code><code>@</code><var>aa</var></code></dt>
|
|
<dt><code><code>@</code><code>@</code><var>aa</var>:8</code></dt>
|
|
<dd><p>Memory indirect. You may specify the ‘<samp>:8</samp>’ for clarity, if you
|
|
wish; but <code>as</code> neither requires this nor uses it.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="H8_002f300-Floating-Point"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#H8_002f300-Directives" accesskey="n" rel="next">H8/300 Directives</a>, Previous: <a href="#H8_002f300-Syntax" accesskey="p" rel="previous">H8/300 Syntax</a>, Up: <a href="#H8_002f300_002dDependent" accesskey="u" rel="up">H8/300-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-5"></a>
|
|
<h4 class="subsection">9.14.3 Floating Point</h4>
|
|
|
|
<a name="index-floating-point_002c-H8_002f300-_0028IEEE_0029"></a>
|
|
<a name="index-H8_002f300-floating-point-_0028IEEE_0029"></a>
|
|
<p>The H8/300 family has no hardware floating point, but the <code>.float</code>
|
|
directive generates <small>IEEE</small> floating-point numbers for compatibility
|
|
with other development tools.
|
|
</p>
|
|
<hr>
|
|
<a name="H8_002f300-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#H8_002f300-Opcodes" accesskey="n" rel="next">H8/300 Opcodes</a>, Previous: <a href="#H8_002f300-Floating-Point" accesskey="p" rel="previous">H8/300 Floating Point</a>, Up: <a href="#H8_002f300_002dDependent" accesskey="u" rel="up">H8/300-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="H8_002f300-Machine-Directives"></a>
|
|
<h4 class="subsection">9.14.4 H8/300 Machine Directives</h4>
|
|
|
|
<a name="index-H8_002f300-machine-directives-_0028none_0029"></a>
|
|
<a name="index-machine-directives_002c-H8_002f300-_0028none_0029"></a>
|
|
<a name="index-word-directive_002c-H8_002f300"></a>
|
|
<a name="index-int-directive_002c-H8_002f300"></a>
|
|
<p><code>as</code> has the following machine-dependent directives for
|
|
the H8/300:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-H8_002f300H_002c-assembling-for"></a>
|
|
</dd>
|
|
<dt><code>.h8300h</code></dt>
|
|
<dd><p>Recognize and emit additional instructions for the H8/300H variant, and
|
|
also make <code>.int</code> emit 32-bit numbers rather than the usual (16-bit)
|
|
for the H8/300 family.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.h8300s</code></dt>
|
|
<dd><p>Recognize and emit additional instructions for the H8S variant, and
|
|
also make <code>.int</code> emit 32-bit numbers rather than the usual (16-bit)
|
|
for the H8/300 family.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.h8300hn</code></dt>
|
|
<dd><p>Recognize and emit additional instructions for the H8/300H variant in
|
|
normal mode, and also make <code>.int</code> emit 32-bit numbers rather than
|
|
the usual (16-bit) for the H8/300 family.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.h8300sn</code></dt>
|
|
<dd><p>Recognize and emit additional instructions for the H8S variant in
|
|
normal mode, and also make <code>.int</code> emit 32-bit numbers rather than
|
|
the usual (16-bit) for the H8/300 family.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>On the H8/300 family (including the H8/300H) ‘<samp>.word</samp>’ directives
|
|
generate 16-bit numbers.
|
|
</p>
|
|
<hr>
|
|
<a name="H8_002f300-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#H8_002f300-Directives" accesskey="p" rel="previous">H8/300 Directives</a>, Up: <a href="#H8_002f300_002dDependent" accesskey="u" rel="up">H8/300-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-8"></a>
|
|
<h4 class="subsection">9.14.5 Opcodes</h4>
|
|
|
|
<a name="index-H8_002f300-opcode-summary"></a>
|
|
<a name="index-opcode-summary_002c-H8_002f300"></a>
|
|
<a name="index-mnemonics_002c-H8_002f300"></a>
|
|
<a name="index-instruction-summary_002c-H8_002f300"></a>
|
|
<p>For detailed information on the H8/300 machine instruction set, see
|
|
<cite>H8/300 Series Programming Manual</cite>. For information specific to
|
|
the H8/300H, see <cite>H8/300H Series Programming Manual</cite> (Renesas).
|
|
</p>
|
|
<p><code>as</code> implements all the standard H8/300 opcodes. No additional
|
|
pseudo-instructions are needed on this family.
|
|
</p>
|
|
|
|
<a name="index-size-suffixes_002c-H8_002f300"></a>
|
|
<a name="index-H8_002f300-size-suffixes"></a>
|
|
<p>Four H8/300 instructions (<code>add</code>, <code>cmp</code>, <code>mov</code>,
|
|
<code>sub</code>) are defined with variants using the suffixes ‘<samp>.b</samp>’,
|
|
‘<samp>.w</samp>’, and ‘<samp>.l</samp>’ to specify the size of a memory operand.
|
|
<code>as</code> supports these suffixes, but does not require them;
|
|
since one of the operands is always a register, <code>as</code> can
|
|
deduce the correct size.
|
|
</p>
|
|
<p>For example, since <code>r0</code> refers to a 16-bit register,
|
|
</p><div class="example">
|
|
<pre class="example">mov r0,@foo
|
|
</pre><pre class="example">is equivalent to
|
|
</pre><pre class="example">mov.w r0,@foo
|
|
</pre></div>
|
|
|
|
<p>If you use the size suffixes, <code>as</code> issues a warning when
|
|
the suffix and the register size do not match.
|
|
</p>
|
|
<hr>
|
|
<a name="HPPA_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dDependent" accesskey="n" rel="next">i386-Dependent</a>, Previous: <a href="#H8_002f300_002dDependent" accesskey="p" rel="previous">H8/300-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="HPPA-Dependent-Features"></a>
|
|
<h3 class="section">9.15 HPPA Dependent Features</h3>
|
|
|
|
<a name="index-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#HPPA-Notes" accesskey="1">HPPA Notes</a>:</td><td> </td><td align="left" valign="top">Notes
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#HPPA-Options" accesskey="2">HPPA Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#HPPA-Syntax" accesskey="3">HPPA Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#HPPA-Floating-Point" accesskey="4">HPPA Floating Point</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#HPPA-Directives" accesskey="5">HPPA Directives</a>:</td><td> </td><td align="left" valign="top">HPPA Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#HPPA-Opcodes" accesskey="6">HPPA Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="HPPA-Notes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#HPPA-Options" accesskey="n" rel="next">HPPA Options</a>, Up: <a href="#HPPA_002dDependent" accesskey="u" rel="up">HPPA-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Notes-1"></a>
|
|
<h4 class="subsection">9.15.1 Notes</h4>
|
|
<p>As a back end for <small>GNU</small> <small>CC</small> <code>as</code> has been thoroughly tested and should
|
|
work extremely well. We have tested it only minimally on hand written assembly
|
|
code and no one has tested it much on the assembly output from the HP
|
|
compilers.
|
|
</p>
|
|
<p>The format of the debugging sections has changed since the original
|
|
<code>as</code> port (version 1.3X) was released; therefore,
|
|
you must rebuild all HPPA objects and libraries with the new
|
|
assembler so that you can debug the final executable.
|
|
</p>
|
|
<p>The HPPA <code>as</code> port generates a small subset of the relocations
|
|
available in the SOM and ELF object file formats. Additional relocation
|
|
support will be added as it becomes necessary.
|
|
</p>
|
|
<hr>
|
|
<a name="HPPA-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#HPPA-Syntax" accesskey="n" rel="next">HPPA Syntax</a>, Previous: <a href="#HPPA-Notes" accesskey="p" rel="previous">HPPA Notes</a>, Up: <a href="#HPPA_002dDependent" accesskey="u" rel="up">HPPA-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-10"></a>
|
|
<h4 class="subsection">9.15.2 Options</h4>
|
|
<p><code>as</code> has no machine-dependent command-line options for the HPPA.
|
|
</p>
|
|
<a name="index-HPPA-Syntax"></a>
|
|
<hr>
|
|
<a name="HPPA-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#HPPA-Floating-Point" accesskey="n" rel="next">HPPA Floating Point</a>, Previous: <a href="#HPPA-Options" accesskey="p" rel="previous">HPPA Options</a>, Up: <a href="#HPPA_002dDependent" accesskey="u" rel="up">HPPA-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-14"></a>
|
|
<h4 class="subsection">9.15.3 Syntax</h4>
|
|
<p>The assembler syntax closely follows the HPPA instruction set
|
|
reference manual; assembler directives and general syntax closely follow the
|
|
HPPA assembly language reference manual, with a few noteworthy differences.
|
|
</p>
|
|
<p>First, a colon may immediately follow a label definition. This is
|
|
simply for compatibility with how most assembly language programmers
|
|
write code.
|
|
</p>
|
|
<p>Some obscure expression parsing problems may affect hand written code which
|
|
uses the <code>spop</code> instructions, or code which makes significant
|
|
use of the <code>!</code> line separator.
|
|
</p>
|
|
<p><code>as</code> is much less forgiving about missing arguments and other
|
|
similar oversights than the HP assembler. <code>as</code> notifies you
|
|
of missing arguments as syntax errors; this is regarded as a feature, not a
|
|
bug.
|
|
</p>
|
|
<p>Finally, <code>as</code> allows you to use an external symbol without
|
|
explicitly importing the symbol. <em>Warning:</em> in the future this will be
|
|
an error for HPPA targets.
|
|
</p>
|
|
<p>Special characters for HPPA targets include:
|
|
</p>
|
|
<p>‘<samp>;</samp>’ is the line comment character.
|
|
</p>
|
|
<p>‘<samp>!</samp>’ can be used instead of a newline to separate statements.
|
|
</p>
|
|
<p>Since ‘<samp>$</samp>’ has no special meaning, you may use it in symbol names.
|
|
</p>
|
|
<hr>
|
|
<a name="HPPA-Floating-Point"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#HPPA-Directives" accesskey="n" rel="next">HPPA Directives</a>, Previous: <a href="#HPPA-Syntax" accesskey="p" rel="previous">HPPA Syntax</a>, Up: <a href="#HPPA_002dDependent" accesskey="u" rel="up">HPPA-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-6"></a>
|
|
<h4 class="subsection">9.15.4 Floating Point</h4>
|
|
<a name="index-floating-point_002c-HPPA-_0028IEEE_0029"></a>
|
|
<a name="index-HPPA-floating-point-_0028IEEE_0029"></a>
|
|
<p>The HPPA family uses <small>IEEE</small> floating-point numbers.
|
|
</p>
|
|
<hr>
|
|
<a name="HPPA-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#HPPA-Opcodes" accesskey="n" rel="next">HPPA Opcodes</a>, Previous: <a href="#HPPA-Floating-Point" accesskey="p" rel="previous">HPPA Floating Point</a>, Up: <a href="#HPPA_002dDependent" accesskey="u" rel="up">HPPA-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="HPPA-Assembler-Directives"></a>
|
|
<h4 class="subsection">9.15.5 HPPA Assembler Directives</h4>
|
|
|
|
<p><code>as</code> for the HPPA supports many additional directives for
|
|
compatibility with the native assembler. This section describes them only
|
|
briefly. For detailed information on HPPA-specific assembler directives, see
|
|
<cite>HP9000 Series 800 Assembly Language Reference Manual</cite> (HP 92432-90001).
|
|
</p>
|
|
<a name="index-HPPA-directives-not-supported"></a>
|
|
<p><code>as</code> does <em>not</em> support the following assembler directives
|
|
described in the HP manual:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">.endm .liston
|
|
.enter .locct
|
|
.leave .macro
|
|
.listoff
|
|
</pre></div>
|
|
|
|
<a name="index-_002eparam-on-HPPA"></a>
|
|
<p>Beyond those implemented for compatibility, <code>as</code> supports one
|
|
additional assembler directive for the HPPA: <code>.param</code>. It conveys
|
|
register argument locations for static functions. Its syntax closely follows
|
|
the <code>.export</code> directive.
|
|
</p>
|
|
<a name="index-HPPA_002donly-directives"></a>
|
|
<p>These are the additional directives in <code>as</code> for the HPPA:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>.block <var>n</var></code></dt>
|
|
<dt><code>.blockz <var>n</var></code></dt>
|
|
<dd><p>Reserve <var>n</var> bytes of storage, and initialize them to zero.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.call</code></dt>
|
|
<dd><p>Mark the beginning of a procedure call. Only the special case with <em>no
|
|
arguments</em> is allowed.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.callinfo [ <var>param</var>=<var>value</var>, … ] [ <var>flag</var>, … ]</code></dt>
|
|
<dd><p>Specify a number of parameters and flags that define the environment for a
|
|
procedure.
|
|
</p>
|
|
<p><var>param</var> may be any of ‘<samp>frame</samp>’ (frame size), ‘<samp>entry_gr</samp>’ (end of
|
|
general register range), ‘<samp>entry_fr</samp>’ (end of float register range),
|
|
‘<samp>entry_sr</samp>’ (end of space register range).
|
|
</p>
|
|
<p>The values for <var>flag</var> are ‘<samp>calls</samp>’ or ‘<samp>caller</samp>’ (proc has
|
|
subroutines), ‘<samp>no_calls</samp>’ (proc does not call subroutines), ‘<samp>save_rp</samp>’
|
|
(preserve return pointer), ‘<samp>save_sp</samp>’ (proc preserves stack pointer),
|
|
‘<samp>no_unwind</samp>’ (do not unwind this proc), ‘<samp>hpux_int</samp>’ (proc is interrupt
|
|
routine).
|
|
</p>
|
|
</dd>
|
|
<dt><code>.code</code></dt>
|
|
<dd><p>Assemble into the standard section called ‘<samp>$TEXT$</samp>’, subsection
|
|
‘<samp>$CODE$</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.copyright "<var>string</var>"</code></dt>
|
|
<dd><p>In the SOM object format, insert <var>string</var> into the object code, marked as a
|
|
copyright string.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.copyright "<var>string</var>"</code></dt>
|
|
<dd><p>In the ELF object format, insert <var>string</var> into the object code, marked as a
|
|
version string.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.enter</code></dt>
|
|
<dd><p>Not yet supported; the assembler rejects programs containing this directive.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.entry</code></dt>
|
|
<dd><p>Mark the beginning of a procedure.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.exit</code></dt>
|
|
<dd><p>Mark the end of a procedure.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.export <var>name</var> [ ,<var>typ</var> ] [ ,<var>param</var>=<var>r</var> ]</code></dt>
|
|
<dd><p>Make a procedure <var>name</var> available to callers. <var>typ</var>, if present, must
|
|
be one of ‘<samp>absolute</samp>’, ‘<samp>code</samp>’ (ELF only, not SOM), ‘<samp>data</samp>’,
|
|
‘<samp>entry</samp>’, ‘<samp>data</samp>’, ‘<samp>entry</samp>’, ‘<samp>millicode</samp>’, ‘<samp>plabel</samp>’,
|
|
‘<samp>pri_prog</samp>’, or ‘<samp>sec_prog</samp>’.
|
|
</p>
|
|
<p><var>param</var>, if present, provides either relocation information for the
|
|
procedure arguments and result, or a privilege level. <var>param</var> may be
|
|
‘<samp>argw<var>n</var></samp>’ (where <var>n</var> ranges from <code>0</code> to <code>3</code>, and
|
|
indicates one of four one-word arguments); ‘<samp>rtnval</samp>’ (the procedure’s
|
|
result); or ‘<samp>priv_lev</samp>’ (privilege level). For arguments or the result,
|
|
<var>r</var> specifies how to relocate, and must be one of ‘<samp>no</samp>’ (not
|
|
relocatable), ‘<samp>gr</samp>’ (argument is in general register), ‘<samp>fr</samp>’ (in
|
|
floating point register), or ‘<samp>fu</samp>’ (upper half of float register).
|
|
For ‘<samp>priv_lev</samp>’, <var>r</var> is an integer.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.half <var>n</var></code></dt>
|
|
<dd><p>Define a two-byte integer constant <var>n</var>; synonym for the portable
|
|
<code>as</code> directive <code>.short</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.import <var>name</var> [ ,<var>typ</var> ]</code></dt>
|
|
<dd><p>Converse of <code>.export</code>; make a procedure available to call. The arguments
|
|
use the same conventions as the first two arguments for <code>.export</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.label <var>name</var></code></dt>
|
|
<dd><p>Define <var>name</var> as a label for the current assembly location.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.leave</code></dt>
|
|
<dd><p>Not yet supported; the assembler rejects programs containing this directive.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.origin <var>lc</var></code></dt>
|
|
<dd><p>Advance location counter to <var>lc</var>. Synonym for the <code>as</code>
|
|
portable directive <code>.org</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.param <var>name</var> [ ,<var>typ</var> ] [ ,<var>param</var>=<var>r</var> ]</code></dt>
|
|
<dd><p>Similar to <code>.export</code>, but used for static procedures.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.proc</code></dt>
|
|
<dd><p>Use preceding the first statement of a procedure.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.procend</code></dt>
|
|
<dd><p>Use following the last statement of a procedure.
|
|
</p>
|
|
</dd>
|
|
<dt><code><var>label</var> .reg <var>expr</var></code></dt>
|
|
<dd><p>Synonym for <code>.equ</code>; define <var>label</var> with the absolute expression
|
|
<var>expr</var> as its value.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.space <var>secname</var> [ ,<var>params</var> ]</code></dt>
|
|
<dd><p>Switch to section <var>secname</var>, creating a new section by that name if
|
|
necessary. You may only use <var>params</var> when creating a new section, not
|
|
when switching to an existing one. <var>secname</var> may identify a section by
|
|
number rather than by name.
|
|
</p>
|
|
<p>If specified, the list <var>params</var> declares attributes of the section,
|
|
identified by keywords. The keywords recognized are ‘<samp>spnum=<var>exp</var></samp>’
|
|
(identify this section by the number <var>exp</var>, an absolute expression),
|
|
‘<samp>sort=<var>exp</var></samp>’ (order sections according to this sort key when linking;
|
|
<var>exp</var> is an absolute expression), ‘<samp>unloadable</samp>’ (section contains no
|
|
loadable data), ‘<samp>notdefined</samp>’ (this section defined elsewhere), and
|
|
‘<samp>private</samp>’ (data in this section not available to other programs).
|
|
</p>
|
|
</dd>
|
|
<dt><code>.spnum <var>secnam</var></code></dt>
|
|
<dd><p>Allocate four bytes of storage, and initialize them with the section number of
|
|
the section named <var>secnam</var>. (You can define the section number with the
|
|
HPPA <code>.space</code> directive.)
|
|
</p>
|
|
<a name="index-string-directive-on-HPPA"></a>
|
|
</dd>
|
|
<dt><code>.string "<var>str</var>"</code></dt>
|
|
<dd><p>Copy the characters in the string <var>str</var> to the object file.
|
|
See <a href="#Strings">Strings</a>, for information on escape sequences you can use in
|
|
<code>as</code> strings.
|
|
</p>
|
|
<p><em>Warning!</em> The HPPA version of <code>.string</code> differs from the
|
|
usual <code>as</code> definition: it does <em>not</em> write a zero byte
|
|
after copying <var>str</var>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.stringz "<var>str</var>"</code></dt>
|
|
<dd><p>Like <code>.string</code>, but appends a zero byte after copying <var>str</var> to object
|
|
file.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.subspa <var>name</var> [ ,<var>params</var> ]</code></dt>
|
|
<dt><code>.nsubspa <var>name</var> [ ,<var>params</var> ]</code></dt>
|
|
<dd><p>Similar to <code>.space</code>, but selects a subsection <var>name</var> within the
|
|
current section. You may only specify <var>params</var> when you create a
|
|
subsection (in the first instance of <code>.subspa</code> for this <var>name</var>).
|
|
</p>
|
|
<p>If specified, the list <var>params</var> declares attributes of the subsection,
|
|
identified by keywords. The keywords recognized are ‘<samp>quad=<var>expr</var></samp>’
|
|
(“quadrant” for this subsection), ‘<samp>align=<var>expr</var></samp>’ (alignment for
|
|
beginning of this subsection; a power of two), ‘<samp>access=<var>expr</var></samp>’ (value
|
|
for “access rights” field), ‘<samp>sort=<var>expr</var></samp>’ (sorting order for this
|
|
subspace in link), ‘<samp>code_only</samp>’ (subsection contains only code),
|
|
‘<samp>unloadable</samp>’ (subsection cannot be loaded into memory), ‘<samp>comdat</samp>’
|
|
(subsection is comdat), ‘<samp>common</samp>’ (subsection is common block),
|
|
‘<samp>dup_comm</samp>’ (subsection may have duplicate names), or ‘<samp>zero</samp>’
|
|
(subsection is all zeros, do not write in object file).
|
|
</p>
|
|
<p><code>.nsubspa</code> always creates a new subspace with the given name, even
|
|
if one with the same name already exists.
|
|
</p>
|
|
<p>‘<samp>comdat</samp>’, ‘<samp>common</samp>’ and ‘<samp>dup_comm</samp>’ can be used to implement
|
|
various flavors of one-only support when using the SOM linker. The SOM
|
|
linker only supports specific combinations of these flags. The details
|
|
are not documented. A brief description is provided here.
|
|
</p>
|
|
<p>‘<samp>comdat</samp>’ provides a form of linkonce support. It is useful for
|
|
both code and data subspaces. A ‘<samp>comdat</samp>’ subspace has a key symbol
|
|
marked by the ‘<samp>is_comdat</samp>’ flag or ‘<samp>ST_COMDAT</samp>’. Only the first
|
|
subspace for any given key is selected. The key symbol becomes universal
|
|
in shared links. This is similar to the behavior of ‘<samp>secondary_def</samp>’
|
|
symbols.
|
|
</p>
|
|
<p>‘<samp>common</samp>’ provides Fortran named common support. It is only useful
|
|
for data subspaces. Symbols with the flag ‘<samp>is_common</samp>’ retain this
|
|
flag in shared links. Referencing a ‘<samp>is_common</samp>’ symbol in a shared
|
|
library from outside the library doesn’t work. Thus, ‘<samp>is_common</samp>’
|
|
symbols must be output whenever they are needed.
|
|
</p>
|
|
<p>‘<samp>common</samp>’ and ‘<samp>dup_comm</samp>’ together provide Cobol common support.
|
|
The subspaces in this case must all be the same length. Otherwise, this
|
|
support is similar to the Fortran common support.
|
|
</p>
|
|
<p>‘<samp>dup_comm</samp>’ by itself provides a type of one-only support for code.
|
|
Only the first ‘<samp>dup_comm</samp>’ subspace is selected. There is a rather
|
|
complex algorithm to compare subspaces. Code symbols marked with the
|
|
‘<samp>dup_common</samp>’ flag are hidden. This support was intended for "C++
|
|
duplicate inlines".
|
|
</p>
|
|
<p>A simplified technique is used to mark the flags of symbols based on
|
|
the flags of their subspace. A symbol with the scope SS_UNIVERSAL and
|
|
type ST_ENTRY, ST_CODE or ST_DATA is marked with the corresponding
|
|
settings of ‘<samp>comdat</samp>’, ‘<samp>common</samp>’ and ‘<samp>dup_comm</samp>’ from the
|
|
subspace, respectively. This avoids having to introduce additional
|
|
directives to mark these symbols. The HP assembler sets ‘<samp>is_common</samp>’
|
|
from ‘<samp>common</samp>’. However, it doesn’t set the ‘<samp>dup_common</samp>’ from
|
|
‘<samp>dup_comm</samp>’. It doesn’t have ‘<samp>comdat</samp>’ support.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.version "<var>str</var>"</code></dt>
|
|
<dd><p>Write <var>str</var> as version identifier in object code.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="HPPA-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#HPPA-Directives" accesskey="p" rel="previous">HPPA Directives</a>, Up: <a href="#HPPA_002dDependent" accesskey="u" rel="up">HPPA-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-9"></a>
|
|
<h4 class="subsection">9.15.6 Opcodes</h4>
|
|
<p>For detailed information on the HPPA machine instruction set, see
|
|
<cite>PA-RISC Architecture and Instruction Set Reference Manual</cite>
|
|
(HP 09740-90039).
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="i386_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#IA_002d64_002dDependent" accesskey="n" rel="next">IA-64-Dependent</a>, Previous: <a href="#HPPA_002dDependent" accesskey="p" rel="previous">HPPA-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t80386-Dependent-Features"></a>
|
|
<h3 class="section">9.16 80386 Dependent Features</h3>
|
|
|
|
<a name="index-i386-support"></a>
|
|
<a name="index-i80386-support"></a>
|
|
<a name="index-x86_002d64-support"></a>
|
|
|
|
<p>The i386 version <code>as</code> supports both the original Intel 386
|
|
architecture in both 16 and 32-bit mode as well as AMD x86-64 architecture
|
|
extending the Intel architecture to 64-bits.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dOptions" accesskey="1">i386-Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dDirectives" accesskey="2">i386-Directives</a>:</td><td> </td><td align="left" valign="top">X86 specific directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dSyntax" accesskey="3">i386-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntactical considerations
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dMnemonics" accesskey="4">i386-Mnemonics</a>:</td><td> </td><td align="left" valign="top">Instruction Naming
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dRegs" accesskey="5">i386-Regs</a>:</td><td> </td><td align="left" valign="top">Register Naming
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dPrefixes" accesskey="6">i386-Prefixes</a>:</td><td> </td><td align="left" valign="top">Instruction Prefixes
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dMemory" accesskey="7">i386-Memory</a>:</td><td> </td><td align="left" valign="top">Memory References
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dJumps" accesskey="8">i386-Jumps</a>:</td><td> </td><td align="left" valign="top">Handling of Jump Instructions
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dFloat" accesskey="9">i386-Float</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dSIMD">i386-SIMD</a>:</td><td> </td><td align="left" valign="top">Intel’s MMX and AMD’s 3DNow! SIMD Operations
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dLWP">i386-LWP</a>:</td><td> </td><td align="left" valign="top">AMD’s Lightweight Profiling Instructions
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dBMI">i386-BMI</a>:</td><td> </td><td align="left" valign="top">Bit Manipulation Instruction
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dTBM">i386-TBM</a>:</td><td> </td><td align="left" valign="top">AMD’s Trailing Bit Manipulation Instructions
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002d16bit">i386-16bit</a>:</td><td> </td><td align="left" valign="top">Writing 16-bit Code
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dArch">i386-Arch</a>:</td><td> </td><td align="left" valign="top">Specifying an x86 CPU architecture
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dISA">i386-ISA</a>:</td><td> </td><td align="left" valign="top">AMD64 ISA vs. Intel64 ISA
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dBugs">i386-Bugs</a>:</td><td> </td><td align="left" valign="top">AT&T Syntax bugs
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dNotes">i386-Notes</a>:</td><td> </td><td align="left" valign="top">Notes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="i386_002dOptions"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dDirectives" accesskey="n" rel="next">i386-Directives</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-11"></a>
|
|
<h4 class="subsection">9.16.1 Options</h4>
|
|
|
|
<a name="index-options-for-i386"></a>
|
|
<a name="index-options-for-x86_002d64"></a>
|
|
<a name="index-i386-options"></a>
|
|
<a name="index-x86_002d64-options"></a>
|
|
|
|
<p>The i386 version of <code>as</code> has a few machine
|
|
dependent options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002d_002d32-option_002c-i386"></a>
|
|
<a name="index-_002d_002d32-option_002c-x86_002d64"></a>
|
|
<a name="index-_002d_002dx32-option_002c-i386"></a>
|
|
<a name="index-_002d_002dx32-option_002c-x86_002d64"></a>
|
|
<a name="index-_002d_002d64-option_002c-i386"></a>
|
|
<a name="index-_002d_002d64-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>--32 | --x32 | --64</code></dt>
|
|
<dd><p>Select the word size, either 32 bits or 64 bits. ‘<samp>--32</samp>’
|
|
implies Intel i386 architecture, while ‘<samp>--x32</samp>’ and ‘<samp>--64</samp>’
|
|
imply AMD x86-64 architecture with 32-bit or 64-bit word-size
|
|
respectively.
|
|
</p>
|
|
<p>These options are only available with the ELF object file format, and
|
|
require that the necessary BFD support has been included (on a 32-bit
|
|
platform you have to add –enable-64-bit-bfd to configure enable 64-bit
|
|
usage and use x86-64 as target platform).
|
|
</p>
|
|
</dd>
|
|
<dt><code>-n</code></dt>
|
|
<dd><p>By default, x86 GAS replaces multiple nop instructions used for
|
|
alignment within code sections with multi-byte nop instructions such
|
|
as leal 0(%esi,1),%esi. This switch disables the optimization if a single
|
|
byte nop (0x90) is explicitly specified as the fill byte for alignment.
|
|
</p>
|
|
<a name="index-_002d_002ddivide-option_002c-i386"></a>
|
|
</dd>
|
|
<dt><code>--divide</code></dt>
|
|
<dd><p>On SVR4-derived platforms, the character ‘<samp>/</samp>’ is treated as a comment
|
|
character, which means that it cannot be used in expressions. The
|
|
‘<samp>--divide</samp>’ option turns ‘<samp>/</samp>’ into a normal character. This does
|
|
not disable ‘<samp>/</samp>’ at the beginning of a line starting a comment, or
|
|
affect using ‘<samp>#</samp>’ for starting a comment.
|
|
</p>
|
|
<a name="index-_002dmarch_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmarch_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-march=<var>CPU</var>[+<var>EXTENSION</var>…]</code></dt>
|
|
<dd><p>This option specifies the target processor. The assembler will
|
|
issue an error message if an attempt is made to assemble an instruction
|
|
which will not execute on the target processor. The following
|
|
processor names are recognized:
|
|
<code>i8086</code>,
|
|
<code>i186</code>,
|
|
<code>i286</code>,
|
|
<code>i386</code>,
|
|
<code>i486</code>,
|
|
<code>i586</code>,
|
|
<code>i686</code>,
|
|
<code>pentium</code>,
|
|
<code>pentiumpro</code>,
|
|
<code>pentiumii</code>,
|
|
<code>pentiumiii</code>,
|
|
<code>pentium4</code>,
|
|
<code>prescott</code>,
|
|
<code>nocona</code>,
|
|
<code>core</code>,
|
|
<code>core2</code>,
|
|
<code>corei7</code>,
|
|
<code>iamcu</code>,
|
|
<code>k6</code>,
|
|
<code>k6_2</code>,
|
|
<code>athlon</code>,
|
|
<code>opteron</code>,
|
|
<code>k8</code>,
|
|
<code>amdfam10</code>,
|
|
<code>bdver1</code>,
|
|
<code>bdver2</code>,
|
|
<code>bdver3</code>,
|
|
<code>bdver4</code>,
|
|
<code>znver1</code>,
|
|
<code>znver2</code>,
|
|
<code>znver3</code>,
|
|
<code>btver1</code>,
|
|
<code>btver2</code>,
|
|
<code>generic32</code> and
|
|
<code>generic64</code>.
|
|
</p>
|
|
<p>In addition to the basic instruction set, the assembler can be told to
|
|
accept various extension mnemonics. For example,
|
|
<code>-march=i686+sse4+vmx</code> extends <var>i686</var> with <var>sse4</var> and
|
|
<var>vmx</var>. The following extensions are currently supported:
|
|
<code>8087</code>,
|
|
<code>287</code>,
|
|
<code>387</code>,
|
|
<code>687</code>,
|
|
<code>no87</code>,
|
|
<code>no287</code>,
|
|
<code>no387</code>,
|
|
<code>no687</code>,
|
|
<code>cmov</code>,
|
|
<code>nocmov</code>,
|
|
<code>fxsr</code>,
|
|
<code>nofxsr</code>,
|
|
<code>mmx</code>,
|
|
<code>nommx</code>,
|
|
<code>sse</code>,
|
|
<code>sse2</code>,
|
|
<code>sse3</code>,
|
|
<code>sse4a</code>,
|
|
<code>ssse3</code>,
|
|
<code>sse4.1</code>,
|
|
<code>sse4.2</code>,
|
|
<code>sse4</code>,
|
|
<code>nosse</code>,
|
|
<code>nosse2</code>,
|
|
<code>nosse3</code>,
|
|
<code>nosse4a</code>,
|
|
<code>nossse3</code>,
|
|
<code>nosse4.1</code>,
|
|
<code>nosse4.2</code>,
|
|
<code>nosse4</code>,
|
|
<code>avx</code>,
|
|
<code>avx2</code>,
|
|
<code>noavx</code>,
|
|
<code>noavx2</code>,
|
|
<code>adx</code>,
|
|
<code>rdseed</code>,
|
|
<code>prfchw</code>,
|
|
<code>smap</code>,
|
|
<code>mpx</code>,
|
|
<code>sha</code>,
|
|
<code>rdpid</code>,
|
|
<code>ptwrite</code>,
|
|
<code>cet</code>,
|
|
<code>gfni</code>,
|
|
<code>vaes</code>,
|
|
<code>vpclmulqdq</code>,
|
|
<code>prefetchwt1</code>,
|
|
<code>clflushopt</code>,
|
|
<code>se1</code>,
|
|
<code>clwb</code>,
|
|
<code>movdiri</code>,
|
|
<code>movdir64b</code>,
|
|
<code>enqcmd</code>,
|
|
<code>serialize</code>,
|
|
<code>tsxldtrk</code>,
|
|
<code>kl</code>,
|
|
<code>nokl</code>,
|
|
<code>widekl</code>,
|
|
<code>nowidekl</code>,
|
|
<code>hreset</code>,
|
|
<code>avx512f</code>,
|
|
<code>avx512cd</code>,
|
|
<code>avx512er</code>,
|
|
<code>avx512pf</code>,
|
|
<code>avx512vl</code>,
|
|
<code>avx512bw</code>,
|
|
<code>avx512dq</code>,
|
|
<code>avx512ifma</code>,
|
|
<code>avx512vbmi</code>,
|
|
<code>avx512_4fmaps</code>,
|
|
<code>avx512_4vnniw</code>,
|
|
<code>avx512_vpopcntdq</code>,
|
|
<code>avx512_vbmi2</code>,
|
|
<code>avx512_vnni</code>,
|
|
<code>avx512_bitalg</code>,
|
|
<code>avx512_vp2intersect</code>,
|
|
<code>tdx</code>,
|
|
<code>avx512_bf16</code>,
|
|
<code>avx_vnni</code>,
|
|
<code>avx512_fp16</code>,
|
|
<code>noavx512f</code>,
|
|
<code>noavx512cd</code>,
|
|
<code>noavx512er</code>,
|
|
<code>noavx512pf</code>,
|
|
<code>noavx512vl</code>,
|
|
<code>noavx512bw</code>,
|
|
<code>noavx512dq</code>,
|
|
<code>noavx512ifma</code>,
|
|
<code>noavx512vbmi</code>,
|
|
<code>noavx512_4fmaps</code>,
|
|
<code>noavx512_4vnniw</code>,
|
|
<code>noavx512_vpopcntdq</code>,
|
|
<code>noavx512_vbmi2</code>,
|
|
<code>noavx512_vnni</code>,
|
|
<code>noavx512_bitalg</code>,
|
|
<code>noavx512_vp2intersect</code>,
|
|
<code>notdx</code>,
|
|
<code>noavx512_bf16</code>,
|
|
<code>noavx_vnni</code>,
|
|
<code>noavx512_fp16</code>,
|
|
<code>noenqcmd</code>,
|
|
<code>noserialize</code>,
|
|
<code>notsxldtrk</code>,
|
|
<code>amx_int8</code>,
|
|
<code>noamx_int8</code>,
|
|
<code>amx_bf16</code>,
|
|
<code>noamx_bf16</code>,
|
|
<code>amx_tile</code>,
|
|
<code>noamx_tile</code>,
|
|
<code>nouintr</code>,
|
|
<code>nohreset</code>,
|
|
<code>vmx</code>,
|
|
<code>vmfunc</code>,
|
|
<code>smx</code>,
|
|
<code>xsave</code>,
|
|
<code>xsaveopt</code>,
|
|
<code>xsavec</code>,
|
|
<code>xsaves</code>,
|
|
<code>aes</code>,
|
|
<code>pclmul</code>,
|
|
<code>fsgsbase</code>,
|
|
<code>rdrnd</code>,
|
|
<code>f16c</code>,
|
|
<code>bmi2</code>,
|
|
<code>fma</code>,
|
|
<code>movbe</code>,
|
|
<code>ept</code>,
|
|
<code>lzcnt</code>,
|
|
<code>popcnt</code>,
|
|
<code>hle</code>,
|
|
<code>rtm</code>,
|
|
<code>invpcid</code>,
|
|
<code>clflush</code>,
|
|
<code>mwaitx</code>,
|
|
<code>clzero</code>,
|
|
<code>wbnoinvd</code>,
|
|
<code>pconfig</code>,
|
|
<code>waitpkg</code>,
|
|
<code>uintr</code>,
|
|
<code>cldemote</code>,
|
|
<code>rdpru</code>,
|
|
<code>mcommit</code>,
|
|
<code>sev_es</code>,
|
|
<code>lwp</code>,
|
|
<code>fma4</code>,
|
|
<code>xop</code>,
|
|
<code>cx16</code>,
|
|
<code>syscall</code>,
|
|
<code>rdtscp</code>,
|
|
<code>3dnow</code>,
|
|
<code>3dnowa</code>,
|
|
<code>sse4a</code>,
|
|
<code>sse5</code>,
|
|
<code>snp</code>,
|
|
<code>invlpgb</code>,
|
|
<code>tlbsync</code>,
|
|
<code>svme</code> and
|
|
<code>padlock</code>.
|
|
Note that rather than extending a basic instruction set, the extension
|
|
mnemonics starting with <code>no</code> revoke the respective functionality.
|
|
</p>
|
|
<p>When the <code>.arch</code> directive is used with <samp>-march</samp>, the
|
|
<code>.arch</code> directive will take precedent.
|
|
</p>
|
|
<a name="index-_002dmtune_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmtune_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mtune=<var>CPU</var></code></dt>
|
|
<dd><p>This option specifies a processor to optimize for. When used in
|
|
conjunction with the <samp>-march</samp> option, only instructions
|
|
of the processor specified by the <samp>-march</samp> option will be
|
|
generated.
|
|
</p>
|
|
<p>Valid <var>CPU</var> values are identical to the processor list of
|
|
<samp>-march=<var>CPU</var></samp>.
|
|
</p>
|
|
<a name="index-_002dmsse2avx-option_002c-i386"></a>
|
|
<a name="index-_002dmsse2avx-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-msse2avx</code></dt>
|
|
<dd><p>This option specifies that the assembler should encode SSE instructions
|
|
with VEX prefix.
|
|
</p>
|
|
<a name="index-_002dmuse_002dunaligned_002dvector_002dmove-option_002c-i386"></a>
|
|
<a name="index-_002dmuse_002dunaligned_002dvector_002dmove-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-muse-unaligned-vector-move</code></dt>
|
|
<dd><p>This option specifies that the assembler should encode aligned vector
|
|
move as unaligned vector move.
|
|
</p>
|
|
<a name="index-_002dmsse_002dcheck_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmsse_002dcheck_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-msse-check=<var>none</var></code></dt>
|
|
<dt><code>-msse-check=<var>warning</var></code></dt>
|
|
<dt><code>-msse-check=<var>error</var></code></dt>
|
|
<dd><p>These options control if the assembler should check SSE instructions.
|
|
<samp>-msse-check=<var>none</var></samp> will make the assembler not to check SSE
|
|
instructions, which is the default. <samp>-msse-check=<var>warning</var></samp>
|
|
will make the assembler issue a warning for any SSE instruction.
|
|
<samp>-msse-check=<var>error</var></samp> will make the assembler issue an error
|
|
for any SSE instruction.
|
|
</p>
|
|
<a name="index-_002dmavxscalar_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmavxscalar_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mavxscalar=<var>128</var></code></dt>
|
|
<dt><code>-mavxscalar=<var>256</var></code></dt>
|
|
<dd><p>These options control how the assembler should encode scalar AVX
|
|
instructions. <samp>-mavxscalar=<var>128</var></samp> will encode scalar
|
|
AVX instructions with 128bit vector length, which is the default.
|
|
<samp>-mavxscalar=<var>256</var></samp> will encode scalar AVX instructions
|
|
with 256bit vector length.
|
|
</p>
|
|
<p>WARNING: Don’t use this for production code - due to CPU errata the
|
|
resulting code may not work on certain models.
|
|
</p>
|
|
<a name="index-_002dmvexwig_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmvexwig_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mvexwig=<var>0</var></code></dt>
|
|
<dt><code>-mvexwig=<var>1</var></code></dt>
|
|
<dd><p>These options control how the assembler should encode VEX.W-ignored (WIG)
|
|
VEX instructions. <samp>-mvexwig=<var>0</var></samp> will encode WIG VEX
|
|
instructions with vex.w = 0, which is the default.
|
|
<samp>-mvexwig=<var>1</var></samp> will encode WIG EVEX instructions with
|
|
vex.w = 1.
|
|
</p>
|
|
<p>WARNING: Don’t use this for production code - due to CPU errata the
|
|
resulting code may not work on certain models.
|
|
</p>
|
|
<a name="index-_002dmevexlig_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmevexlig_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mevexlig=<var>128</var></code></dt>
|
|
<dt><code>-mevexlig=<var>256</var></code></dt>
|
|
<dt><code>-mevexlig=<var>512</var></code></dt>
|
|
<dd><p>These options control how the assembler should encode length-ignored
|
|
(LIG) EVEX instructions. <samp>-mevexlig=<var>128</var></samp> will encode LIG
|
|
EVEX instructions with 128bit vector length, which is the default.
|
|
<samp>-mevexlig=<var>256</var></samp> and <samp>-mevexlig=<var>512</var></samp> will
|
|
encode LIG EVEX instructions with 256bit and 512bit vector length,
|
|
respectively.
|
|
</p>
|
|
<a name="index-_002dmevexwig_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmevexwig_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mevexwig=<var>0</var></code></dt>
|
|
<dt><code>-mevexwig=<var>1</var></code></dt>
|
|
<dd><p>These options control how the assembler should encode w-ignored (WIG)
|
|
EVEX instructions. <samp>-mevexwig=<var>0</var></samp> will encode WIG
|
|
EVEX instructions with evex.w = 0, which is the default.
|
|
<samp>-mevexwig=<var>1</var></samp> will encode WIG EVEX instructions with
|
|
evex.w = 1.
|
|
</p>
|
|
<a name="index-_002dmmnemonic_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmmnemonic_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mmnemonic=<var>att</var></code></dt>
|
|
<dt><code>-mmnemonic=<var>intel</var></code></dt>
|
|
<dd><p>This option specifies instruction mnemonic for matching instructions.
|
|
The <code>.att_mnemonic</code> and <code>.intel_mnemonic</code> directives will
|
|
take precedent.
|
|
</p>
|
|
<a name="index-_002dmsyntax_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmsyntax_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-msyntax=<var>att</var></code></dt>
|
|
<dt><code>-msyntax=<var>intel</var></code></dt>
|
|
<dd><p>This option specifies instruction syntax when processing instructions.
|
|
The <code>.att_syntax</code> and <code>.intel_syntax</code> directives will
|
|
take precedent.
|
|
</p>
|
|
<a name="index-_002dmnaked_002dreg-option_002c-i386"></a>
|
|
<a name="index-_002dmnaked_002dreg-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mnaked-reg</code></dt>
|
|
<dd><p>This option specifies that registers don’t require a ‘<samp>%</samp>’ prefix.
|
|
The <code>.att_syntax</code> and <code>.intel_syntax</code> directives will take precedent.
|
|
</p>
|
|
<a name="index-_002dmadd_002dbnd_002dprefix-option_002c-i386"></a>
|
|
<a name="index-_002dmadd_002dbnd_002dprefix-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-madd-bnd-prefix</code></dt>
|
|
<dd><p>This option forces the assembler to add BND prefix to all branches, even
|
|
if such prefix was not explicitly specified in the source code.
|
|
</p>
|
|
<a name="index-_002dmshared-option_002c-i386"></a>
|
|
<a name="index-_002dmshared-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mno-shared</code></dt>
|
|
<dd><p>On ELF target, the assembler normally optimizes out non-PLT relocations
|
|
against defined non-weak global branch targets with default visibility.
|
|
The ‘<samp>-mshared</samp>’ option tells the assembler to generate code which
|
|
may go into a shared library where all non-weak global branch targets
|
|
with default visibility can be preempted. The resulting code is
|
|
slightly bigger. This option only affects the handling of branch
|
|
instructions.
|
|
</p>
|
|
<a name="index-_002dmbig_002dobj-option_002c-i386"></a>
|
|
<a name="index-_002dmbig_002dobj-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mbig-obj</code></dt>
|
|
<dd><p>On PE/COFF target this option forces the use of big object file
|
|
format, which allows more than 32768 sections.
|
|
</p>
|
|
<a name="index-_002dmomit_002dlock_002dprefix_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmomit_002dlock_002dprefix_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-momit-lock-prefix=<var>no</var></code></dt>
|
|
<dt><code>-momit-lock-prefix=<var>yes</var></code></dt>
|
|
<dd><p>These options control how the assembler should encode lock prefix.
|
|
This option is intended as a workaround for processors, that fail on
|
|
lock prefix. This option can only be safely used with single-core,
|
|
single-thread computers
|
|
<samp>-momit-lock-prefix=<var>yes</var></samp> will omit all lock prefixes.
|
|
<samp>-momit-lock-prefix=<var>no</var></samp> will encode lock prefix as usual,
|
|
which is the default.
|
|
</p>
|
|
<a name="index-_002dmfence_002das_002dlock_002dadd_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmfence_002das_002dlock_002dadd_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mfence-as-lock-add=<var>no</var></code></dt>
|
|
<dt><code>-mfence-as-lock-add=<var>yes</var></code></dt>
|
|
<dd><p>These options control how the assembler should encode lfence, mfence and
|
|
sfence.
|
|
<samp>-mfence-as-lock-add=<var>yes</var></samp> will encode lfence, mfence and
|
|
sfence as ‘<samp>lock addl $0x0, (%rsp)</samp>’ in 64-bit mode and
|
|
‘<samp>lock addl $0x0, (%esp)</samp>’ in 32-bit mode.
|
|
<samp>-mfence-as-lock-add=<var>no</var></samp> will encode lfence, mfence and
|
|
sfence as usual, which is the default.
|
|
</p>
|
|
<a name="index-_002dmrelax_002drelocations_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmrelax_002drelocations_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mrelax-relocations=<var>no</var></code></dt>
|
|
<dt><code>-mrelax-relocations=<var>yes</var></code></dt>
|
|
<dd><p>These options control whether the assembler should generate relax
|
|
relocations, R_386_GOT32X, in 32-bit mode, or R_X86_64_GOTPCRELX and
|
|
R_X86_64_REX_GOTPCRELX, in 64-bit mode.
|
|
<samp>-mrelax-relocations=<var>yes</var></samp> will generate relax relocations.
|
|
<samp>-mrelax-relocations=<var>no</var></samp> will not generate relax
|
|
relocations. The default can be controlled by a configure option
|
|
<samp>--enable-x86-relax-relocations</samp>.
|
|
</p>
|
|
<a name="index-_002dmalign_002dbranch_002dboundary_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmalign_002dbranch_002dboundary_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-malign-branch-boundary=<var>NUM</var></code></dt>
|
|
<dd><p>This option controls how the assembler should align branches with segment
|
|
prefixes or NOP. <var>NUM</var> must be a power of 2. It should be 0 or
|
|
no less than 16. Branches will be aligned within <var>NUM</var> byte
|
|
boundary. <samp>-malign-branch-boundary=0</samp>, which is the default,
|
|
doesn’t align branches.
|
|
</p>
|
|
<a name="index-_002dmalign_002dbranch_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmalign_002dbranch_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-malign-branch=<var>TYPE</var>[+<var>TYPE</var>...]</code></dt>
|
|
<dd><p>This option specifies types of branches to align. <var>TYPE</var> is
|
|
combination of ‘<samp>jcc</samp>’, which aligns conditional jumps,
|
|
‘<samp>fused</samp>’, which aligns fused conditional jumps, ‘<samp>jmp</samp>’,
|
|
which aligns unconditional jumps, ‘<samp>call</samp>’ which aligns calls,
|
|
‘<samp>ret</samp>’, which aligns rets, ‘<samp>indirect</samp>’, which aligns indirect
|
|
jumps and calls. The default is <samp>-malign-branch=jcc+fused+jmp</samp>.
|
|
</p>
|
|
<a name="index-_002dmalign_002dbranch_002dprefix_002dsize_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmalign_002dbranch_002dprefix_002dsize_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-malign-branch-prefix-size=<var>NUM</var></code></dt>
|
|
<dd><p>This option specifies the maximum number of prefixes on an instruction
|
|
to align branches. <var>NUM</var> should be between 0 and 5. The default
|
|
<var>NUM</var> is 5.
|
|
</p>
|
|
<a name="index-_002dmbranches_002dwithin_002d32B_002dboundaries-option_002c-i386"></a>
|
|
<a name="index-_002dmbranches_002dwithin_002d32B_002dboundaries-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mbranches-within-32B-boundaries</code></dt>
|
|
<dd><p>This option aligns conditional jumps, fused conditional jumps and
|
|
unconditional jumps within 32 byte boundary with up to 5 segment prefixes
|
|
on an instruction. It is equivalent to
|
|
<samp>-malign-branch-boundary=32</samp>
|
|
<samp>-malign-branch=jcc+fused+jmp</samp>
|
|
<samp>-malign-branch-prefix-size=5</samp>.
|
|
The default doesn’t align branches.
|
|
</p>
|
|
<a name="index-_002dmlfence_002dafter_002dload_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmlfence_002dafter_002dload_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mlfence-after-load=<var>no</var></code></dt>
|
|
<dt><code>-mlfence-after-load=<var>yes</var></code></dt>
|
|
<dd><p>These options control whether the assembler should generate lfence
|
|
after load instructions. <samp>-mlfence-after-load=<var>yes</var></samp> will
|
|
generate lfence. <samp>-mlfence-after-load=<var>no</var></samp> will not generate
|
|
lfence, which is the default.
|
|
</p>
|
|
<a name="index-_002dmlfence_002dbefore_002dindirect_002dbranch_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmlfence_002dbefore_002dindirect_002dbranch_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mlfence-before-indirect-branch=<var>none</var></code></dt>
|
|
<dt><code>-mlfence-before-indirect-branch=<var>all</var></code></dt>
|
|
<dt><code>-mlfence-before-indirect-branch=<var>register</var></code></dt>
|
|
<dt><code>-mlfence-before-indirect-branch=<var>memory</var></code></dt>
|
|
<dd><p>These options control whether the assembler should generate lfence
|
|
before indirect near branch instructions.
|
|
<samp>-mlfence-before-indirect-branch=<var>all</var></samp> will generate lfence
|
|
before indirect near branch via register and issue a warning before
|
|
indirect near branch via memory.
|
|
It also implicitly sets <samp>-mlfence-before-ret=<var>shl</var></samp> when
|
|
there’s no explicit <samp>-mlfence-before-ret=</samp>.
|
|
<samp>-mlfence-before-indirect-branch=<var>register</var></samp> will generate
|
|
lfence before indirect near branch via register.
|
|
<samp>-mlfence-before-indirect-branch=<var>memory</var></samp> will issue a
|
|
warning before indirect near branch via memory.
|
|
<samp>-mlfence-before-indirect-branch=<var>none</var></samp> will not generate
|
|
lfence nor issue warning, which is the default. Note that lfence won’t
|
|
be generated before indirect near branch via register with
|
|
<samp>-mlfence-after-load=<var>yes</var></samp> since lfence will be generated
|
|
after loading branch target register.
|
|
</p>
|
|
<a name="index-_002dmlfence_002dbefore_002dret_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmlfence_002dbefore_002dret_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mlfence-before-ret=<var>none</var></code></dt>
|
|
<dt><code>-mlfence-before-ret=<var>shl</var></code></dt>
|
|
<dt><code>-mlfence-before-ret=<var>or</var></code></dt>
|
|
<dt><code>-mlfence-before-ret=<var>yes</var></code></dt>
|
|
<dt><code>-mlfence-before-ret=<var>not</var></code></dt>
|
|
<dd><p>These options control whether the assembler should generate lfence
|
|
before ret. <samp>-mlfence-before-ret=<var>or</var></samp> will generate
|
|
generate or instruction with lfence.
|
|
<samp>-mlfence-before-ret=<var>shl/yes</var></samp> will generate shl instruction
|
|
with lfence. <samp>-mlfence-before-ret=<var>not</var></samp> will generate not
|
|
instruction with lfence. <samp>-mlfence-before-ret=<var>none</var></samp> will not
|
|
generate lfence, which is the default.
|
|
</p>
|
|
<a name="index-_002dmx86_002dused_002dnote_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmx86_002dused_002dnote_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mx86-used-note=<var>no</var></code></dt>
|
|
<dt><code>-mx86-used-note=<var>yes</var></code></dt>
|
|
<dd><p>These options control whether the assembler should generate
|
|
GNU_PROPERTY_X86_ISA_1_USED and GNU_PROPERTY_X86_FEATURE_2_USED
|
|
GNU property notes. The default can be controlled by the
|
|
<samp>--enable-x86-used-note</samp> configure option.
|
|
</p>
|
|
<a name="index-_002dmevexrcig_003d-option_002c-i386"></a>
|
|
<a name="index-_002dmevexrcig_003d-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mevexrcig=<var>rne</var></code></dt>
|
|
<dt><code>-mevexrcig=<var>rd</var></code></dt>
|
|
<dt><code>-mevexrcig=<var>ru</var></code></dt>
|
|
<dt><code>-mevexrcig=<var>rz</var></code></dt>
|
|
<dd><p>These options control how the assembler should encode SAE-only
|
|
EVEX instructions. <samp>-mevexrcig=<var>rne</var></samp> will encode RC bits
|
|
of EVEX instruction with 00, which is the default.
|
|
<samp>-mevexrcig=<var>rd</var></samp>, <samp>-mevexrcig=<var>ru</var></samp>
|
|
and <samp>-mevexrcig=<var>rz</var></samp> will encode SAE-only EVEX instructions
|
|
with 01, 10 and 11 RC bits, respectively.
|
|
</p>
|
|
<a name="index-_002dmamd64-option_002c-x86_002d64"></a>
|
|
<a name="index-_002dmintel64-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-mamd64</code></dt>
|
|
<dt><code>-mintel64</code></dt>
|
|
<dd><p>This option specifies that the assembler should accept only AMD64 or
|
|
Intel64 ISA in 64-bit mode. The default is to accept common, Intel64
|
|
only and AMD64 ISAs.
|
|
</p>
|
|
<a name="index-_002dO0-option_002c-i386"></a>
|
|
<a name="index-_002dO0-option_002c-x86_002d64"></a>
|
|
<a name="index-_002dO-option_002c-i386"></a>
|
|
<a name="index-_002dO-option_002c-x86_002d64"></a>
|
|
<a name="index-_002dO1-option_002c-i386"></a>
|
|
<a name="index-_002dO1-option_002c-x86_002d64"></a>
|
|
<a name="index-_002dO2-option_002c-i386"></a>
|
|
<a name="index-_002dO2-option_002c-x86_002d64"></a>
|
|
<a name="index-_002dOs-option_002c-i386"></a>
|
|
<a name="index-_002dOs-option_002c-x86_002d64"></a>
|
|
</dd>
|
|
<dt><code>-O0 | -O | -O1 | -O2 | -Os</code></dt>
|
|
<dd><p>Optimize instruction encoding with smaller instruction size. ‘<samp>-O</samp>’
|
|
and ‘<samp>-O1</samp>’ encode 64-bit register load instructions with 64-bit
|
|
immediate as 32-bit register load instructions with 31-bit or 32-bits
|
|
immediates, encode 64-bit register clearing instructions with 32-bit
|
|
register clearing instructions, encode 256-bit/512-bit VEX/EVEX vector
|
|
register clearing instructions with 128-bit VEX vector register
|
|
clearing instructions, encode 128-bit/256-bit EVEX vector
|
|
register load/store instructions with VEX vector register load/store
|
|
instructions, and encode 128-bit/256-bit EVEX packed integer logical
|
|
instructions with 128-bit/256-bit VEX packed integer logical.
|
|
</p>
|
|
<p>‘<samp>-O2</samp>’ includes ‘<samp>-O1</samp>’ optimization plus encodes
|
|
256-bit/512-bit EVEX vector register clearing instructions with 128-bit
|
|
EVEX vector register clearing instructions. In 64-bit mode VEX encoded
|
|
instructions with commutative source operands will also have their
|
|
source operands swapped if this allows using the 2-byte VEX prefix form
|
|
instead of the 3-byte one. Certain forms of AND as well as OR with the
|
|
same (register) operand specified twice will also be changed to TEST.
|
|
</p>
|
|
<p>‘<samp>-Os</samp>’ includes ‘<samp>-O2</samp>’ optimization plus encodes 16-bit, 32-bit
|
|
and 64-bit register tests with immediate as 8-bit register test with
|
|
immediate. ‘<samp>-O0</samp>’ turns off this optimization.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="i386_002dDirectives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dSyntax" accesskey="n" rel="next">i386-Syntax</a>, Previous: <a href="#i386_002dOptions" accesskey="p" rel="previous">i386-Options</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="x86-specific-Directives"></a>
|
|
<h4 class="subsection">9.16.2 x86 specific Directives</h4>
|
|
|
|
<a name="index-machine-directives_002c-x86"></a>
|
|
<a name="index-x86-machine-directives"></a>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-lcomm-directive_002c-COFF"></a>
|
|
</dd>
|
|
<dt><code>.lcomm <var>symbol</var> , <var>length</var>[, <var>alignment</var>]</code></dt>
|
|
<dd><p>Reserve <var>length</var> (an absolute expression) bytes for a local common
|
|
denoted by <var>symbol</var>. The section and value of <var>symbol</var> are
|
|
those of the new local common. The addresses are allocated in the bss
|
|
section, so that at run-time the bytes start off zeroed. Since
|
|
<var>symbol</var> is not declared global, it is normally not visible to
|
|
<code>ld</code>. The optional third parameter, <var>alignment</var>,
|
|
specifies the desired alignment of the symbol in the bss section.
|
|
</p>
|
|
<p>This directive is only available for COFF based x86 targets.
|
|
</p>
|
|
<a name="index-largecomm-directive_002c-ELF"></a>
|
|
</dd>
|
|
<dt><code>.largecomm <var>symbol</var> , <var>length</var>[, <var>alignment</var>]</code></dt>
|
|
<dd><p>This directive behaves in the same way as the <code>comm</code> directive
|
|
except that the data is placed into the <var>.lbss</var> section instead of
|
|
the <var>.bss</var> section <a href="#Comm">Comm</a>.
|
|
</p>
|
|
<p>The directive is intended to be used for data which requires a large
|
|
amount of space, and it is only available for ELF based x86_64
|
|
targets.
|
|
</p>
|
|
<a name="index-value-directive"></a>
|
|
</dd>
|
|
<dt><code>.value <var>expression</var> [, <var>expression</var>]</code></dt>
|
|
<dd><p>This directive behaves in the same way as the <code>.short</code> directive,
|
|
taking a series of comma separated expressions and storing them as
|
|
two-byte wide values into the current section.
|
|
</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="i386_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dMnemonics" accesskey="n" rel="next">i386-Mnemonics</a>, Previous: <a href="#i386_002dDirectives" accesskey="p" rel="previous">i386-Directives</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="i386-Syntactical-Considerations"></a>
|
|
<h4 class="subsection">9.16.3 i386 Syntactical Considerations</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dVariations" accesskey="1">i386-Variations</a>:</td><td> </td><td align="left" valign="top">AT&T Syntax versus Intel Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#i386_002dChars" accesskey="2">i386-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="i386_002dVariations"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dChars" accesskey="n" rel="next">i386-Chars</a>, Up: <a href="#i386_002dSyntax" accesskey="u" rel="up">i386-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="AT_0026T-Syntax-versus-Intel-Syntax"></a>
|
|
<h4 class="subsubsection">9.16.3.1 AT&T Syntax versus Intel Syntax</h4>
|
|
|
|
<a name="index-i386-intel_005fsyntax-pseudo-op"></a>
|
|
<a name="index-intel_005fsyntax-pseudo-op_002c-i386"></a>
|
|
<a name="index-i386-att_005fsyntax-pseudo-op"></a>
|
|
<a name="index-att_005fsyntax-pseudo-op_002c-i386"></a>
|
|
<a name="index-i386-syntax-compatibility"></a>
|
|
<a name="index-syntax-compatibility_002c-i386"></a>
|
|
<a name="index-x86_002d64-intel_005fsyntax-pseudo-op"></a>
|
|
<a name="index-intel_005fsyntax-pseudo-op_002c-x86_002d64"></a>
|
|
<a name="index-x86_002d64-att_005fsyntax-pseudo-op"></a>
|
|
<a name="index-att_005fsyntax-pseudo-op_002c-x86_002d64"></a>
|
|
<a name="index-x86_002d64-syntax-compatibility"></a>
|
|
<a name="index-syntax-compatibility_002c-x86_002d64"></a>
|
|
|
|
<p><code>as</code> now supports assembly using Intel assembler syntax.
|
|
<code>.intel_syntax</code> selects Intel mode, and <code>.att_syntax</code> switches
|
|
back to the usual AT&T mode for compatibility with the output of
|
|
<code>gcc</code>. Either of these directives may have an optional
|
|
argument, <code>prefix</code>, or <code>noprefix</code> specifying whether registers
|
|
require a ‘<samp>%</samp>’ prefix. AT&T System V/386 assembler syntax is quite
|
|
different from Intel syntax. We mention these differences because
|
|
almost all 80386 documents use Intel syntax. Notable differences
|
|
between the two syntaxes are:
|
|
</p>
|
|
<a name="index-immediate-operands_002c-i386"></a>
|
|
<a name="index-i386-immediate-operands"></a>
|
|
<a name="index-register-operands_002c-i386"></a>
|
|
<a name="index-i386-register-operands"></a>
|
|
<a name="index-jump_002fcall-operands_002c-i386"></a>
|
|
<a name="index-i386-jump_002fcall-operands"></a>
|
|
<a name="index-operand-delimiters_002c-i386"></a>
|
|
|
|
<a name="index-immediate-operands_002c-x86_002d64"></a>
|
|
<a name="index-x86_002d64-immediate-operands"></a>
|
|
<a name="index-register-operands_002c-x86_002d64"></a>
|
|
<a name="index-x86_002d64-register-operands"></a>
|
|
<a name="index-jump_002fcall-operands_002c-x86_002d64"></a>
|
|
<a name="index-x86_002d64-jump_002fcall-operands"></a>
|
|
<a name="index-operand-delimiters_002c-x86_002d64"></a>
|
|
<ul>
|
|
<li> AT&T immediate operands are preceded by ‘<samp>$</samp>’; Intel immediate
|
|
operands are undelimited (Intel ‘<samp>push 4</samp>’ is AT&T ‘<samp>pushl $4</samp>’).
|
|
AT&T register operands are preceded by ‘<samp>%</samp>’; Intel register operands
|
|
are undelimited. AT&T absolute (as opposed to PC relative) jump/call
|
|
operands are prefixed by ‘<samp>*</samp>’; they are undelimited in Intel syntax.
|
|
|
|
</li><li> <a name="index-i386-source_002c-destination-operands"></a>
|
|
<a name="index-source_002c-destination-operands_003b-i386"></a>
|
|
<a name="index-x86_002d64-source_002c-destination-operands"></a>
|
|
<a name="index-source_002c-destination-operands_003b-x86_002d64"></a>
|
|
AT&T and Intel syntax use the opposite order for source and destination
|
|
operands. Intel ‘<samp>add eax, 4</samp>’ is ‘<samp>addl $4, %eax</samp>’. The
|
|
‘<samp>source, dest</samp>’ convention is maintained for compatibility with
|
|
previous Unix assemblers. Note that ‘<samp>bound</samp>’, ‘<samp>invlpga</samp>’, and
|
|
instructions with 2 immediate operands, such as the ‘<samp>enter</samp>’
|
|
instruction, do <em>not</em> have reversed order. <a href="#i386_002dBugs">i386-Bugs</a>.
|
|
|
|
</li><li> <a name="index-mnemonic-suffixes_002c-i386"></a>
|
|
<a name="index-sizes-operands_002c-i386"></a>
|
|
<a name="index-i386-size-suffixes"></a>
|
|
<a name="index-mnemonic-suffixes_002c-x86_002d64"></a>
|
|
<a name="index-sizes-operands_002c-x86_002d64"></a>
|
|
<a name="index-x86_002d64-size-suffixes"></a>
|
|
In AT&T syntax the size of memory operands is determined from the last
|
|
character of the instruction mnemonic. Mnemonic suffixes of ‘<samp>b</samp>’,
|
|
‘<samp>w</samp>’, ‘<samp>l</samp>’ and ‘<samp>q</samp>’ specify byte (8-bit), word (16-bit), long
|
|
(32-bit) and quadruple word (64-bit) memory references. Mnemonic suffixes
|
|
of ‘<samp>x</samp>’, ‘<samp>y</samp>’ and ‘<samp>z</samp>’ specify xmm (128-bit vector), ymm
|
|
(256-bit vector) and zmm (512-bit vector) memory references, only when there’s
|
|
no other way to disambiguate an instruction. Intel syntax accomplishes this by
|
|
prefixing memory operands (<em>not</em> the instruction mnemonics) with
|
|
‘<samp>byte ptr</samp>’, ‘<samp>word ptr</samp>’, ‘<samp>dword ptr</samp>’, ‘<samp>qword ptr</samp>’,
|
|
‘<samp>xmmword ptr</samp>’, ‘<samp>ymmword ptr</samp>’ and ‘<samp>zmmword ptr</samp>’. Thus, Intel
|
|
syntax ‘<samp>mov al, byte ptr <var>foo</var></samp>’ is ‘<samp>movb <var>foo</var>, %al</samp>’ in AT&T
|
|
syntax. In Intel syntax, ‘<samp>fword ptr</samp>’, ‘<samp>tbyte ptr</samp>’ and
|
|
‘<samp>oword ptr</samp>’ specify 48-bit, 80-bit and 128-bit memory references.
|
|
|
|
<p>In 64-bit code, ‘<samp>movabs</samp>’ can be used to encode the ‘<samp>mov</samp>’
|
|
instruction with the 64-bit displacement or immediate operand.
|
|
</p>
|
|
</li><li> <a name="index-return-instructions_002c-i386"></a>
|
|
<a name="index-i386-jump_002c-call_002c-return"></a>
|
|
<a name="index-return-instructions_002c-x86_002d64"></a>
|
|
<a name="index-x86_002d64-jump_002c-call_002c-return"></a>
|
|
Immediate form long jumps and calls are
|
|
‘<samp>lcall/ljmp $<var>section</var>, $<var>offset</var></samp>’ in AT&T syntax; the
|
|
Intel syntax is
|
|
‘<samp>call/jmp far <var>section</var>:<var>offset</var></samp>’. Also, the far return
|
|
instruction
|
|
is ‘<samp>lret $<var>stack-adjust</var></samp>’ in AT&T syntax; Intel syntax is
|
|
‘<samp>ret far <var>stack-adjust</var></samp>’.
|
|
|
|
</li><li> <a name="index-sections_002c-i386"></a>
|
|
<a name="index-i386-sections"></a>
|
|
<a name="index-sections_002c-x86_002d64"></a>
|
|
<a name="index-x86_002d64-sections"></a>
|
|
The AT&T assembler does not provide support for multiple section
|
|
programs. Unix style systems expect all programs to be single sections.
|
|
</li></ul>
|
|
|
|
<hr>
|
|
<a name="i386_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#i386_002dVariations" accesskey="p" rel="previous">i386-Variations</a>, Up: <a href="#i386_002dSyntax" accesskey="u" rel="up">i386-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-12"></a>
|
|
<h4 class="subsubsection">9.16.3.2 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-i386"></a>
|
|
<a name="index-i386-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>#</samp>’ appearing anywhere on a line indicates the
|
|
start of a comment that extends to the end of that line.
|
|
</p>
|
|
<p>If a ‘<samp>#</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 (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<p>If the <samp>--divide</samp> command-line option has not been specified
|
|
then the ‘<samp>/</samp>’ character appearing anywhere on a line also
|
|
introduces a line comment.
|
|
</p>
|
|
<a name="index-line-separator_002c-i386"></a>
|
|
<a name="index-statement-separator_002c-i386"></a>
|
|
<a name="index-i386-line-separator"></a>
|
|
<p>The ‘<samp>;</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
<hr>
|
|
<a name="i386_002dMnemonics"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dRegs" accesskey="n" rel="next">i386-Regs</a>, Previous: <a href="#i386_002dSyntax" accesskey="p" rel="previous">i386-Syntax</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="i386_002dMnemonics-1"></a>
|
|
<h4 class="subsection">9.16.4 i386-Mnemonics</h4>
|
|
<a name="Instruction-Naming"></a>
|
|
<h4 class="subsubsection">9.16.4.1 Instruction Naming</h4>
|
|
|
|
<a name="index-i386-instruction-naming"></a>
|
|
<a name="index-instruction-naming_002c-i386"></a>
|
|
<a name="index-x86_002d64-instruction-naming"></a>
|
|
<a name="index-instruction-naming_002c-x86_002d64"></a>
|
|
|
|
<p>Instruction mnemonics are suffixed with one character modifiers which
|
|
specify the size of operands. The letters ‘<samp>b</samp>’, ‘<samp>w</samp>’, ‘<samp>l</samp>’
|
|
and ‘<samp>q</samp>’ specify byte, word, long and quadruple word operands. If
|
|
no suffix is specified by an instruction then <code>as</code> tries to
|
|
fill in the missing suffix based on the destination register operand
|
|
(the last one by convention). Thus, ‘<samp>mov %ax, %bx</samp>’ is equivalent
|
|
to ‘<samp>movw %ax, %bx</samp>’; also, ‘<samp>mov $1, %bx</samp>’ is equivalent to
|
|
‘<samp>movw $1, bx</samp>’. Note that this is incompatible with the AT&T Unix
|
|
assembler which assumes that a missing mnemonic suffix implies long
|
|
operand size. (This incompatibility does not affect compiler output
|
|
since compilers always explicitly specify the mnemonic suffix.)
|
|
</p>
|
|
<p>When there is no sizing suffix and no (suitable) register operands to
|
|
deduce the size of memory operands, with a few exceptions and where long
|
|
operand size is possible in the first place, operand size will default
|
|
to long in 32- and 64-bit modes. Similarly it will default to short in
|
|
16-bit mode. Noteworthy exceptions are
|
|
</p>
|
|
<ul>
|
|
<li> Instructions with an implicit on-stack operand as well as branches,
|
|
which default to quad in 64-bit mode.
|
|
|
|
</li><li> Sign- and zero-extending moves, which default to byte size source
|
|
operands.
|
|
|
|
</li><li> Floating point insns with integer operands, which default to short (for
|
|
perhaps historical reasons).
|
|
|
|
</li><li> CRC32 with a 64-bit destination, which defaults to a quad source
|
|
operand.
|
|
|
|
</li></ul>
|
|
|
|
<a name="index-encoding-options_002c-i386"></a>
|
|
<a name="index-encoding-options_002c-x86_002d64"></a>
|
|
|
|
<p>Different encoding options can be specified via pseudo prefixes:
|
|
</p>
|
|
<ul>
|
|
<li> ‘<samp>{disp8}</samp>’ – prefer 8-bit displacement.
|
|
|
|
</li><li> ‘<samp>{disp32}</samp>’ – prefer 32-bit displacement.
|
|
|
|
</li><li> ‘<samp>{disp16}</samp>’ – prefer 16-bit displacement.
|
|
|
|
</li><li> ‘<samp>{load}</samp>’ – prefer load-form instruction.
|
|
|
|
</li><li> ‘<samp>{store}</samp>’ – prefer store-form instruction.
|
|
|
|
</li><li> ‘<samp>{vex}</samp>’ – encode with VEX prefix.
|
|
|
|
</li><li> ‘<samp>{vex3}</samp>’ – encode with 3-byte VEX prefix.
|
|
|
|
</li><li> ‘<samp>{evex}</samp>’ – encode with EVEX prefix.
|
|
|
|
</li><li> ‘<samp>{rex}</samp>’ – prefer REX prefix for integer and legacy vector
|
|
instructions (x86-64 only). Note that this differs from the ‘<samp>rex</samp>’
|
|
prefix which generates REX prefix unconditionally.
|
|
|
|
</li><li> ‘<samp>{nooptimize}</samp>’ – disable instruction size optimization.
|
|
</li></ul>
|
|
|
|
<p>Mnemonics of Intel VNNI instructions are encoded with the EVEX prefix
|
|
by default. The pseudo ‘<samp>{vex}</samp>’ prefix can be used to encode
|
|
mnemonics of Intel VNNI instructions with the VEX prefix.
|
|
</p>
|
|
<a name="index-conversion-instructions_002c-i386"></a>
|
|
<a name="index-i386-conversion-instructions"></a>
|
|
<a name="index-conversion-instructions_002c-x86_002d64"></a>
|
|
<a name="index-x86_002d64-conversion-instructions"></a>
|
|
<p>The Intel-syntax conversion instructions
|
|
</p>
|
|
<ul>
|
|
<li> ‘<samp>cbw</samp>’ — sign-extend byte in ‘<samp>%al</samp>’ to word in ‘<samp>%ax</samp>’,
|
|
|
|
</li><li> ‘<samp>cwde</samp>’ — sign-extend word in ‘<samp>%ax</samp>’ to long in ‘<samp>%eax</samp>’,
|
|
|
|
</li><li> ‘<samp>cwd</samp>’ — sign-extend word in ‘<samp>%ax</samp>’ to long in ‘<samp>%dx:%ax</samp>’,
|
|
|
|
</li><li> ‘<samp>cdq</samp>’ — sign-extend dword in ‘<samp>%eax</samp>’ to quad in ‘<samp>%edx:%eax</samp>’,
|
|
|
|
</li><li> ‘<samp>cdqe</samp>’ — sign-extend dword in ‘<samp>%eax</samp>’ to quad in ‘<samp>%rax</samp>’
|
|
(x86-64 only),
|
|
|
|
</li><li> ‘<samp>cqo</samp>’ — sign-extend quad in ‘<samp>%rax</samp>’ to octuple in
|
|
‘<samp>%rdx:%rax</samp>’ (x86-64 only),
|
|
</li></ul>
|
|
|
|
<p>are called ‘<samp>cbtw</samp>’, ‘<samp>cwtl</samp>’, ‘<samp>cwtd</samp>’, ‘<samp>cltd</samp>’, ‘<samp>cltq</samp>’, and
|
|
‘<samp>cqto</samp>’ in AT&T naming. <code>as</code> accepts either naming for these
|
|
instructions.
|
|
</p>
|
|
<a name="index-extension-instructions_002c-i386"></a>
|
|
<a name="index-i386-extension-instructions"></a>
|
|
<a name="index-extension-instructions_002c-x86_002d64"></a>
|
|
<a name="index-x86_002d64-extension-instructions"></a>
|
|
<p>The Intel-syntax extension instructions
|
|
</p>
|
|
<ul>
|
|
<li> ‘<samp>movsx</samp>’ — sign-extend ‘<samp>reg8/mem8</samp>’ to ‘<samp>reg16</samp>’.
|
|
|
|
</li><li> ‘<samp>movsx</samp>’ — sign-extend ‘<samp>reg8/mem8</samp>’ to ‘<samp>reg32</samp>’.
|
|
|
|
</li><li> ‘<samp>movsx</samp>’ — sign-extend ‘<samp>reg8/mem8</samp>’ to ‘<samp>reg64</samp>’
|
|
(x86-64 only).
|
|
|
|
</li><li> ‘<samp>movsx</samp>’ — sign-extend ‘<samp>reg16/mem16</samp>’ to ‘<samp>reg32</samp>’
|
|
|
|
</li><li> ‘<samp>movsx</samp>’ — sign-extend ‘<samp>reg16/mem16</samp>’ to ‘<samp>reg64</samp>’
|
|
(x86-64 only).
|
|
|
|
</li><li> ‘<samp>movsxd</samp>’ — sign-extend ‘<samp>reg32/mem32</samp>’ to ‘<samp>reg64</samp>’
|
|
(x86-64 only).
|
|
|
|
</li><li> ‘<samp>movzx</samp>’ — zero-extend ‘<samp>reg8/mem8</samp>’ to ‘<samp>reg16</samp>’.
|
|
|
|
</li><li> ‘<samp>movzx</samp>’ — zero-extend ‘<samp>reg8/mem8</samp>’ to ‘<samp>reg32</samp>’.
|
|
|
|
</li><li> ‘<samp>movzx</samp>’ — zero-extend ‘<samp>reg8/mem8</samp>’ to ‘<samp>reg64</samp>’
|
|
(x86-64 only).
|
|
|
|
</li><li> ‘<samp>movzx</samp>’ — zero-extend ‘<samp>reg16/mem16</samp>’ to ‘<samp>reg32</samp>’
|
|
|
|
</li><li> ‘<samp>movzx</samp>’ — zero-extend ‘<samp>reg16/mem16</samp>’ to ‘<samp>reg64</samp>’
|
|
(x86-64 only).
|
|
</li></ul>
|
|
|
|
<p>are called ‘<samp>movsbw/movsxb/movsx</samp>’, ‘<samp>movsbl/movsxb/movsx</samp>’,
|
|
‘<samp>movsbq/movsxb/movsx</samp>’, ‘<samp>movswl/movsxw</samp>’, ‘<samp>movswq/movsxw</samp>’,
|
|
‘<samp>movslq/movsxl</samp>’, ‘<samp>movzbw/movzxb/movzx</samp>’,
|
|
‘<samp>movzbl/movzxb/movzx</samp>’, ‘<samp>movzbq/movzxb/movzx</samp>’,
|
|
‘<samp>movzwl/movzxw</samp>’ and ‘<samp>movzwq/movzxw</samp>’ in AT&T syntax.
|
|
</p>
|
|
<a name="index-jump-instructions_002c-i386"></a>
|
|
<a name="index-call-instructions_002c-i386"></a>
|
|
<a name="index-jump-instructions_002c-x86_002d64"></a>
|
|
<a name="index-call-instructions_002c-x86_002d64"></a>
|
|
<p>Far call/jump instructions are ‘<samp>lcall</samp>’ and ‘<samp>ljmp</samp>’ in
|
|
AT&T syntax, but are ‘<samp>call far</samp>’ and ‘<samp>jump far</samp>’ in Intel
|
|
convention.
|
|
</p>
|
|
<a name="AT_0026T-Mnemonic-versus-Intel-Mnemonic"></a>
|
|
<h4 class="subsubsection">9.16.4.2 AT&T Mnemonic versus Intel Mnemonic</h4>
|
|
|
|
<a name="index-i386-mnemonic-compatibility"></a>
|
|
<a name="index-mnemonic-compatibility_002c-i386"></a>
|
|
|
|
<p><code>as</code> supports assembly using Intel mnemonic.
|
|
<code>.intel_mnemonic</code> selects Intel mnemonic with Intel syntax, and
|
|
<code>.att_mnemonic</code> switches back to the usual AT&T mnemonic with AT&T
|
|
syntax for compatibility with the output of <code>gcc</code>.
|
|
Several x87 instructions, ‘<samp>fadd</samp>’, ‘<samp>fdiv</samp>’, ‘<samp>fdivp</samp>’,
|
|
‘<samp>fdivr</samp>’, ‘<samp>fdivrp</samp>’, ‘<samp>fmul</samp>’, ‘<samp>fsub</samp>’, ‘<samp>fsubp</samp>’,
|
|
‘<samp>fsubr</samp>’ and ‘<samp>fsubrp</samp>’, are implemented in AT&T System V/386
|
|
assembler with different mnemonics from those in Intel IA32 specification.
|
|
<code>gcc</code> generates those instructions with AT&T mnemonic.
|
|
</p>
|
|
<ul>
|
|
<li> ‘<samp>movslq</samp>’ with AT&T mnemonic only accepts 64-bit destination
|
|
register. ‘<samp>movsxd</samp>’ should be used to encode 16-bit or 32-bit
|
|
destination register with both AT&T and Intel mnemonics.
|
|
</li></ul>
|
|
|
|
<hr>
|
|
<a name="i386_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dPrefixes" accesskey="n" rel="next">i386-Prefixes</a>, Previous: <a href="#i386_002dMnemonics" accesskey="p" rel="previous">i386-Mnemonics</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Naming"></a>
|
|
<h4 class="subsection">9.16.5 Register Naming</h4>
|
|
|
|
<a name="index-i386-registers"></a>
|
|
<a name="index-registers_002c-i386"></a>
|
|
<a name="index-x86_002d64-registers"></a>
|
|
<a name="index-registers_002c-x86_002d64"></a>
|
|
<p>Register operands are always prefixed with ‘<samp>%</samp>’. The 80386 registers
|
|
consist of
|
|
</p>
|
|
<ul>
|
|
<li> the 8 32-bit registers ‘<samp>%eax</samp>’ (the accumulator), ‘<samp>%ebx</samp>’,
|
|
‘<samp>%ecx</samp>’, ‘<samp>%edx</samp>’, ‘<samp>%edi</samp>’, ‘<samp>%esi</samp>’, ‘<samp>%ebp</samp>’ (the
|
|
frame pointer), and ‘<samp>%esp</samp>’ (the stack pointer).
|
|
|
|
</li><li> the 8 16-bit low-ends of these: ‘<samp>%ax</samp>’, ‘<samp>%bx</samp>’, ‘<samp>%cx</samp>’,
|
|
‘<samp>%dx</samp>’, ‘<samp>%di</samp>’, ‘<samp>%si</samp>’, ‘<samp>%bp</samp>’, and ‘<samp>%sp</samp>’.
|
|
|
|
</li><li> the 8 8-bit registers: ‘<samp>%ah</samp>’, ‘<samp>%al</samp>’, ‘<samp>%bh</samp>’,
|
|
‘<samp>%bl</samp>’, ‘<samp>%ch</samp>’, ‘<samp>%cl</samp>’, ‘<samp>%dh</samp>’, and ‘<samp>%dl</samp>’ (These
|
|
are the high-bytes and low-bytes of ‘<samp>%ax</samp>’, ‘<samp>%bx</samp>’,
|
|
‘<samp>%cx</samp>’, and ‘<samp>%dx</samp>’)
|
|
|
|
</li><li> the 6 section registers ‘<samp>%cs</samp>’ (code section), ‘<samp>%ds</samp>’
|
|
(data section), ‘<samp>%ss</samp>’ (stack section), ‘<samp>%es</samp>’, ‘<samp>%fs</samp>’,
|
|
and ‘<samp>%gs</samp>’.
|
|
|
|
</li><li> the 5 processor control registers ‘<samp>%cr0</samp>’, ‘<samp>%cr2</samp>’,
|
|
‘<samp>%cr3</samp>’, ‘<samp>%cr4</samp>’, and ‘<samp>%cr8</samp>’.
|
|
|
|
</li><li> the 6 debug registers ‘<samp>%db0</samp>’, ‘<samp>%db1</samp>’, ‘<samp>%db2</samp>’,
|
|
‘<samp>%db3</samp>’, ‘<samp>%db6</samp>’, and ‘<samp>%db7</samp>’.
|
|
|
|
</li><li> the 2 test registers ‘<samp>%tr6</samp>’ and ‘<samp>%tr7</samp>’.
|
|
|
|
</li><li> the 8 floating point register stack ‘<samp>%st</samp>’ or equivalently
|
|
‘<samp>%st(0)</samp>’, ‘<samp>%st(1)</samp>’, ‘<samp>%st(2)</samp>’, ‘<samp>%st(3)</samp>’,
|
|
‘<samp>%st(4)</samp>’, ‘<samp>%st(5)</samp>’, ‘<samp>%st(6)</samp>’, and ‘<samp>%st(7)</samp>’.
|
|
These registers are overloaded by 8 MMX registers ‘<samp>%mm0</samp>’,
|
|
‘<samp>%mm1</samp>’, ‘<samp>%mm2</samp>’, ‘<samp>%mm3</samp>’, ‘<samp>%mm4</samp>’, ‘<samp>%mm5</samp>’,
|
|
‘<samp>%mm6</samp>’ and ‘<samp>%mm7</samp>’.
|
|
|
|
</li><li> the 8 128-bit SSE registers registers ‘<samp>%xmm0</samp>’, ‘<samp>%xmm1</samp>’, ‘<samp>%xmm2</samp>’,
|
|
‘<samp>%xmm3</samp>’, ‘<samp>%xmm4</samp>’, ‘<samp>%xmm5</samp>’, ‘<samp>%xmm6</samp>’ and ‘<samp>%xmm7</samp>’.
|
|
</li></ul>
|
|
|
|
<p>The AMD x86-64 architecture extends the register set by:
|
|
</p>
|
|
<ul>
|
|
<li> enhancing the 8 32-bit registers to 64-bit: ‘<samp>%rax</samp>’ (the
|
|
accumulator), ‘<samp>%rbx</samp>’, ‘<samp>%rcx</samp>’, ‘<samp>%rdx</samp>’, ‘<samp>%rdi</samp>’,
|
|
‘<samp>%rsi</samp>’, ‘<samp>%rbp</samp>’ (the frame pointer), ‘<samp>%rsp</samp>’ (the stack
|
|
pointer)
|
|
|
|
</li><li> the 8 extended registers ‘<samp>%r8</samp>’–‘<samp>%r15</samp>’.
|
|
|
|
</li><li> the 8 32-bit low ends of the extended registers: ‘<samp>%r8d</samp>’–‘<samp>%r15d</samp>’.
|
|
|
|
</li><li> the 8 16-bit low ends of the extended registers: ‘<samp>%r8w</samp>’–‘<samp>%r15w</samp>’.
|
|
|
|
</li><li> the 8 8-bit low ends of the extended registers: ‘<samp>%r8b</samp>’–‘<samp>%r15b</samp>’.
|
|
|
|
</li><li> the 4 8-bit registers: ‘<samp>%sil</samp>’, ‘<samp>%dil</samp>’, ‘<samp>%bpl</samp>’, ‘<samp>%spl</samp>’.
|
|
|
|
</li><li> the 8 debug registers: ‘<samp>%db8</samp>’–‘<samp>%db15</samp>’.
|
|
|
|
</li><li> the 8 128-bit SSE registers: ‘<samp>%xmm8</samp>’–‘<samp>%xmm15</samp>’.
|
|
</li></ul>
|
|
|
|
<p>With the AVX extensions more registers were made available:
|
|
</p>
|
|
<ul>
|
|
<li> the 16 256-bit SSE ‘<samp>%ymm0</samp>’–‘<samp>%ymm15</samp>’ (only the first 8
|
|
available in 32-bit mode). The bottom 128 bits are overlaid with the
|
|
‘<samp>xmm0</samp>’–‘<samp>xmm15</samp>’ registers.
|
|
|
|
</li></ul>
|
|
|
|
<p>The AVX512 extensions added the following registers:
|
|
</p>
|
|
<ul>
|
|
<li> the 32 512-bit registers ‘<samp>%zmm0</samp>’–‘<samp>%zmm31</samp>’ (only the first 8
|
|
available in 32-bit mode). The bottom 128 bits are overlaid with the
|
|
‘<samp>%xmm0</samp>’–‘<samp>%xmm31</samp>’ registers and the first 256 bits are
|
|
overlaid with the ‘<samp>%ymm0</samp>’–‘<samp>%ymm31</samp>’ registers.
|
|
|
|
</li><li> the 8 mask registers ‘<samp>%k0</samp>’–‘<samp>%k7</samp>’.
|
|
|
|
</li></ul>
|
|
|
|
<hr>
|
|
<a name="i386_002dPrefixes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dMemory" accesskey="n" rel="next">i386-Memory</a>, Previous: <a href="#i386_002dRegs" accesskey="p" rel="previous">i386-Regs</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Instruction-Prefixes"></a>
|
|
<h4 class="subsection">9.16.6 Instruction Prefixes</h4>
|
|
|
|
<a name="index-i386-instruction-prefixes"></a>
|
|
<a name="index-instruction-prefixes_002c-i386"></a>
|
|
<a name="index-prefixes_002c-i386"></a>
|
|
<p>Instruction prefixes are used to modify the following instruction. They
|
|
are used to repeat string instructions, to provide section overrides, to
|
|
perform bus lock operations, and to change operand and address sizes.
|
|
(Most instructions that normally operate on 32-bit operands will use
|
|
16-bit operands if the instruction has an “operand size” prefix.)
|
|
Instruction prefixes are best written on the same line as the instruction
|
|
they act upon. For example, the ‘<samp>scas</samp>’ (scan string) instruction is
|
|
repeated with:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> repne scas %es:(%edi),%al
|
|
</pre></div>
|
|
|
|
<p>You may also place prefixes on the lines immediately preceding the
|
|
instruction, but this circumvents checks that <code>as</code> does
|
|
with prefixes, and will not work with all prefixes.
|
|
</p>
|
|
<p>Here is a list of instruction prefixes:
|
|
</p>
|
|
<a name="index-section-override-prefixes_002c-i386"></a>
|
|
<ul>
|
|
<li> Section override prefixes ‘<samp>cs</samp>’, ‘<samp>ds</samp>’, ‘<samp>ss</samp>’, ‘<samp>es</samp>’,
|
|
‘<samp>fs</samp>’, ‘<samp>gs</samp>’. These are automatically added by specifying
|
|
using the <var>section</var>:<var>memory-operand</var> form for memory references.
|
|
|
|
</li><li> <a name="index-size-prefixes_002c-i386"></a>
|
|
Operand/Address size prefixes ‘<samp>data16</samp>’ and ‘<samp>addr16</samp>’
|
|
change 32-bit operands/addresses into 16-bit operands/addresses,
|
|
while ‘<samp>data32</samp>’ and ‘<samp>addr32</samp>’ change 16-bit ones (in a
|
|
<code>.code16</code> section) into 32-bit operands/addresses. These prefixes
|
|
<em>must</em> appear on the same line of code as the instruction they
|
|
modify. For example, in a 16-bit <code>.code16</code> section, you might
|
|
write:
|
|
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> addr32 jmpl *(%ebx)
|
|
</pre></div>
|
|
|
|
</li><li> <a name="index-bus-lock-prefixes_002c-i386"></a>
|
|
<a name="index-inhibiting-interrupts_002c-i386"></a>
|
|
The bus lock prefix ‘<samp>lock</samp>’ inhibits interrupts during execution of
|
|
the instruction it precedes. (This is only valid with certain
|
|
instructions; see a 80386 manual for details).
|
|
|
|
</li><li> <a name="index-coprocessor-wait_002c-i386"></a>
|
|
The wait for coprocessor prefix ‘<samp>wait</samp>’ waits for the coprocessor to
|
|
complete the current instruction. This should never be needed for the
|
|
80386/80387 combination.
|
|
|
|
</li><li> <a name="index-repeat-prefixes_002c-i386"></a>
|
|
The ‘<samp>rep</samp>’, ‘<samp>repe</samp>’, and ‘<samp>repne</samp>’ prefixes are added
|
|
to string instructions to make them repeat ‘<samp>%ecx</samp>’ times (‘<samp>%cx</samp>’
|
|
times if the current address size is 16-bits).
|
|
</li><li> <a name="index-REX-prefixes_002c-i386"></a>
|
|
The ‘<samp>rex</samp>’ family of prefixes is used by x86-64 to encode
|
|
extensions to i386 instruction set. The ‘<samp>rex</samp>’ prefix has four
|
|
bits — an operand size overwrite (<code>64</code>) used to change operand size
|
|
from 32-bit to 64-bit and X, Y and Z extensions bits used to extend the
|
|
register set.
|
|
|
|
<p>You may write the ‘<samp>rex</samp>’ prefixes directly. The ‘<samp>rex64xyz</samp>’
|
|
instruction emits ‘<samp>rex</samp>’ prefix with all the bits set. By omitting
|
|
the <code>64</code>, <code>x</code>, <code>y</code> or <code>z</code> you may write other
|
|
prefixes as well. Normally, there is no need to write the prefixes
|
|
explicitly, since gas will automatically generate them based on the
|
|
instruction operands.
|
|
</p></li></ul>
|
|
|
|
<hr>
|
|
<a name="i386_002dMemory"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dJumps" accesskey="n" rel="next">i386-Jumps</a>, Previous: <a href="#i386_002dPrefixes" accesskey="p" rel="previous">i386-Prefixes</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Memory-References"></a>
|
|
<h4 class="subsection">9.16.7 Memory References</h4>
|
|
|
|
<a name="index-i386-memory-references"></a>
|
|
<a name="index-memory-references_002c-i386"></a>
|
|
<a name="index-x86_002d64-memory-references"></a>
|
|
<a name="index-memory-references_002c-x86_002d64"></a>
|
|
<p>An Intel syntax indirect memory reference of the form
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><var>section</var>:[<var>base</var> + <var>index</var>*<var>scale</var> + <var>disp</var>]
|
|
</pre></div>
|
|
|
|
<p>is translated into the AT&T syntax
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><var>section</var>:<var>disp</var>(<var>base</var>, <var>index</var>, <var>scale</var>)
|
|
</pre></div>
|
|
|
|
<p>where <var>base</var> and <var>index</var> are the optional 32-bit base and
|
|
index registers, <var>disp</var> is the optional displacement, and
|
|
<var>scale</var>, taking the values 1, 2, 4, and 8, multiplies <var>index</var>
|
|
to calculate the address of the operand. If no <var>scale</var> is
|
|
specified, <var>scale</var> is taken to be 1. <var>section</var> specifies the
|
|
optional section register for the memory operand, and may override the
|
|
default section register (see a 80386 manual for section register
|
|
defaults). Note that section overrides in AT&T syntax <em>must</em>
|
|
be preceded by a ‘<samp>%</samp>’. If you specify a section override which
|
|
coincides with the default section register, <code>as</code> does <em>not</em>
|
|
output any section register override prefixes to assemble the given
|
|
instruction. Thus, section overrides can be specified to emphasize which
|
|
section register is used for a given memory operand.
|
|
</p>
|
|
<p>Here are some examples of Intel and AT&T style memory references:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt>AT&T: ‘<samp>-4(%ebp)</samp>’, Intel: ‘<samp>[ebp - 4]</samp>’</dt>
|
|
<dd><p><var>base</var> is ‘<samp>%ebp</samp>’; <var>disp</var> is ‘<samp>-4</samp>’. <var>section</var> is
|
|
missing, and the default section is used (‘<samp>%ss</samp>’ for addressing with
|
|
‘<samp>%ebp</samp>’ as the base register). <var>index</var>, <var>scale</var> are both missing.
|
|
</p>
|
|
</dd>
|
|
<dt>AT&T: ‘<samp>foo(,%eax,4)</samp>’, Intel: ‘<samp>[foo + eax*4]</samp>’</dt>
|
|
<dd><p><var>index</var> is ‘<samp>%eax</samp>’ (scaled by a <var>scale</var> 4); <var>disp</var> is
|
|
‘<samp>foo</samp>’. All other fields are missing. The section register here
|
|
defaults to ‘<samp>%ds</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt>AT&T: ‘<samp>foo(,1)</samp>’; Intel ‘<samp>[foo]</samp>’</dt>
|
|
<dd><p>This uses the value pointed to by ‘<samp>foo</samp>’ as a memory operand.
|
|
Note that <var>base</var> and <var>index</var> are both missing, but there is only
|
|
<em>one</em> ‘<samp>,</samp>’. This is a syntactic exception.
|
|
</p>
|
|
</dd>
|
|
<dt>AT&T: ‘<samp>%gs:foo</samp>’; Intel ‘<samp>gs:foo</samp>’</dt>
|
|
<dd><p>This selects the contents of the variable ‘<samp>foo</samp>’ with section
|
|
register <var>section</var> being ‘<samp>%gs</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Absolute (as opposed to PC relative) call and jump operands must be
|
|
prefixed with ‘<samp>*</samp>’. If no ‘<samp>*</samp>’ is specified, <code>as</code>
|
|
always chooses PC relative addressing for jump/call labels.
|
|
</p>
|
|
<p>Any instruction that has a memory operand, but no register operand,
|
|
<em>must</em> specify its size (byte, word, long, or quadruple) with an
|
|
instruction mnemonic suffix (‘<samp>b</samp>’, ‘<samp>w</samp>’, ‘<samp>l</samp>’ or ‘<samp>q</samp>’,
|
|
respectively).
|
|
</p>
|
|
<p>The x86-64 architecture adds an RIP (instruction pointer relative)
|
|
addressing. This addressing mode is specified by using ‘<samp>rip</samp>’ as a
|
|
base register. Only constant offsets are valid. For example:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt>AT&T: ‘<samp>1234(%rip)</samp>’, Intel: ‘<samp>[rip + 1234]</samp>’</dt>
|
|
<dd><p>Points to the address 1234 bytes past the end of the current
|
|
instruction.
|
|
</p>
|
|
</dd>
|
|
<dt>AT&T: ‘<samp>symbol(%rip)</samp>’, Intel: ‘<samp>[rip + symbol]</samp>’</dt>
|
|
<dd><p>Points to the <code>symbol</code> in RIP relative way, this is shorter than
|
|
the default absolute addressing.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Other addressing modes remain unchanged in x86-64 architecture, except
|
|
registers used are 64-bit instead of 32-bit.
|
|
</p>
|
|
<hr>
|
|
<a name="i386_002dJumps"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dFloat" accesskey="n" rel="next">i386-Float</a>, Previous: <a href="#i386_002dMemory" accesskey="p" rel="previous">i386-Memory</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Handling-of-Jump-Instructions"></a>
|
|
<h4 class="subsection">9.16.8 Handling of Jump Instructions</h4>
|
|
|
|
<a name="index-jump-optimization_002c-i386"></a>
|
|
<a name="index-i386-jump-optimization"></a>
|
|
<a name="index-jump-optimization_002c-x86_002d64"></a>
|
|
<a name="index-x86_002d64-jump-optimization"></a>
|
|
<p>Jump instructions are always optimized to use the smallest possible
|
|
displacements. This is accomplished by using byte (8-bit) displacement
|
|
jumps whenever the target is sufficiently close. If a byte displacement
|
|
is insufficient a long displacement is used. We do not support
|
|
word (16-bit) displacement jumps in 32-bit mode (i.e. prefixing the jump
|
|
instruction with the ‘<samp>data16</samp>’ instruction prefix), since the 80386
|
|
insists upon masking ‘<samp>%eip</samp>’ to 16 bits after the word displacement
|
|
is added. (See also see <a href="#i386_002dArch">i386-Arch</a>)
|
|
</p>
|
|
<p>Note that the ‘<samp>jcxz</samp>’, ‘<samp>jecxz</samp>’, ‘<samp>loop</samp>’, ‘<samp>loopz</samp>’,
|
|
‘<samp>loope</samp>’, ‘<samp>loopnz</samp>’ and ‘<samp>loopne</samp>’ instructions only come in byte
|
|
displacements, so that if you use these instructions (<code>gcc</code> does
|
|
not use them) you may get an error message (and incorrect code). The AT&T
|
|
80386 assembler tries to get around this problem by expanding ‘<samp>jcxz foo</samp>’
|
|
to
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> jcxz cx_zero
|
|
jmp cx_nonzero
|
|
cx_zero: jmp foo
|
|
cx_nonzero:
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="i386_002dFloat"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dSIMD" accesskey="n" rel="next">i386-SIMD</a>, Previous: <a href="#i386_002dJumps" accesskey="p" rel="previous">i386-Jumps</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-7"></a>
|
|
<h4 class="subsection">9.16.9 Floating Point</h4>
|
|
|
|
<a name="index-i386-floating-point"></a>
|
|
<a name="index-floating-point_002c-i386"></a>
|
|
<a name="index-x86_002d64-floating-point"></a>
|
|
<a name="index-floating-point_002c-x86_002d64"></a>
|
|
<p>All 80387 floating point types except packed BCD are supported.
|
|
(BCD support may be added without much difficulty). These data
|
|
types are 16-, 32-, and 64- bit integers, and single (32-bit),
|
|
double (64-bit), and extended (80-bit) precision floating point.
|
|
Each supported type has an instruction mnemonic suffix and a constructor
|
|
associated with it. Instruction mnemonic suffixes specify the operand’s
|
|
data type. Constructors build these data types into memory.
|
|
</p>
|
|
<a name="index-float-directive_002c-i386"></a>
|
|
<a name="index-single-directive_002c-i386"></a>
|
|
<a name="index-double-directive_002c-i386"></a>
|
|
<a name="index-tfloat-directive_002c-i386"></a>
|
|
<a name="index-hfloat-directive_002c-i386"></a>
|
|
<a name="index-bfloat16-directive_002c-i386"></a>
|
|
<a name="index-float-directive_002c-x86_002d64"></a>
|
|
<a name="index-single-directive_002c-x86_002d64"></a>
|
|
<a name="index-double-directive_002c-x86_002d64"></a>
|
|
<a name="index-tfloat-directive_002c-x86_002d64"></a>
|
|
<a name="index-hfloat-directive_002c-x86_002d64"></a>
|
|
<a name="index-bfloat16-directive_002c-x86_002d64"></a>
|
|
<ul>
|
|
<li> Floating point constructors are ‘<samp>.float</samp>’ or ‘<samp>.single</samp>’,
|
|
‘<samp>.double</samp>’, ‘<samp>.tfloat</samp>’, ‘<samp>.hfloat</samp>’, and ‘<samp>.bfloat16</samp>’ for 32-,
|
|
64-, 80-, and 16-bit (two flavors) formats respectively. The former three
|
|
correspond to instruction mnemonic suffixes ‘<samp>s</samp>’, ‘<samp>l</samp>’, and ‘<samp>t</samp>’.
|
|
‘<samp>t</samp>’ stands for 80-bit (ten byte) real. The 80387 only supports this
|
|
format via the ‘<samp>fldt</samp>’ (load 80-bit real to stack top) and ‘<samp>fstpt</samp>’
|
|
(store 80-bit real and pop stack) instructions.
|
|
|
|
</li><li> <a name="index-word-directive_002c-i386"></a>
|
|
<a name="index-long-directive_002c-i386"></a>
|
|
<a name="index-int-directive_002c-i386"></a>
|
|
<a name="index-quad-directive_002c-i386"></a>
|
|
<a name="index-word-directive_002c-x86_002d64"></a>
|
|
<a name="index-long-directive_002c-x86_002d64"></a>
|
|
<a name="index-int-directive_002c-x86_002d64"></a>
|
|
<a name="index-quad-directive_002c-x86_002d64"></a>
|
|
Integer constructors are ‘<samp>.word</samp>’, ‘<samp>.long</samp>’ or ‘<samp>.int</samp>’, and
|
|
‘<samp>.quad</samp>’ for the 16-, 32-, and 64-bit integer formats. The
|
|
corresponding instruction mnemonic suffixes are ‘<samp>s</samp>’ (short),
|
|
‘<samp>l</samp>’ (long), and ‘<samp>q</samp>’ (quad). As with the 80-bit real format,
|
|
the 64-bit ‘<samp>q</samp>’ format is only present in the ‘<samp>fildq</samp>’ (load
|
|
quad integer to stack top) and ‘<samp>fistpq</samp>’ (store quad integer and pop
|
|
stack) instructions.
|
|
</li></ul>
|
|
|
|
<p>Register to register operations should not use instruction mnemonic suffixes.
|
|
‘<samp>fstl %st, %st(1)</samp>’ will give a warning, and be assembled as if you
|
|
wrote ‘<samp>fst %st, %st(1)</samp>’, since all register to register operations
|
|
use 80-bit floating point operands. (Contrast this with ‘<samp>fstl %st, mem</samp>’,
|
|
which converts ‘<samp>%st</samp>’ from 80-bit to 64-bit floating point format,
|
|
then stores the result in the 4 byte location ‘<samp>mem</samp>’)
|
|
</p>
|
|
<hr>
|
|
<a name="i386_002dSIMD"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dLWP" accesskey="n" rel="next">i386-LWP</a>, Previous: <a href="#i386_002dFloat" accesskey="p" rel="previous">i386-Float</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Intel_0027s-MMX-and-AMD_0027s-3DNow_0021-SIMD-Operations"></a>
|
|
<h4 class="subsection">9.16.10 Intel’s MMX and AMD’s 3DNow! SIMD Operations</h4>
|
|
|
|
<a name="index-MMX_002c-i386"></a>
|
|
<a name="index-3DNow_0021_002c-i386"></a>
|
|
<a name="index-SIMD_002c-i386"></a>
|
|
<a name="index-MMX_002c-x86_002d64"></a>
|
|
<a name="index-3DNow_0021_002c-x86_002d64"></a>
|
|
<a name="index-SIMD_002c-x86_002d64"></a>
|
|
|
|
<p><code>as</code> supports Intel’s MMX instruction set (SIMD
|
|
instructions for integer data), available on Intel’s Pentium MMX
|
|
processors and Pentium II processors, AMD’s K6 and K6-2 processors,
|
|
Cyrix’ M2 processor, and probably others. It also supports AMD’s 3DNow!
|
|
instruction set (SIMD instructions for 32-bit floating point data)
|
|
available on AMD’s K6-2 processor and possibly others in the future.
|
|
</p>
|
|
<p>Currently, <code>as</code> does not support Intel’s floating point
|
|
SIMD, Katmai (KNI).
|
|
</p>
|
|
<p>The eight 64-bit MMX operands, also used by 3DNow!, are called ‘<samp>%mm0</samp>’,
|
|
‘<samp>%mm1</samp>’, ... ‘<samp>%mm7</samp>’. They contain eight 8-bit integers, four
|
|
16-bit integers, two 32-bit integers, one 64-bit integer, or two 32-bit
|
|
floating point values. The MMX registers cannot be used at the same time
|
|
as the floating point stack.
|
|
</p>
|
|
<p>See Intel and AMD documentation, keeping in mind that the operand order in
|
|
instructions is reversed from the Intel syntax.
|
|
</p>
|
|
<hr>
|
|
<a name="i386_002dLWP"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dBMI" accesskey="n" rel="next">i386-BMI</a>, Previous: <a href="#i386_002dSIMD" accesskey="p" rel="previous">i386-SIMD</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="AMD_0027s-Lightweight-Profiling-Instructions"></a>
|
|
<h4 class="subsection">9.16.11 AMD’s Lightweight Profiling Instructions</h4>
|
|
|
|
<a name="index-LWP_002c-i386"></a>
|
|
<a name="index-LWP_002c-x86_002d64"></a>
|
|
|
|
<p><code>as</code> supports AMD’s Lightweight Profiling (LWP)
|
|
instruction set, available on AMD’s Family 15h (Orochi) processors.
|
|
</p>
|
|
<p>LWP enables applications to collect and manage performance data, and
|
|
react to performance events. The collection of performance data
|
|
requires no context switches. LWP runs in the context of a thread and
|
|
so several counters can be used independently across multiple threads.
|
|
LWP can be used in both 64-bit and legacy 32-bit modes.
|
|
</p>
|
|
<p>For detailed information on the LWP instruction set, see the
|
|
<cite>AMD Lightweight Profiling Specification</cite> available at
|
|
<a href="http://developer.amd.com/cpu/LWP">Lightweight Profiling Specification</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="i386_002dBMI"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dTBM" accesskey="n" rel="next">i386-TBM</a>, Previous: <a href="#i386_002dLWP" accesskey="p" rel="previous">i386-LWP</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Bit-Manipulation-Instructions"></a>
|
|
<h4 class="subsection">9.16.12 Bit Manipulation Instructions</h4>
|
|
|
|
<a name="index-BMI_002c-i386"></a>
|
|
<a name="index-BMI_002c-x86_002d64"></a>
|
|
|
|
<p><code>as</code> supports the Bit Manipulation (BMI) instruction set.
|
|
</p>
|
|
<p>BMI instructions provide several instructions implementing individual
|
|
bit manipulation operations such as isolation, masking, setting, or
|
|
resetting.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="i386_002dTBM"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002d16bit" accesskey="n" rel="next">i386-16bit</a>, Previous: <a href="#i386_002dBMI" accesskey="p" rel="previous">i386-BMI</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="AMD_0027s-Trailing-Bit-Manipulation-Instructions"></a>
|
|
<h4 class="subsection">9.16.13 AMD’s Trailing Bit Manipulation Instructions</h4>
|
|
|
|
<a name="index-TBM_002c-i386"></a>
|
|
<a name="index-TBM_002c-x86_002d64"></a>
|
|
|
|
<p><code>as</code> supports AMD’s Trailing Bit Manipulation (TBM)
|
|
instruction set, available on AMD’s BDVER2 processors (Trinity and
|
|
Viperfish).
|
|
</p>
|
|
<p>TBM instructions provide instructions implementing individual bit
|
|
manipulation operations such as isolating, masking, setting, resetting,
|
|
complementing, and operations on trailing zeros and ones.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="i386_002d16bit"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dArch" accesskey="n" rel="next">i386-Arch</a>, Previous: <a href="#i386_002dTBM" accesskey="p" rel="previous">i386-TBM</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Writing-16_002dbit-Code"></a>
|
|
<h4 class="subsection">9.16.14 Writing 16-bit Code</h4>
|
|
|
|
<a name="index-i386-16_002dbit-code"></a>
|
|
<a name="index-16_002dbit-code_002c-i386"></a>
|
|
<a name="index-real_002dmode-code_002c-i386"></a>
|
|
<a name="index-code16gcc-directive_002c-i386"></a>
|
|
<a name="index-code16-directive_002c-i386"></a>
|
|
<a name="index-code32-directive_002c-i386"></a>
|
|
<a name="index-code64-directive_002c-i386"></a>
|
|
<a name="index-code64-directive_002c-x86_002d64"></a>
|
|
<p>While <code>as</code> normally writes only “pure” 32-bit i386 code
|
|
or 64-bit x86-64 code depending on the default configuration,
|
|
it also supports writing code to run in real mode or in 16-bit protected
|
|
mode code segments. To do this, put a ‘<samp>.code16</samp>’ or
|
|
‘<samp>.code16gcc</samp>’ directive before the assembly language instructions to
|
|
be run in 16-bit mode. You can switch <code>as</code> to writing
|
|
32-bit code with the ‘<samp>.code32</samp>’ directive or 64-bit code with the
|
|
‘<samp>.code64</samp>’ directive.
|
|
</p>
|
|
<p>‘<samp>.code16gcc</samp>’ provides experimental support for generating 16-bit
|
|
code from gcc, and differs from ‘<samp>.code16</samp>’ in that ‘<samp>call</samp>’,
|
|
‘<samp>ret</samp>’, ‘<samp>enter</samp>’, ‘<samp>leave</samp>’, ‘<samp>push</samp>’, ‘<samp>pop</samp>’,
|
|
‘<samp>pusha</samp>’, ‘<samp>popa</samp>’, ‘<samp>pushf</samp>’, and ‘<samp>popf</samp>’ instructions
|
|
default to 32-bit size. This is so that the stack pointer is
|
|
manipulated in the same way over function calls, allowing access to
|
|
function parameters at the same stack offsets as in 32-bit mode.
|
|
‘<samp>.code16gcc</samp>’ also automatically adds address size prefixes where
|
|
necessary to use the 32-bit addressing modes that gcc generates.
|
|
</p>
|
|
<p>The code which <code>as</code> generates in 16-bit mode will not
|
|
necessarily run on a 16-bit pre-80386 processor. To write code that
|
|
runs on such a processor, you must refrain from using <em>any</em> 32-bit
|
|
constructs which require <code>as</code> to output address or operand
|
|
size prefixes.
|
|
</p>
|
|
<p>Note that writing 16-bit code instructions by explicitly specifying a
|
|
prefix or an instruction mnemonic suffix within a 32-bit code section
|
|
generates different machine instructions than those generated for a
|
|
16-bit code segment. In a 32-bit code section, the following code
|
|
generates the machine opcode bytes ‘<samp>66 6a 04</samp>’, which pushes the
|
|
value ‘<samp>4</samp>’ onto the stack, decrementing ‘<samp>%esp</samp>’ by 2.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> pushw $4
|
|
</pre></div>
|
|
|
|
<p>The same code in a 16-bit code section would generate the machine
|
|
opcode bytes ‘<samp>6a 04</samp>’ (i.e., without the operand size prefix), which
|
|
is correct since the processor default operand size is assumed to be 16
|
|
bits in a 16-bit code section.
|
|
</p>
|
|
<hr>
|
|
<a name="i386_002dArch"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dISA" accesskey="n" rel="next">i386-ISA</a>, Previous: <a href="#i386_002d16bit" accesskey="p" rel="previous">i386-16bit</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Specifying-CPU-Architecture"></a>
|
|
<h4 class="subsection">9.16.15 Specifying CPU Architecture</h4>
|
|
|
|
<a name="index-arch-directive_002c-i386"></a>
|
|
<a name="index-i386-arch-directive"></a>
|
|
<a name="index-arch-directive_002c-x86_002d64"></a>
|
|
<a name="index-x86_002d64-arch-directive"></a>
|
|
|
|
<p><code>as</code> may be told to assemble for a particular CPU
|
|
(sub-)architecture with the <code>.arch <var>cpu_type</var></code> directive. This
|
|
directive enables a warning when gas detects an instruction that is not
|
|
supported on the CPU specified. The choices for <var>cpu_type</var> are:
|
|
</p>
|
|
<table>
|
|
<tr><td width="20%">‘<samp>default</samp>’</td><td width="20%">‘<samp>push</samp>’</td><td width="20%">‘<samp>pop</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>i8086</samp>’</td><td width="20%">‘<samp>i186</samp>’</td><td width="20%">‘<samp>i286</samp>’</td><td width="20%">‘<samp>i386</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>i486</samp>’</td><td width="20%">‘<samp>i586</samp>’</td><td width="20%">‘<samp>i686</samp>’</td><td width="20%">‘<samp>pentium</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>pentiumpro</samp>’</td><td width="20%">‘<samp>pentiumii</samp>’</td><td width="20%">‘<samp>pentiumiii</samp>’</td><td width="20%">‘<samp>pentium4</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>prescott</samp>’</td><td width="20%">‘<samp>nocona</samp>’</td><td width="20%">‘<samp>core</samp>’</td><td width="20%">‘<samp>core2</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>corei7</samp>’</td><td width="20%">‘<samp>iamcu</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>k6</samp>’</td><td width="20%">‘<samp>k6_2</samp>’</td><td width="20%">‘<samp>athlon</samp>’</td><td width="20%">‘<samp>k8</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>amdfam10</samp>’</td><td width="20%">‘<samp>bdver1</samp>’</td><td width="20%">‘<samp>bdver2</samp>’</td><td width="20%">‘<samp>bdver3</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>bdver4</samp>’</td><td width="20%">‘<samp>znver1</samp>’</td><td width="20%">‘<samp>znver2</samp>’</td><td width="20%">‘<samp>znver3</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>btver1</samp>’</td><td width="20%">‘<samp>btver2</samp>’</td><td width="20%">‘<samp>generic32</samp>’</td><td width="20%">‘<samp>generic64</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.cmov</samp>’</td><td width="20%">‘<samp>.fxsr</samp>’</td><td width="20%">‘<samp>.mmx</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.sse</samp>’</td><td width="20%">‘<samp>.sse2</samp>’</td><td width="20%">‘<samp>.sse3</samp>’</td><td width="20%">‘<samp>.sse4a</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.ssse3</samp>’</td><td width="20%">‘<samp>.sse4.1</samp>’</td><td width="20%">‘<samp>.sse4.2</samp>’</td><td width="20%">‘<samp>.sse4</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.avx</samp>’</td><td width="20%">‘<samp>.vmx</samp>’</td><td width="20%">‘<samp>.smx</samp>’</td><td width="20%">‘<samp>.ept</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.clflush</samp>’</td><td width="20%">‘<samp>.movbe</samp>’</td><td width="20%">‘<samp>.xsave</samp>’</td><td width="20%">‘<samp>.xsaveopt</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.aes</samp>’</td><td width="20%">‘<samp>.pclmul</samp>’</td><td width="20%">‘<samp>.fma</samp>’</td><td width="20%">‘<samp>.fsgsbase</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.rdrnd</samp>’</td><td width="20%">‘<samp>.f16c</samp>’</td><td width="20%">‘<samp>.avx2</samp>’</td><td width="20%">‘<samp>.bmi2</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.lzcnt</samp>’</td><td width="20%">‘<samp>.popcnt</samp>’</td><td width="20%">‘<samp>.invpcid</samp>’</td><td width="20%">‘<samp>.vmfunc</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.hle</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.rtm</samp>’</td><td width="20%">‘<samp>.adx</samp>’</td><td width="20%">‘<samp>.rdseed</samp>’</td><td width="20%">‘<samp>.prfchw</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.smap</samp>’</td><td width="20%">‘<samp>.mpx</samp>’</td><td width="20%">‘<samp>.sha</samp>’</td><td width="20%">‘<samp>.prefetchwt1</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.clflushopt</samp>’</td><td width="20%">‘<samp>.xsavec</samp>’</td><td width="20%">‘<samp>.xsaves</samp>’</td><td width="20%">‘<samp>.se1</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.avx512f</samp>’</td><td width="20%">‘<samp>.avx512cd</samp>’</td><td width="20%">‘<samp>.avx512er</samp>’</td><td width="20%">‘<samp>.avx512pf</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.avx512vl</samp>’</td><td width="20%">‘<samp>.avx512bw</samp>’</td><td width="20%">‘<samp>.avx512dq</samp>’</td><td width="20%">‘<samp>.avx512ifma</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.avx512vbmi</samp>’</td><td width="20%">‘<samp>.avx512_4fmaps</samp>’</td><td width="20%">‘<samp>.avx512_4vnniw</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.avx512_vpopcntdq</samp>’</td><td width="20%">‘<samp>.avx512_vbmi2</samp>’</td><td width="20%">‘<samp>.avx512_vnni</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.avx512_bitalg</samp>’</td><td width="20%">‘<samp>.avx512_bf16</samp>’</td><td width="20%">‘<samp>.avx512_vp2intersect</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.tdx</samp>’</td><td width="20%">‘<samp>.avx_vnni</samp>’</td><td width="20%">‘<samp>.avx512_fp16</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.clwb</samp>’</td><td width="20%">‘<samp>.rdpid</samp>’</td><td width="20%">‘<samp>.ptwrite</samp>’</td><td width="20%">‘<samp>.ibt</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.wbnoinvd</samp>’</td><td width="20%">‘<samp>.pconfig</samp>’</td><td width="20%">‘<samp>.waitpkg</samp>’</td><td width="20%">‘<samp>.cldemote</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.shstk</samp>’</td><td width="20%">‘<samp>.gfni</samp>’</td><td width="20%">‘<samp>.vaes</samp>’</td><td width="20%">‘<samp>.vpclmulqdq</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.movdiri</samp>’</td><td width="20%">‘<samp>.movdir64b</samp>’</td><td width="20%">‘<samp>.enqcmd</samp>’</td><td width="20%">‘<samp>.tsxldtrk</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.amx_int8</samp>’</td><td width="20%">‘<samp>.amx_bf16</samp>’</td><td width="20%">‘<samp>.amx_tile</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.kl</samp>’</td><td width="20%">‘<samp>.widekl</samp>’</td><td width="20%">‘<samp>.uintr</samp>’</td><td width="20%">‘<samp>.hreset</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.3dnow</samp>’</td><td width="20%">‘<samp>.3dnowa</samp>’</td><td width="20%">‘<samp>.sse4a</samp>’</td><td width="20%">‘<samp>.sse5</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.syscall</samp>’</td><td width="20%">‘<samp>.rdtscp</samp>’</td><td width="20%">‘<samp>.svme</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.lwp</samp>’</td><td width="20%">‘<samp>.fma4</samp>’</td><td width="20%">‘<samp>.xop</samp>’</td><td width="20%">‘<samp>.cx16</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.padlock</samp>’</td><td width="20%">‘<samp>.clzero</samp>’</td><td width="20%">‘<samp>.mwaitx</samp>’</td><td width="20%">‘<samp>.rdpru</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.mcommit</samp>’</td><td width="20%">‘<samp>.sev_es</samp>’</td><td width="20%">‘<samp>.snp</samp>’</td><td width="20%">‘<samp>.invlpgb</samp>’</td></tr>
|
|
<tr><td width="20%">‘<samp>.tlbsync</samp>’</td></tr>
|
|
</table>
|
|
|
|
<p>Apart from the warning, there are only two other effects on
|
|
<code>as</code> operation; Firstly, if you specify a CPU other than
|
|
‘<samp>i486</samp>’, then shift by one instructions such as ‘<samp>sarl $1, %eax</samp>’
|
|
will automatically use a two byte opcode sequence. The larger three
|
|
byte opcode sequence is used on the 486 (and when no architecture is
|
|
specified) because it executes faster on the 486. Note that you can
|
|
explicitly request the two byte opcode by writing ‘<samp>sarl %eax</samp>’.
|
|
Secondly, if you specify ‘<samp>i8086</samp>’, ‘<samp>i186</samp>’, or ‘<samp>i286</samp>’,
|
|
<em>and</em> ‘<samp>.code16</samp>’ or ‘<samp>.code16gcc</samp>’ then byte offset
|
|
conditional jumps will be promoted when necessary to a two instruction
|
|
sequence consisting of a conditional jump of the opposite sense around
|
|
an unconditional jump to the target.
|
|
</p>
|
|
<p>Following the CPU architecture (but not a sub-architecture, which are those
|
|
starting with a dot), you may specify ‘<samp>jumps</samp>’ or ‘<samp>nojumps</samp>’ to
|
|
control automatic promotion of conditional jumps. ‘<samp>jumps</samp>’ is the
|
|
default, and enables jump promotion; All external jumps will be of the long
|
|
variety, and file-local jumps will be promoted as necessary.
|
|
(see <a href="#i386_002dJumps">i386-Jumps</a>) ‘<samp>nojumps</samp>’ leaves external conditional jumps as
|
|
byte offset jumps, and warns about file-local conditional jumps that
|
|
<code>as</code> promotes.
|
|
Unconditional jumps are treated as for ‘<samp>jumps</samp>’.
|
|
</p>
|
|
<p>For example
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .arch i8086,nojumps
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="i386_002dISA"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dBugs" accesskey="n" rel="next">i386-Bugs</a>, Previous: <a href="#i386_002dArch" accesskey="p" rel="previous">i386-Arch</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="AMD64-ISA-vs_002e-Intel64-ISA"></a>
|
|
<h4 class="subsection">9.16.16 AMD64 ISA vs. Intel64 ISA</h4>
|
|
|
|
<p>There are some discrepancies between AMD64 and Intel64 ISAs.
|
|
</p>
|
|
<ul>
|
|
<li> For ‘<samp>movsxd</samp>’ with 16-bit destination register, AMD64
|
|
supports 32-bit source operand and Intel64 supports 16-bit source
|
|
operand.
|
|
|
|
</li><li> For far branches (with explicit memory operand), both ISAs support
|
|
32- and 16-bit operand size. Intel64 additionally supports 64-bit
|
|
operand size, encoded as ‘<samp>ljmpq</samp>’ and ‘<samp>lcallq</samp>’ in AT&T syntax
|
|
and with an explicit ‘<samp>tbyte ptr</samp>’ operand size specifier in Intel
|
|
syntax.
|
|
|
|
</li><li> ‘<samp>lfs</samp>’, ‘<samp>lgs</samp>’, and ‘<samp>lss</samp>’ similarly allow for 16-
|
|
and 32-bit operand size (32- and 48-bit memory operand) in both ISAs,
|
|
while Intel64 additionally supports 64-bit operand sise (80-bit memory
|
|
operands).
|
|
|
|
</li></ul>
|
|
|
|
<hr>
|
|
<a name="i386_002dBugs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#i386_002dNotes" accesskey="n" rel="next">i386-Notes</a>, Previous: <a href="#i386_002dISA" accesskey="p" rel="previous">i386-ISA</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="AT_0026T-Syntax-bugs"></a>
|
|
<h4 class="subsection">9.16.17 AT&T Syntax bugs</h4>
|
|
|
|
<p>The UnixWare assembler, and probably other AT&T derived ix86 Unix
|
|
assemblers, generate floating point instructions with reversed source
|
|
and destination registers in certain cases. Unfortunately, gcc and
|
|
possibly many other programs use this reversed syntax, so we’re stuck
|
|
with it.
|
|
</p>
|
|
<p>For example
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> fsub %st,%st(3)
|
|
</pre></div>
|
|
<p>results in ‘<samp>%st(3)</samp>’ being updated to ‘<samp>%st - %st(3)</samp>’ rather
|
|
than the expected ‘<samp>%st(3) - %st</samp>’. This happens with all the
|
|
non-commutative arithmetic floating point operations with two register
|
|
operands where the source register is ‘<samp>%st</samp>’ and the destination
|
|
register is ‘<samp>%st(i)</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="i386_002dNotes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#i386_002dBugs" accesskey="p" rel="previous">i386-Bugs</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Notes-2"></a>
|
|
<h4 class="subsection">9.16.18 Notes</h4>
|
|
|
|
<a name="index-i386-mul_002c-imul-instructions"></a>
|
|
<a name="index-mul-instruction_002c-i386"></a>
|
|
<a name="index-imul-instruction_002c-i386"></a>
|
|
<a name="index-mul-instruction_002c-x86_002d64"></a>
|
|
<a name="index-imul-instruction_002c-x86_002d64"></a>
|
|
<p>There is some trickery concerning the ‘<samp>mul</samp>’ and ‘<samp>imul</samp>’
|
|
instructions that deserves mention. The 16-, 32-, 64- and 128-bit expanding
|
|
multiplies (base opcode ‘<samp>0xf6</samp>’; extension 4 for ‘<samp>mul</samp>’ and 5
|
|
for ‘<samp>imul</samp>’) can be output only in the one operand form. Thus,
|
|
‘<samp>imul %ebx, %eax</samp>’ does <em>not</em> select the expanding multiply;
|
|
the expanding multiply would clobber the ‘<samp>%edx</samp>’ register, and this
|
|
would confuse <code>gcc</code> output. Use ‘<samp>imul %ebx</samp>’ to get the
|
|
64-bit product in ‘<samp>%edx:%eax</samp>’.
|
|
</p>
|
|
<p>We have added a two operand form of ‘<samp>imul</samp>’ when the first operand
|
|
is an immediate mode expression and the second operand is a register.
|
|
This is just a shorthand, so that, multiplying ‘<samp>%eax</samp>’ by 69, for
|
|
example, can be done with ‘<samp>imul $69, %eax</samp>’ rather than ‘<samp>imul
|
|
$69, %eax, %eax</samp>’.
|
|
</p>
|
|
|
|
|
|
<hr>
|
|
<a name="IA_002d64_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#IP2K_002dDependent" accesskey="n" rel="next">IP2K-Dependent</a>, Previous: <a href="#i386_002dDependent" accesskey="p" rel="previous">i386-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="IA_002d64-Dependent-Features"></a>
|
|
<h3 class="section">9.17 IA-64 Dependent Features</h3>
|
|
|
|
|
|
<a name="index-IA_002d64-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#IA_002d64-Options" accesskey="1">IA-64 Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#IA_002d64-Syntax" accesskey="2">IA-64 Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#IA_002d64-Opcodes" accesskey="3">IA-64 Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="IA_002d64-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#IA_002d64-Syntax" accesskey="n" rel="next">IA-64 Syntax</a>, Up: <a href="#IA_002d64_002dDependent" accesskey="u" rel="up">IA-64-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-12"></a>
|
|
<h4 class="subsection">9.17.1 Options</h4>
|
|
<a name="index-IA_002d64-options"></a>
|
|
<a name="index-options-for-IA_002d64"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dmconstant_002dgp-command_002dline-option_002c-IA_002d64"></a>
|
|
|
|
</dd>
|
|
<dt><samp>-mconstant-gp</samp></dt>
|
|
<dd><p>This option instructs the assembler to mark the resulting object file
|
|
as using the “constant GP” model. With this model, it is assumed
|
|
that the entire program uses a single global pointer (GP) value. Note
|
|
that this option does not in any fashion affect the machine code
|
|
emitted by the assembler. All it does is turn on the EF_IA_64_CONS_GP
|
|
flag in the ELF file header.
|
|
</p>
|
|
</dd>
|
|
<dt><samp>-mauto-pic</samp></dt>
|
|
<dd><p>This option instructs the assembler to mark the resulting object file
|
|
as using the “constant GP without function descriptor” data model.
|
|
This model is like the “constant GP” model, except that it
|
|
additionally does away with function descriptors. What this means is
|
|
that the address of a function refers directly to the function’s code
|
|
entry-point. Normally, such an address would refer to a function
|
|
descriptor, which contains both the code entry-point and the GP-value
|
|
needed by the function. Note that this option does not in any fashion
|
|
affect the machine code emitted by the assembler. All it does is
|
|
turn on the EF_IA_64_NOFUNCDESC_CONS_GP flag in the ELF file header.
|
|
</p>
|
|
</dd>
|
|
<dt><samp>-milp32</samp></dt>
|
|
<dt><samp>-milp64</samp></dt>
|
|
<dt><samp>-mlp64</samp></dt>
|
|
<dt><samp>-mp64</samp></dt>
|
|
<dd><p>These options select the data model. The assembler defaults to <code>-mlp64</code>
|
|
(LP64 data model).
|
|
</p>
|
|
</dd>
|
|
<dt><samp>-mle</samp></dt>
|
|
<dt><samp>-mbe</samp></dt>
|
|
<dd><p>These options select the byte order. The <code>-mle</code> option selects little-endian
|
|
byte order (default) and <code>-mbe</code> selects big-endian byte order. Note that
|
|
IA-64 machine code always uses little-endian byte order.
|
|
</p>
|
|
</dd>
|
|
<dt><samp>-mtune=itanium1</samp></dt>
|
|
<dt><samp>-mtune=itanium2</samp></dt>
|
|
<dd><p>Tune for a particular IA-64 CPU, <var>itanium1</var> or <var>itanium2</var>. The
|
|
default is <var>itanium2</var>.
|
|
</p>
|
|
</dd>
|
|
<dt><samp>-munwind-check=warning</samp></dt>
|
|
<dt><samp>-munwind-check=error</samp></dt>
|
|
<dd><p>These options control what the assembler will do when performing
|
|
consistency checks on unwind directives. <code>-munwind-check=warning</code>
|
|
will make the assembler issue a warning when an unwind directive check
|
|
fails. This is the default. <code>-munwind-check=error</code> will make the
|
|
assembler issue an error when an unwind directive check fails.
|
|
</p>
|
|
</dd>
|
|
<dt><samp>-mhint.b=ok</samp></dt>
|
|
<dt><samp>-mhint.b=warning</samp></dt>
|
|
<dt><samp>-mhint.b=error</samp></dt>
|
|
<dd><p>These options control what the assembler will do when the ‘<samp>hint.b</samp>’
|
|
instruction is used. <code>-mhint.b=ok</code> will make the assembler accept
|
|
‘<samp>hint.b</samp>’. <code>-mint.b=warning</code> will make the assembler issue a
|
|
warning when ‘<samp>hint.b</samp>’ is used. <code>-mhint.b=error</code> will make
|
|
the assembler treat ‘<samp>hint.b</samp>’ as an error, which is the default.
|
|
</p>
|
|
</dd>
|
|
<dt><samp>-x</samp></dt>
|
|
<dt><samp>-xexplicit</samp></dt>
|
|
<dd><p>These options turn on dependency violation checking.
|
|
</p>
|
|
</dd>
|
|
<dt><samp>-xauto</samp></dt>
|
|
<dd><p>This option instructs the assembler to automatically insert stop bits where necessary
|
|
to remove dependency violations. This is the default mode.
|
|
</p>
|
|
</dd>
|
|
<dt><samp>-xnone</samp></dt>
|
|
<dd><p>This option turns off dependency violation checking.
|
|
</p>
|
|
</dd>
|
|
<dt><samp>-xdebug</samp></dt>
|
|
<dd><p>This turns on debug output intended to help tracking down bugs in the dependency
|
|
violation checker.
|
|
</p>
|
|
</dd>
|
|
<dt><samp>-xdebugn</samp></dt>
|
|
<dd><p>This is a shortcut for -xnone -xdebug.
|
|
</p>
|
|
</dd>
|
|
<dt><samp>-xdebugx</samp></dt>
|
|
<dd><p>This is a shortcut for -xexplicit -xdebug.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="index-IA_002d64-Syntax"></a>
|
|
<hr>
|
|
<a name="IA_002d64-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#IA_002d64-Opcodes" accesskey="n" rel="next">IA-64 Opcodes</a>, Previous: <a href="#IA_002d64-Options" accesskey="p" rel="previous">IA-64 Options</a>, Up: <a href="#IA_002d64_002dDependent" accesskey="u" rel="up">IA-64-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-15"></a>
|
|
<h4 class="subsection">9.17.2 Syntax</h4>
|
|
<p>The assembler syntax closely follows the IA-64 Assembly Language
|
|
Reference Guide.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#IA_002d64_002dChars" accesskey="1">IA-64-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#IA_002d64_002dRegs" accesskey="2">IA-64-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#IA_002d64_002dBits" accesskey="3">IA-64-Bits</a>:</td><td> </td><td align="left" valign="top">Bit Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#IA_002d64_002dRelocs" accesskey="4">IA-64-Relocs</a>:</td><td> </td><td align="left" valign="top">Relocations
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="IA_002d64_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#IA_002d64_002dRegs" accesskey="n" rel="next">IA-64-Regs</a>, Up: <a href="#IA_002d64-Syntax" accesskey="u" rel="up">IA-64 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-13"></a>
|
|
<h4 class="subsubsection">9.17.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-IA_002d64"></a>
|
|
<a name="index-IA_002d64-line-comment-character"></a>
|
|
<p>‘<samp>//</samp>’ is the line comment token.
|
|
</p>
|
|
<a name="index-line-separator_002c-IA_002d64"></a>
|
|
<a name="index-statement-separator_002c-IA_002d64"></a>
|
|
<a name="index-IA_002d64-line-separator"></a>
|
|
<p>‘<samp>;</samp>’ can be used instead of a newline to separate statements.
|
|
</p>
|
|
<hr>
|
|
<a name="IA_002d64_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#IA_002d64_002dBits" accesskey="n" rel="next">IA-64-Bits</a>, Previous: <a href="#IA_002d64_002dChars" accesskey="p" rel="previous">IA-64-Chars</a>, Up: <a href="#IA_002d64-Syntax" accesskey="u" rel="up">IA-64 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-9"></a>
|
|
<h4 class="subsubsection">9.17.2.2 Register Names</h4>
|
|
<a name="index-IA_002d64-registers"></a>
|
|
<a name="index-register-names_002c-IA_002d64"></a>
|
|
|
|
<p>The 128 integer registers are referred to as ‘<samp>r<var>n</var></samp>’.
|
|
The 128 floating-point registers are referred to as ‘<samp>f<var>n</var></samp>’.
|
|
The 128 application registers are referred to as ‘<samp>ar<var>n</var></samp>’.
|
|
The 128 control registers are referred to as ‘<samp>cr<var>n</var></samp>’.
|
|
The 64 one-bit predicate registers are referred to as ‘<samp>p<var>n</var></samp>’.
|
|
The 8 branch registers are referred to as ‘<samp>b<var>n</var></samp>’.
|
|
In addition, the assembler defines a number of aliases:
|
|
‘<samp>gp</samp>’ (‘<samp>r1</samp>’), ‘<samp>sp</samp>’ (‘<samp>r12</samp>’), ‘<samp>rp</samp>’ (‘<samp>b0</samp>’),
|
|
‘<samp>ret0</samp>’ (‘<samp>r8</samp>’), ‘<samp>ret1</samp>’ (‘<samp>r9</samp>’), ‘<samp>ret2</samp>’ (‘<samp>r10</samp>’),
|
|
‘<samp>ret3</samp>’ (‘<samp>r9</samp>’), ‘<samp>farg<var>n</var></samp>’ (‘<samp>f8+<var>n</var></samp>’), and
|
|
‘<samp>fret<var>n</var></samp>’ (‘<samp>f8+<var>n</var></samp>’).
|
|
</p>
|
|
<p>For convenience, the assembler also defines aliases for all named application
|
|
and control registers. For example, ‘<samp>ar.bsp</samp>’ refers to the register
|
|
backing store pointer (‘<samp>ar17</samp>’). Similarly, ‘<samp>cr.eoi</samp>’ refers to
|
|
the end-of-interrupt register (‘<samp>cr67</samp>’).
|
|
</p>
|
|
<hr>
|
|
<a name="IA_002d64_002dBits"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#IA_002d64_002dRelocs" accesskey="n" rel="next">IA-64-Relocs</a>, Previous: <a href="#IA_002d64_002dRegs" accesskey="p" rel="previous">IA-64-Regs</a>, Up: <a href="#IA_002d64-Syntax" accesskey="u" rel="up">IA-64 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="IA_002d64-Processor_002dStatus_002dRegister-_0028PSR_0029-Bit-Names"></a>
|
|
<h4 class="subsubsection">9.17.2.3 IA-64 Processor-Status-Register (PSR) Bit Names</h4>
|
|
<a name="index-IA_002d64-Processor_002dstatus_002dRegister-bit-names"></a>
|
|
<a name="index-PSR-bits"></a>
|
|
<a name="index-bit-names_002c-IA_002d64"></a>
|
|
|
|
<p>The assembler defines bit masks for each of the bits in the IA-64
|
|
processor status register. For example, ‘<samp>psr.ic</samp>’ corresponds to
|
|
a value of 0x2000. These masks are primarily intended for use with
|
|
the ‘<samp>ssm</samp>’/‘<samp>sum</samp>’ and ‘<samp>rsm</samp>’/‘<samp>rum</samp>’
|
|
instructions, but they can be used anywhere else where an integer
|
|
constant is expected.
|
|
</p>
|
|
<hr>
|
|
<a name="IA_002d64_002dRelocs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#IA_002d64_002dBits" accesskey="p" rel="previous">IA-64-Bits</a>, Up: <a href="#IA_002d64-Syntax" accesskey="u" rel="up">IA-64 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Relocations-2"></a>
|
|
<h4 class="subsubsection">9.17.2.4 Relocations</h4>
|
|
<a name="index-IA_002d64-relocations"></a>
|
|
|
|
<p>In addition to the standard IA-64 relocations, the following relocations are
|
|
implemented by <code>as</code>:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>@slotcount(<var>V</var>)</code></dt>
|
|
<dd><p>Convert the address offset <var>V</var> into a slot count. This pseudo
|
|
function is available only on VMS. The expression <var>V</var> must be
|
|
known at assembly time: it can’t reference undefined symbols or symbols in
|
|
different sections.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="IA_002d64-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#IA_002d64-Syntax" accesskey="p" rel="previous">IA-64 Syntax</a>, Up: <a href="#IA_002d64_002dDependent" accesskey="u" rel="up">IA-64-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-10"></a>
|
|
<h4 class="subsection">9.17.3 Opcodes</h4>
|
|
<p>For detailed information on the IA-64 machine instruction set, see the
|
|
<a href="http://developer.intel.com/design/itanium/arch_spec.htm">IA-64 Architecture Handbook</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="IP2K_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#LM32_002dDependent" accesskey="n" rel="next">LM32-Dependent</a>, Previous: <a href="#IA_002d64_002dDependent" accesskey="p" rel="previous">IA-64-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="IP2K-Dependent-Features"></a>
|
|
<h3 class="section">9.18 IP2K Dependent Features</h3>
|
|
|
|
<a name="index-IP2K-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#IP2K_002dOpts" accesskey="1">IP2K-Opts</a>:</td><td> </td><td align="left" valign="top">IP2K Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#IP2K_002dSyntax" accesskey="2">IP2K-Syntax</a>:</td><td> </td><td align="left" valign="top">IP2K Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="IP2K_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#IP2K_002dSyntax" accesskey="n" rel="next">IP2K-Syntax</a>, Up: <a href="#IP2K_002dDependent" accesskey="u" rel="up">IP2K-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="IP2K-Options"></a>
|
|
<h4 class="subsection">9.18.1 IP2K Options</h4>
|
|
|
|
<a name="index-options_002c-IP2K"></a>
|
|
<a name="index-IP2K-options"></a>
|
|
|
|
<p>The Ubicom IP2K version of <code>as</code> has a few machine
|
|
dependent options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-mip2022ext</code></dt>
|
|
<dd><a name="index-_002dmip2022ext-option_002c-IP2022"></a>
|
|
<a name="index-architecture-options_002c-IP2022"></a>
|
|
<a name="index-IP2K-architecture-options"></a>
|
|
<p><code>as</code> can assemble the extended IP2022 instructions, but
|
|
it will only do so if this is specifically allowed via this command
|
|
line option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mip2022</code></dt>
|
|
<dd><a name="index-_002dmip2022-option_002c-IP2K"></a>
|
|
<a name="index-architecture-options_002c-IP2K"></a>
|
|
<a name="index-IP2K-architecture-options-1"></a>
|
|
<p>This option restores the assembler’s default behaviour of not
|
|
permitting the extended IP2022 instructions to be assembled.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="IP2K_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#IP2K_002dOpts" accesskey="p" rel="previous">IP2K-Opts</a>, Up: <a href="#IP2K_002dDependent" accesskey="u" rel="up">IP2K-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="IP2K-Syntax"></a>
|
|
<h4 class="subsection">9.18.2 IP2K Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#IP2K_002dChars" accesskey="1">IP2K-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="IP2K_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#IP2K_002dSyntax" accesskey="u" rel="up">IP2K-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-14"></a>
|
|
<h4 class="subsubsection">9.18.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-IP2K"></a>
|
|
<a name="index-IP2K-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>;</samp>’ on a line indicates the start of a comment
|
|
that extends to the end of the current line.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line, the whole line
|
|
is treated as a comment, but in this case the line can also be a
|
|
logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-IP2K"></a>
|
|
<a name="index-statement-separator_002c-IP2K"></a>
|
|
<a name="index-IP2K-line-separator"></a>
|
|
<p>The IP2K assembler does not currently support a line separator
|
|
character.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="LM32_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M32C_002dDependent" accesskey="n" rel="next">M32C-Dependent</a>, Previous: <a href="#IP2K_002dDependent" accesskey="p" rel="previous">IP2K-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="LM32-Dependent-Features"></a>
|
|
<h3 class="section">9.19 LM32 Dependent Features</h3>
|
|
|
|
|
|
<a name="index-LM32-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#LM32-Options" accesskey="1">LM32 Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#LM32-Syntax" accesskey="2">LM32 Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#LM32-Opcodes" accesskey="3">LM32 Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="LM32-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#LM32-Syntax" accesskey="n" rel="next">LM32 Syntax</a>, Up: <a href="#LM32_002dDependent" accesskey="u" rel="up">LM32-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-13"></a>
|
|
<h4 class="subsection">9.19.1 Options</h4>
|
|
<a name="index-LM32-options-_0028none_0029"></a>
|
|
<a name="index-options-for-LM32-_0028none_0029"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dmmultiply_002denabled-command_002dline-option_002c-LM32"></a>
|
|
</dd>
|
|
<dt><code>-mmultiply-enabled</code></dt>
|
|
<dd><p>Enable multiply instructions.
|
|
</p>
|
|
<a name="index-_002dmdivide_002denabled-command_002dline-option_002c-LM32"></a>
|
|
</dd>
|
|
<dt><code>-mdivide-enabled</code></dt>
|
|
<dd><p>Enable divide instructions.
|
|
</p>
|
|
<a name="index-_002dmbarrel_002dshift_002denabled-command_002dline-option_002c-LM32"></a>
|
|
</dd>
|
|
<dt><code>-mbarrel-shift-enabled</code></dt>
|
|
<dd><p>Enable barrel-shift instructions.
|
|
</p>
|
|
<a name="index-_002dmsign_002dextend_002denabled-command_002dline-option_002c-LM32"></a>
|
|
</dd>
|
|
<dt><code>-msign-extend-enabled</code></dt>
|
|
<dd><p>Enable sign extend instructions.
|
|
</p>
|
|
<a name="index-_002dmuser_002denabled-command_002dline-option_002c-LM32"></a>
|
|
</dd>
|
|
<dt><code>-muser-enabled</code></dt>
|
|
<dd><p>Enable user defined instructions.
|
|
</p>
|
|
<a name="index-_002dmicache_002denabled-command_002dline-option_002c-LM32"></a>
|
|
</dd>
|
|
<dt><code>-micache-enabled</code></dt>
|
|
<dd><p>Enable instruction cache related CSRs.
|
|
</p>
|
|
<a name="index-_002dmdcache_002denabled-command_002dline-option_002c-LM32"></a>
|
|
</dd>
|
|
<dt><code>-mdcache-enabled</code></dt>
|
|
<dd><p>Enable data cache related CSRs.
|
|
</p>
|
|
<a name="index-_002dmbreak_002denabled-command_002dline-option_002c-LM32"></a>
|
|
</dd>
|
|
<dt><code>-mbreak-enabled</code></dt>
|
|
<dd><p>Enable break instructions.
|
|
</p>
|
|
<a name="index-_002dmall_002denabled-command_002dline-option_002c-LM32"></a>
|
|
</dd>
|
|
<dt><code>-mall-enabled</code></dt>
|
|
<dd><p>Enable all instructions and CSRs.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
<hr>
|
|
<a name="LM32-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#LM32-Opcodes" accesskey="n" rel="next">LM32 Opcodes</a>, Previous: <a href="#LM32-Options" accesskey="p" rel="previous">LM32 Options</a>, Up: <a href="#LM32_002dDependent" accesskey="u" rel="up">LM32-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-16"></a>
|
|
<h4 class="subsection">9.19.2 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#LM32_002dRegs" accesskey="1">LM32-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#LM32_002dModifiers" accesskey="2">LM32-Modifiers</a>:</td><td> </td><td align="left" valign="top">Relocatable Expression Modifiers
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#LM32_002dChars" accesskey="3">LM32-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="LM32_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#LM32_002dModifiers" accesskey="n" rel="next">LM32-Modifiers</a>, Up: <a href="#LM32-Syntax" accesskey="u" rel="up">LM32 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-10"></a>
|
|
<h4 class="subsubsection">9.19.2.1 Register Names</h4>
|
|
|
|
<a name="index-LM32-register-names"></a>
|
|
<a name="index-register-names_002c-LM32"></a>
|
|
|
|
<p>LM32 has 32 x 32-bit general purpose registers ‘<samp>r0</samp>’,
|
|
‘<samp>r1</samp>’, ... ‘<samp>r31</samp>’.
|
|
</p>
|
|
<p>The following aliases are defined: ‘<samp>gp</samp>’ - ‘<samp>r26</samp>’,
|
|
‘<samp>fp</samp>’ - ‘<samp>r27</samp>’, ‘<samp>sp</samp>’ - ‘<samp>r28</samp>’,
|
|
‘<samp>ra</samp>’ - ‘<samp>r29</samp>’, ‘<samp>ea</samp>’ - ‘<samp>r30</samp>’,
|
|
‘<samp>ba</samp>’ - ‘<samp>r31</samp>’.
|
|
</p>
|
|
<p>LM32 has the following Control and Status Registers (CSRs).
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>IE</code></dt>
|
|
<dd><p>Interrupt enable.
|
|
</p></dd>
|
|
<dt><code>IM</code></dt>
|
|
<dd><p>Interrupt mask.
|
|
</p></dd>
|
|
<dt><code>IP</code></dt>
|
|
<dd><p>Interrupt pending.
|
|
</p></dd>
|
|
<dt><code>ICC</code></dt>
|
|
<dd><p>Instruction cache control.
|
|
</p></dd>
|
|
<dt><code>DCC</code></dt>
|
|
<dd><p>Data cache control.
|
|
</p></dd>
|
|
<dt><code>CC</code></dt>
|
|
<dd><p>Cycle counter.
|
|
</p></dd>
|
|
<dt><code>CFG</code></dt>
|
|
<dd><p>Configuration.
|
|
</p></dd>
|
|
<dt><code>EBA</code></dt>
|
|
<dd><p>Exception base address.
|
|
</p></dd>
|
|
<dt><code>DC</code></dt>
|
|
<dd><p>Debug control.
|
|
</p></dd>
|
|
<dt><code>DEBA</code></dt>
|
|
<dd><p>Debug exception base address.
|
|
</p></dd>
|
|
<dt><code>JTX</code></dt>
|
|
<dd><p>JTAG transmit.
|
|
</p></dd>
|
|
<dt><code>JRX</code></dt>
|
|
<dd><p>JTAG receive.
|
|
</p></dd>
|
|
<dt><code>BP0</code></dt>
|
|
<dd><p>Breakpoint 0.
|
|
</p></dd>
|
|
<dt><code>BP1</code></dt>
|
|
<dd><p>Breakpoint 1.
|
|
</p></dd>
|
|
<dt><code>BP2</code></dt>
|
|
<dd><p>Breakpoint 2.
|
|
</p></dd>
|
|
<dt><code>BP3</code></dt>
|
|
<dd><p>Breakpoint 3.
|
|
</p></dd>
|
|
<dt><code>WP0</code></dt>
|
|
<dd><p>Watchpoint 0.
|
|
</p></dd>
|
|
<dt><code>WP1</code></dt>
|
|
<dd><p>Watchpoint 1.
|
|
</p></dd>
|
|
<dt><code>WP2</code></dt>
|
|
<dd><p>Watchpoint 2.
|
|
</p></dd>
|
|
<dt><code>WP3</code></dt>
|
|
<dd><p>Watchpoint 3.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="LM32_002dModifiers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#LM32_002dChars" accesskey="n" rel="next">LM32-Chars</a>, Previous: <a href="#LM32_002dRegs" accesskey="p" rel="previous">LM32-Regs</a>, Up: <a href="#LM32-Syntax" accesskey="u" rel="up">LM32 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Relocatable-Expression-Modifiers-1"></a>
|
|
<h4 class="subsubsection">9.19.2.2 Relocatable Expression Modifiers</h4>
|
|
|
|
<a name="index-LM32-modifiers"></a>
|
|
<a name="index-syntax_002c-LM32"></a>
|
|
|
|
<p>The assembler supports several modifiers when using relocatable addresses
|
|
in LM32 instruction operands. The general syntax is the following:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">modifier(relocatable-expression)
|
|
</pre></div>
|
|
|
|
<dl compact="compact">
|
|
<dd><a name="index-symbol-modifiers-1"></a>
|
|
|
|
</dd>
|
|
<dt><code>lo</code></dt>
|
|
<dd>
|
|
<p>This modifier allows you to use bits 0 through 15 of
|
|
an address expression as 16 bit relocatable expression.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hi</code></dt>
|
|
<dd>
|
|
<p>This modifier allows you to use bits 16 through 23 of an address expression
|
|
as 16 bit relocatable expression.
|
|
</p>
|
|
<p>For example
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">ori r4, r4, lo(sym+10)
|
|
orhi r4, r4, hi(sym+10)
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>gp</code></dt>
|
|
<dd>
|
|
<p>This modified creates a 16-bit relocatable expression that is
|
|
the offset of the symbol from the global pointer.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">mva r4, gp(sym)
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>got</code></dt>
|
|
<dd>
|
|
<p>This modifier places a symbol in the GOT and creates a 16-bit
|
|
relocatable expression that is the offset into the GOT of this
|
|
symbol.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">lw r4, (gp+got(sym))
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>gotofflo16</code></dt>
|
|
<dd>
|
|
<p>This modifier allows you to use the bits 0 through 15 of an
|
|
address which is an offset from the GOT.
|
|
</p>
|
|
</dd>
|
|
<dt><code>gotoffhi16</code></dt>
|
|
<dd>
|
|
<p>This modifier allows you to use the bits 16 through 31 of an
|
|
address which is an offset from the GOT.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">orhi r4, r4, gotoffhi16(lsym)
|
|
addi r4, r4, gotofflo16(lsym)
|
|
</pre></div>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="LM32_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#LM32_002dModifiers" accesskey="p" rel="previous">LM32-Modifiers</a>, Up: <a href="#LM32-Syntax" accesskey="u" rel="up">LM32 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-15"></a>
|
|
<h4 class="subsubsection">9.19.2.3 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-LM32"></a>
|
|
<a name="index-LM32-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>#</samp>’ on a line indicates the start of a comment
|
|
that extends to the end of the current line. Note that if a line
|
|
starts with a ‘<samp>#</samp>’ character then it can also be a logical line
|
|
number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-LM32"></a>
|
|
<a name="index-statement-separator_002c-LM32"></a>
|
|
<a name="index-LM32-line-separator"></a>
|
|
<p>A semicolon (‘<samp>;</samp>’) can be used to separate multiple statements on
|
|
the same line.
|
|
</p>
|
|
<hr>
|
|
<a name="LM32-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#LM32-Syntax" accesskey="p" rel="previous">LM32 Syntax</a>, Up: <a href="#LM32_002dDependent" accesskey="u" rel="up">LM32-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-11"></a>
|
|
<h4 class="subsection">9.19.3 Opcodes</h4>
|
|
|
|
<a name="index-LM32-opcode-summary"></a>
|
|
<a name="index-opcode-summary_002c-LM32"></a>
|
|
<a name="index-mnemonics_002c-LM32"></a>
|
|
<a name="index-instruction-summary_002c-LM32"></a>
|
|
<p>For detailed information on the LM32 machine instruction set, see
|
|
<a href="http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/">http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/</a>.
|
|
</p>
|
|
<p><code>as</code> implements all the standard LM32 opcodes.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="M32C_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M32R_002dDependent" accesskey="n" rel="next">M32R-Dependent</a>, Previous: <a href="#LM32_002dDependent" accesskey="p" rel="previous">LM32-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="M32C-Dependent-Features"></a>
|
|
<h3 class="section">9.20 M32C Dependent Features</h3>
|
|
|
|
<a name="index-M32C-support"></a>
|
|
|
|
<p><code>as</code> can assemble code for several different members of
|
|
the Renesas M32C family. Normally the default is to assemble code for
|
|
the M16C microprocessor. The <code>-m32c</code> option may be used to
|
|
change the default to the M32C microprocessor.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#M32C_002dOpts" accesskey="1">M32C-Opts</a>:</td><td> </td><td align="left" valign="top">M32C Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M32C_002dSyntax" accesskey="2">M32C-Syntax</a>:</td><td> </td><td align="left" valign="top">M32C Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="M32C_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M32C_002dSyntax" accesskey="n" rel="next">M32C-Syntax</a>, Up: <a href="#M32C_002dDependent" accesskey="u" rel="up">M32C-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="M32C-Options"></a>
|
|
<h4 class="subsection">9.20.1 M32C Options</h4>
|
|
|
|
<a name="index-options_002c-M32C"></a>
|
|
<a name="index-M32C-options"></a>
|
|
|
|
<p>The Renesas M32C version of <code>as</code> has these
|
|
machine-dependent options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-m32c</code></dt>
|
|
<dd><a name="index-_002dm32c-option_002c-M32C"></a>
|
|
<a name="index-architecture-options_002c-M32C"></a>
|
|
<a name="index-M32C-architecture-option"></a>
|
|
<p>Assemble M32C instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m16c</code></dt>
|
|
<dd><a name="index-_002dm16c-option_002c-M16C"></a>
|
|
<a name="index-architecture-options_002c-M16C"></a>
|
|
<a name="index-M16C-architecture-option"></a>
|
|
<p>Assemble M16C instructions (default).
|
|
</p>
|
|
</dd>
|
|
<dt><code>-relax</code></dt>
|
|
<dd><p>Enable support for link-time relaxations.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-h-tick-hex</code></dt>
|
|
<dd><p>Support H’00 style hex constants in addition to 0x00 style.
|
|
</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M32C_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#M32C_002dOpts" accesskey="p" rel="previous">M32C-Opts</a>, Up: <a href="#M32C_002dDependent" accesskey="u" rel="up">M32C-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="M32C-Syntax"></a>
|
|
<h4 class="subsection">9.20.2 M32C Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#M32C_002dModifiers" accesskey="1">M32C-Modifiers</a>:</td><td> </td><td align="left" valign="top">Symbolic Operand Modifiers
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M32C_002dChars" accesskey="2">M32C-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="M32C_002dModifiers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M32C_002dChars" accesskey="n" rel="next">M32C-Chars</a>, Up: <a href="#M32C_002dSyntax" accesskey="u" rel="up">M32C-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbolic-Operand-Modifiers"></a>
|
|
<h4 class="subsubsection">9.20.2.1 Symbolic Operand Modifiers</h4>
|
|
|
|
<a name="index-M32C-modifiers"></a>
|
|
<a name="index-modifiers_002c-M32C"></a>
|
|
|
|
<p>The assembler supports several modifiers when using symbol addresses
|
|
in M32C instruction operands. The general syntax is the following:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">%modifier(symbol)
|
|
</pre></div>
|
|
|
|
<dl compact="compact">
|
|
<dd><a name="index-symbol-modifiers-2"></a>
|
|
|
|
</dd>
|
|
<dt><code>%dsp8</code></dt>
|
|
<dt><code>%dsp16</code></dt>
|
|
<dd>
|
|
<p>These modifiers override the assembler’s assumptions about how big a
|
|
symbol’s address is. Normally, when it sees an operand like
|
|
‘<samp>sym[a0]</samp>’ it assumes ‘<samp>sym</samp>’ may require the widest
|
|
displacement field (16 bits for ‘<samp>-m16c</samp>’, 24 bits for
|
|
‘<samp>-m32c</samp>’). These modifiers tell it to assume the address will fit
|
|
in an 8 or 16 bit (respectively) unsigned displacement. Note that, of
|
|
course, if it doesn’t actually fit you will get linker errors. Example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">mov.w %dsp8(sym)[a0],r1
|
|
mov.b #0,%dsp8(sym)[a0]
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>%hi8</code></dt>
|
|
<dd>
|
|
<p>This modifier allows you to load bits 16 through 23 of a 24 bit
|
|
address into an 8 bit register. This is useful with, for example, the
|
|
M16C ‘<samp>smovf</samp>’ instruction, which expects a 20 bit address in
|
|
‘<samp>r1h</samp>’ and ‘<samp>a0</samp>’. Example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">mov.b #%hi8(sym),r1h
|
|
mov.w #%lo16(sym),a0
|
|
smovf.b
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>%lo16</code></dt>
|
|
<dd>
|
|
<p>Likewise, this modifier allows you to load bits 0 through 15 of a 24
|
|
bit address into a 16 bit register.
|
|
</p>
|
|
</dd>
|
|
<dt><code>%hi16</code></dt>
|
|
<dd>
|
|
<p>This modifier allows you to load bits 16 through 31 of a 32 bit
|
|
address into a 16 bit register. While the M32C family only has 24
|
|
bits of address space, it does support addresses in pairs of 16 bit
|
|
registers (like ‘<samp>a1a0</samp>’ for the ‘<samp>lde</samp>’ instruction). This
|
|
modifier is for loading the upper half in such cases. Example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">mov.w #%hi16(sym),a1
|
|
mov.w #%lo16(sym),a0
|
|
…
|
|
lde.w [a1a0],r1
|
|
</pre></div>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M32C_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#M32C_002dModifiers" accesskey="p" rel="previous">M32C-Modifiers</a>, Up: <a href="#M32C_002dSyntax" accesskey="u" rel="up">M32C-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-16"></a>
|
|
<h4 class="subsubsection">9.20.2.2 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-M32C"></a>
|
|
<a name="index-M32C-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>;</samp>’ character on a line indicates the start of
|
|
a comment that extends to the end of that line.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line, the whole line
|
|
is treated as a comment, but in this case the line can also be a
|
|
logical line number directive (see <a href="#Comments">Comments</a>) or a
|
|
preprocessor control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-M32C"></a>
|
|
<a name="index-statement-separator_002c-M32C"></a>
|
|
<a name="index-M32C-line-separator"></a>
|
|
<p>The ‘<samp>|</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
<hr>
|
|
<a name="M32R_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M68K_002dDependent" accesskey="n" rel="next">M68K-Dependent</a>, Previous: <a href="#M32C_002dDependent" accesskey="p" rel="previous">M32C-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="M32R-Dependent-Features"></a>
|
|
<h3 class="section">9.21 M32R Dependent Features</h3>
|
|
|
|
<a name="index-M32R-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#M32R_002dOpts" accesskey="1">M32R-Opts</a>:</td><td> </td><td align="left" valign="top">M32R Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M32R_002dDirectives" accesskey="2">M32R-Directives</a>:</td><td> </td><td align="left" valign="top">M32R Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M32R_002dWarnings" accesskey="3">M32R-Warnings</a>:</td><td> </td><td align="left" valign="top">M32R Warnings
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="M32R_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M32R_002dDirectives" accesskey="n" rel="next">M32R-Directives</a>, Up: <a href="#M32R_002dDependent" accesskey="u" rel="up">M32R-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="M32R-Options"></a>
|
|
<h4 class="subsection">9.21.1 M32R Options</h4>
|
|
|
|
<a name="index-options_002c-M32R"></a>
|
|
<a name="index-M32R-options"></a>
|
|
|
|
<p>The Renesas M32R version of <code>as</code> has a few machine
|
|
dependent options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-m32rx</code></dt>
|
|
<dd><a name="index-_002dm32rx-option_002c-M32RX"></a>
|
|
<a name="index-architecture-options_002c-M32RX"></a>
|
|
<a name="index-M32R-architecture-options"></a>
|
|
<p><code>as</code> can assemble code for several different members of the
|
|
Renesas M32R family. Normally the default is to assemble code for
|
|
the M32R microprocessor. This option may be used to change the default
|
|
to the M32RX microprocessor, which adds some more instructions to the
|
|
basic M32R instruction set, and some additional parameters to some of
|
|
the original instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m32r2</code></dt>
|
|
<dd><a name="index-_002dm32rx-option_002c-M32R2"></a>
|
|
<a name="index-architecture-options_002c-M32R2"></a>
|
|
<a name="index-M32R-architecture-options-1"></a>
|
|
<p>This option changes the target processor to the M32R2
|
|
microprocessor.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m32r</code></dt>
|
|
<dd><a name="index-_002dm32r-option_002c-M32R"></a>
|
|
<a name="index-architecture-options_002c-M32R"></a>
|
|
<a name="index-M32R-architecture-options-2"></a>
|
|
<p>This option can be used to restore the assembler’s default behaviour of
|
|
assembling for the M32R microprocessor. This can be useful if the
|
|
default has been changed by a previous command-line option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-little</code></dt>
|
|
<dd><a name="index-_002dlittle-option_002c-M32R"></a>
|
|
<p>This option tells the assembler to produce little-endian code and
|
|
data. The default is dependent upon how the toolchain was
|
|
configured.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-EL</code></dt>
|
|
<dd><a name="index-_002dEL-option_002c-M32R"></a>
|
|
<p>This is a synonym for <em>-little</em>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-big</code></dt>
|
|
<dd><a name="index-_002dbig-option_002c-M32R"></a>
|
|
<p>This option tells the assembler to produce big-endian code and
|
|
data.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-EB</code></dt>
|
|
<dd><a name="index-_002dEB-option_002c-M32R"></a>
|
|
<p>This is a synonym for <em>-big</em>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-KPIC</code></dt>
|
|
<dd><a name="index-_002dKPIC-option_002c-M32R"></a>
|
|
<a name="index-PIC-code-generation-for-M32R"></a>
|
|
<p>This option specifies that the output of the assembler should be
|
|
marked as position-independent code (PIC).
|
|
</p>
|
|
</dd>
|
|
<dt><code>-parallel</code></dt>
|
|
<dd><a name="index-_002dparallel-option_002c-M32RX"></a>
|
|
<p>This option tells the assembler to attempts to combine two sequential
|
|
instructions into a single, parallel instruction, where it is legal to
|
|
do so.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-no-parallel</code></dt>
|
|
<dd><a name="index-_002dno_002dparallel-option_002c-M32RX"></a>
|
|
<p>This option disables a previously enabled <em>-parallel</em> option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-no-bitinst</code></dt>
|
|
<dd><a name="index-_002dno_002dbitinst_002c-M32R2"></a>
|
|
<p>This option disables the support for the extended bit-field
|
|
instructions provided by the M32R2. If this support needs to be
|
|
re-enabled the <em>-bitinst</em> switch can be used to restore it.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-O</code></dt>
|
|
<dd><a name="index-_002dO-option_002c-M32RX"></a>
|
|
<p>This option tells the assembler to attempt to optimize the
|
|
instructions that it produces. This includes filling delay slots and
|
|
converting sequential instructions into parallel ones. This option
|
|
implies <em>-parallel</em>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-warn-explicit-parallel-conflicts</code></dt>
|
|
<dd><a name="index-_002dwarn_002dexplicit_002dparallel_002dconflicts-option_002c-M32RX"></a>
|
|
<p>Instructs <code>as</code> to produce warning messages when
|
|
questionable parallel instructions are encountered. This option is
|
|
enabled by default, but <code>gcc</code> disables it when it invokes
|
|
<code>as</code> directly. Questionable instructions are those whose
|
|
behaviour would be different if they were executed sequentially. For
|
|
example the code fragment ‘<samp>mv r1, r2 || mv r3, r1</samp>’ produces a
|
|
different result from ‘<samp>mv r1, r2 \n mv r3, r1</samp>’ since the former
|
|
moves r1 into r3 and then r2 into r1, whereas the later moves r2 into r1
|
|
and r3.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-Wp</code></dt>
|
|
<dd><a name="index-_002dWp-option_002c-M32RX"></a>
|
|
<p>This is a shorter synonym for the <em>-warn-explicit-parallel-conflicts</em>
|
|
option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-no-warn-explicit-parallel-conflicts</code></dt>
|
|
<dd><a name="index-_002dno_002dwarn_002dexplicit_002dparallel_002dconflicts-option_002c-M32RX"></a>
|
|
<p>Instructs <code>as</code> not to produce warning messages when
|
|
questionable parallel instructions are encountered.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-Wnp</code></dt>
|
|
<dd><a name="index-_002dWnp-option_002c-M32RX"></a>
|
|
<p>This is a shorter synonym for the <em>-no-warn-explicit-parallel-conflicts</em>
|
|
option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-ignore-parallel-conflicts</code></dt>
|
|
<dd><a name="index-_002dignore_002dparallel_002dconflicts-option_002c-M32RX"></a>
|
|
<p>This option tells the assembler’s to stop checking parallel
|
|
instructions for constraint violations. This ability is provided for
|
|
hardware vendors testing chip designs and should not be used under
|
|
normal circumstances.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-no-ignore-parallel-conflicts</code></dt>
|
|
<dd><a name="index-_002dno_002dignore_002dparallel_002dconflicts-option_002c-M32RX"></a>
|
|
<p>This option restores the assembler’s default behaviour of checking
|
|
parallel instructions to detect constraint violations.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-Ip</code></dt>
|
|
<dd><a name="index-_002dIp-option_002c-M32RX"></a>
|
|
<p>This is a shorter synonym for the <em>-ignore-parallel-conflicts</em>
|
|
option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-nIp</code></dt>
|
|
<dd><a name="index-_002dnIp-option_002c-M32RX"></a>
|
|
<p>This is a shorter synonym for the <em>-no-ignore-parallel-conflicts</em>
|
|
option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-warn-unmatched-high</code></dt>
|
|
<dd><a name="index-_002dwarn_002dunmatched_002dhigh-option_002c-M32R"></a>
|
|
<p>This option tells the assembler to produce a warning message if a
|
|
<code>.high</code> pseudo op is encountered without a matching <code>.low</code>
|
|
pseudo op. The presence of such an unmatched pseudo op usually
|
|
indicates a programming error.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-no-warn-unmatched-high</code></dt>
|
|
<dd><a name="index-_002dno_002dwarn_002dunmatched_002dhigh-option_002c-M32R"></a>
|
|
<p>Disables a previously enabled <em>-warn-unmatched-high</em> option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-Wuh</code></dt>
|
|
<dd><a name="index-_002dWuh-option_002c-M32RX"></a>
|
|
<p>This is a shorter synonym for the <em>-warn-unmatched-high</em> option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-Wnuh</code></dt>
|
|
<dd><a name="index-_002dWnuh-option_002c-M32RX"></a>
|
|
<p>This is a shorter synonym for the <em>-no-warn-unmatched-high</em> option.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M32R_002dDirectives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M32R_002dWarnings" accesskey="n" rel="next">M32R-Warnings</a>, Previous: <a href="#M32R_002dOpts" accesskey="p" rel="previous">M32R-Opts</a>, Up: <a href="#M32R_002dDependent" accesskey="u" rel="up">M32R-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="M32R-Directives"></a>
|
|
<h4 class="subsection">9.21.2 M32R Directives</h4>
|
|
<a name="index-directives_002c-M32R"></a>
|
|
<a name="index-M32R-directives"></a>
|
|
|
|
<p>The Renesas M32R version of <code>as</code> has a few architecture
|
|
specific directives:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-low-directive_002c-M32R"></a>
|
|
</dd>
|
|
<dt><code>low <var>expression</var></code></dt>
|
|
<dd><p>The <code>low</code> directive computes the value of its expression and
|
|
places the lower 16-bits of the result into the immediate-field of the
|
|
instruction. For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> or3 r0, r0, #low(0x12345678) ; compute r0 = r0 | 0x5678
|
|
add3, r0, r0, #low(fred) ; compute r0 = r0 + low 16-bits of address of fred
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>high <var>expression</var></code></dt>
|
|
<dd><a name="index-high-directive_002c-M32R"></a>
|
|
<p>The <code>high</code> directive computes the value of its expression and
|
|
places the upper 16-bits of the result into the immediate-field of the
|
|
instruction. For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> seth r0, #high(0x12345678) ; compute r0 = 0x12340000
|
|
seth, r0, #high(fred) ; compute r0 = upper 16-bits of address of fred
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>shigh <var>expression</var></code></dt>
|
|
<dd><a name="index-shigh-directive_002c-M32R"></a>
|
|
<p>The <code>shigh</code> directive is very similar to the <code>high</code>
|
|
directive. It also computes the value of its expression and places
|
|
the upper 16-bits of the result into the immediate-field of the
|
|
instruction. The difference is that <code>shigh</code> also checks to see
|
|
if the lower 16-bits could be interpreted as a signed number, and if
|
|
so it assumes that a borrow will occur from the upper-16 bits. To
|
|
compensate for this the <code>shigh</code> directive pre-biases the upper
|
|
16 bit value by adding one to it. For example:
|
|
</p>
|
|
<p>For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> seth r0, #shigh(0x12345678) ; compute r0 = 0x12340000
|
|
seth r0, #shigh(0x00008000) ; compute r0 = 0x00010000
|
|
</pre></div>
|
|
|
|
<p>In the second example the lower 16-bits are 0x8000. If these are
|
|
treated as a signed value and sign extended to 32-bits then the value
|
|
becomes 0xffff8000. If this value is then added to 0x00010000 then
|
|
the result is 0x00008000.
|
|
</p>
|
|
<p>This behaviour is to allow for the different semantics of the
|
|
<code>or3</code> and <code>add3</code> instructions. The <code>or3</code> instruction
|
|
treats its 16-bit immediate argument as unsigned whereas the
|
|
<code>add3</code> treats its 16-bit immediate as a signed value. So for
|
|
example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> seth r0, #shigh(0x00008000)
|
|
add3 r0, r0, #low(0x00008000)
|
|
</pre></div>
|
|
|
|
<p>Produces the correct result in r0, whereas:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> seth r0, #shigh(0x00008000)
|
|
or3 r0, r0, #low(0x00008000)
|
|
</pre></div>
|
|
|
|
<p>Stores 0xffff8000 into r0.
|
|
</p>
|
|
<p>Note - the <code>shigh</code> directive does not know where in the assembly
|
|
source code the lower 16-bits of the value are going set, so it cannot
|
|
check to make sure that an <code>or3</code> instruction is being used rather
|
|
than an <code>add3</code> instruction. It is up to the programmer to make
|
|
sure that correct directives are used.
|
|
</p>
|
|
<a name="index-_002em32r-directive_002c-M32R"></a>
|
|
</dd>
|
|
<dt><code>.m32r</code></dt>
|
|
<dd><p>The directive performs a similar thing as the <em>-m32r</em> command
|
|
line option. It tells the assembler to only accept M32R instructions
|
|
from now on. An instructions from later M32R architectures are
|
|
refused.
|
|
</p>
|
|
<a name="index-_002em32rx-directive_002c-M32RX"></a>
|
|
</dd>
|
|
<dt><code>.m32rx</code></dt>
|
|
<dd><p>The directive performs a similar thing as the <em>-m32rx</em> command
|
|
line option. It tells the assembler to start accepting the extra
|
|
instructions in the M32RX ISA as well as the ordinary M32R ISA.
|
|
</p>
|
|
<a name="index-_002em32r2-directive_002c-M32R2"></a>
|
|
</dd>
|
|
<dt><code>.m32r2</code></dt>
|
|
<dd><p>The directive performs a similar thing as the <em>-m32r2</em> command
|
|
line option. It tells the assembler to start accepting the extra
|
|
instructions in the M32R2 ISA as well as the ordinary M32R ISA.
|
|
</p>
|
|
<a name="index-_002elittle-directive_002c-M32RX"></a>
|
|
</dd>
|
|
<dt><code>.little</code></dt>
|
|
<dd><p>The directive performs a similar thing as the <em>-little</em> command
|
|
line option. It tells the assembler to start producing little-endian
|
|
code and data. This option should be used with care as producing
|
|
mixed-endian binary files is fraught with danger.
|
|
</p>
|
|
<a name="index-_002ebig-directive_002c-M32RX"></a>
|
|
</dd>
|
|
<dt><code>.big</code></dt>
|
|
<dd><p>The directive performs a similar thing as the <em>-big</em> command
|
|
line option. It tells the assembler to start producing big-endian
|
|
code and data. This option should be used with care as producing
|
|
mixed-endian binary files is fraught with danger.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M32R_002dWarnings"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#M32R_002dDirectives" accesskey="p" rel="previous">M32R-Directives</a>, Up: <a href="#M32R_002dDependent" accesskey="u" rel="up">M32R-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="M32R-Warnings"></a>
|
|
<h4 class="subsection">9.21.3 M32R Warnings</h4>
|
|
|
|
<a name="index-warnings_002c-M32R"></a>
|
|
<a name="index-M32R-warnings"></a>
|
|
|
|
<p>There are several warning and error messages that can be produced by
|
|
<code>as</code> which are specific to the M32R:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?</code></dt>
|
|
<dd><p>This message is only produced if warnings for explicit parallel
|
|
conflicts have been enabled. It indicates that the assembler has
|
|
encountered a parallel instruction in which the destination register of
|
|
the left hand instruction is used as an input register in the right hand
|
|
instruction. For example in this code fragment
|
|
‘<samp>mv r1, r2 || neg r3, r1</samp>’ register r1 is the destination of the
|
|
move instruction and the input to the neg instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?</code></dt>
|
|
<dd><p>This message is only produced if warnings for explicit parallel
|
|
conflicts have been enabled. It indicates that the assembler has
|
|
encountered a parallel instruction in which the destination register of
|
|
the right hand instruction is used as an input register in the left hand
|
|
instruction. For example in this code fragment
|
|
‘<samp>mv r1, r2 || neg r2, r3</samp>’ register r2 is the destination of the
|
|
neg instruction and the input to the move instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>instruction ‘<samp>...</samp>’ is for the M32RX only</code></dt>
|
|
<dd><p>This message is produced when the assembler encounters an instruction
|
|
which is only supported by the M32Rx processor, and the ‘<samp>-m32rx</samp>’
|
|
command-line flag has not been specified to allow assembly of such
|
|
instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>unknown instruction ‘<samp>...</samp>’</code></dt>
|
|
<dd><p>This message is produced when the assembler encounters an instruction
|
|
which it does not recognize.
|
|
</p>
|
|
</dd>
|
|
<dt><code>only the NOP instruction can be issued in parallel on the m32r</code></dt>
|
|
<dd><p>This message is produced when the assembler encounters a parallel
|
|
instruction which does not involve a NOP instruction and the
|
|
‘<samp>-m32rx</samp>’ command-line flag has not been specified. Only the M32Rx
|
|
processor is able to execute two instructions in parallel.
|
|
</p>
|
|
</dd>
|
|
<dt><code>instruction ‘<samp>...</samp>’ cannot be executed in parallel.</code></dt>
|
|
<dd><p>This message is produced when the assembler encounters a parallel
|
|
instruction which is made up of one or two instructions which cannot be
|
|
executed in parallel.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Instructions share the same execution pipeline</code></dt>
|
|
<dd><p>This message is produced when the assembler encounters a parallel
|
|
instruction whose components both use the same execution pipeline.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Instructions write to the same destination register.</code></dt>
|
|
<dd><p>This message is produced when the assembler encounters a parallel
|
|
instruction where both components attempt to modify the same register.
|
|
For example these code fragments will produce this message:
|
|
‘<samp>mv r1, r2 || neg r1, r3</samp>’
|
|
‘<samp>jl r0 || mv r14, r1</samp>’
|
|
‘<samp>st r2, @-r1 || mv r1, r3</samp>’
|
|
‘<samp>mv r1, r2 || ld r0, @r1+</samp>’
|
|
‘<samp>cmp r1, r2 || addx r3, r4</samp>’ (Both write to the condition bit)
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M68K_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M68HC11_002dDependent" accesskey="n" rel="next">M68HC11-Dependent</a>, Previous: <a href="#M32R_002dDependent" accesskey="p" rel="previous">M32R-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="M680x0-Dependent-Features"></a>
|
|
<h3 class="section">9.22 M680x0 Dependent Features</h3>
|
|
|
|
<a name="index-M680x0-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#M68K_002dOpts" accesskey="1">M68K-Opts</a>:</td><td> </td><td align="left" valign="top">M680x0 Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M68K_002dSyntax" accesskey="2">M68K-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M68K_002dMoto_002dSyntax" accesskey="3">M68K-Moto-Syntax</a>:</td><td> </td><td align="left" valign="top">Motorola Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M68K_002dFloat" accesskey="4">M68K-Float</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M68K_002dDirectives" accesskey="5">M68K-Directives</a>:</td><td> </td><td align="left" valign="top">680x0 Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M68K_002dopcodes" accesskey="6">M68K-opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="M68K_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M68K_002dSyntax" accesskey="n" rel="next">M68K-Syntax</a>, Up: <a href="#M68K_002dDependent" accesskey="u" rel="up">M68K-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="M680x0-Options"></a>
|
|
<h4 class="subsection">9.22.1 M680x0 Options</h4>
|
|
|
|
<a name="index-options_002c-M680x0"></a>
|
|
<a name="index-M680x0-options"></a>
|
|
<p>The Motorola 680x0 version of <code>as</code> has a few machine
|
|
dependent options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dmarch_003d-command_002dline-option_002c-M680x0"></a>
|
|
</dd>
|
|
<dt>‘<samp>-march=<var>architecture</var></samp>’</dt>
|
|
<dd><p>This option specifies a target architecture. The following
|
|
architectures are recognized:
|
|
<code>68000</code>,
|
|
<code>68010</code>,
|
|
<code>68020</code>,
|
|
<code>68030</code>,
|
|
<code>68040</code>,
|
|
<code>68060</code>,
|
|
<code>cpu32</code>,
|
|
<code>isaa</code>,
|
|
<code>isaaplus</code>,
|
|
<code>isab</code>,
|
|
<code>isac</code> and
|
|
<code>cfv4e</code>.
|
|
</p>
|
|
|
|
<a name="index-_002dmcpu_003d-command_002dline-option_002c-M680x0"></a>
|
|
</dd>
|
|
<dt>‘<samp>-mcpu=<var>cpu</var></samp>’</dt>
|
|
<dd><p>This option specifies a target cpu. When used in conjunction with the
|
|
<samp>-march</samp> option, the cpu must be within the specified
|
|
architecture. Also, the generic features of the architecture are used
|
|
for instruction generation, rather than those of the specific chip.
|
|
</p>
|
|
<a name="index-_002dm_005bno_002d_005d68851-command_002dline-option_002c-M680x0"></a>
|
|
<a name="index-_002dm_005bno_002d_005d68881-command_002dline-option_002c-M680x0"></a>
|
|
<a name="index-_002dm_005bno_002d_005ddiv-command_002dline-option_002c-M680x0"></a>
|
|
<a name="index-_002dm_005bno_002d_005dusp-command_002dline-option_002c-M680x0"></a>
|
|
<a name="index-_002dm_005bno_002d_005dfloat-command_002dline-option_002c-M680x0"></a>
|
|
<a name="index-_002dm_005bno_002d_005dmac-command_002dline-option_002c-M680x0"></a>
|
|
<a name="index-_002dm_005bno_002d_005demac-command_002dline-option_002c-M680x0"></a>
|
|
</dd>
|
|
<dt>‘<samp>-m[no-]68851</samp>’</dt>
|
|
<dt>‘<samp>-m[no-]68881</samp>’</dt>
|
|
<dt>‘<samp>-m[no-]div</samp>’</dt>
|
|
<dt>‘<samp>-m[no-]usp</samp>’</dt>
|
|
<dt>‘<samp>-m[no-]float</samp>’</dt>
|
|
<dt>‘<samp>-m[no-]mac</samp>’</dt>
|
|
<dt>‘<samp>-m[no-]emac</samp>’</dt>
|
|
<dd>
|
|
<p>Enable or disable various architecture specific features. If a chip
|
|
or architecture by default supports an option (for instance
|
|
<samp>-march=isaaplus</samp> includes the <samp>-mdiv</samp> option),
|
|
explicitly disabling the option will override the default.
|
|
</p>
|
|
<a name="index-_002dl-option_002c-M680x0"></a>
|
|
</dd>
|
|
<dt>‘<samp>-l</samp>’</dt>
|
|
<dd><p>You can use the ‘<samp>-l</samp>’ option to shorten the size of references to undefined
|
|
symbols. If you do not use the ‘<samp>-l</samp>’ option, references to undefined
|
|
symbols are wide enough for a full <code>long</code> (32 bits). (Since
|
|
<code>as</code> cannot know where these symbols end up, <code>as</code> can
|
|
only allocate space for the linker to fill in later. Since <code>as</code>
|
|
does not know how far away these symbols are, it allocates as much space as it
|
|
can.) If you use this option, the references are only one word wide (16 bits).
|
|
This may be useful if you want the object file to be as small as possible, and
|
|
you know that the relevant symbols are always less than 17 bits away.
|
|
</p>
|
|
<a name="index-_002d_002dregister_002dprefix_002doptional-option_002c-M680x0"></a>
|
|
</dd>
|
|
<dt>‘<samp>--register-prefix-optional</samp>’</dt>
|
|
<dd><p>For some configurations, especially those where the compiler normally
|
|
does not prepend an underscore to the names of user variables, the
|
|
assembler requires a ‘<samp>%</samp>’ before any use of a register name. This
|
|
is intended to let the assembler distinguish between C variables and
|
|
functions named ‘<samp>a0</samp>’ through ‘<samp>a7</samp>’, and so on. The ‘<samp>%</samp>’ is
|
|
always accepted, but is not required for certain configurations, notably
|
|
‘<samp>sun3</samp>’. The ‘<samp>--register-prefix-optional</samp>’ option may be used
|
|
to permit omitting the ‘<samp>%</samp>’ even for configurations for which it is
|
|
normally required. If this is done, it will generally be impossible to
|
|
refer to C variables and functions with the same names as register
|
|
names.
|
|
</p>
|
|
<a name="index-_002d_002dbitwise_002dor-option_002c-M680x0"></a>
|
|
</dd>
|
|
<dt>‘<samp>--bitwise-or</samp>’</dt>
|
|
<dd><p>Normally the character ‘<samp>|</samp>’ is treated as a comment character, which
|
|
means that it can not be used in expressions. The ‘<samp>--bitwise-or</samp>’
|
|
option turns ‘<samp>|</samp>’ into a normal character. In this mode, you must
|
|
either use C style comments, or start comments with a ‘<samp>#</samp>’ character
|
|
at the beginning of a line.
|
|
</p>
|
|
<a name="index-_002d_002dbase_002dsize_002ddefault_002d16"></a>
|
|
<a name="index-_002d_002dbase_002dsize_002ddefault_002d32"></a>
|
|
</dd>
|
|
<dt>‘<samp>--base-size-default-16 --base-size-default-32</samp>’</dt>
|
|
<dd><p>If you use an addressing mode with a base register without specifying
|
|
the size, <code>as</code> will normally use the full 32 bit value.
|
|
For example, the addressing mode ‘<samp>%a0@(%d0)</samp>’ is equivalent to
|
|
‘<samp>%a0@(%d0:l)</samp>’. You may use the ‘<samp>--base-size-default-16</samp>’
|
|
option to tell <code>as</code> to default to using the 16 bit value.
|
|
In this case, ‘<samp>%a0@(%d0)</samp>’ is equivalent to ‘<samp>%a0@(%d0:w)</samp>’.
|
|
You may use the ‘<samp>--base-size-default-32</samp>’ option to restore the
|
|
default behaviour.
|
|
</p>
|
|
<a name="index-_002d_002ddisp_002dsize_002ddefault_002d16"></a>
|
|
<a name="index-_002d_002ddisp_002dsize_002ddefault_002d32"></a>
|
|
</dd>
|
|
<dt>‘<samp>--disp-size-default-16 --disp-size-default-32</samp>’</dt>
|
|
<dd><p>If you use an addressing mode with a displacement, and the value of the
|
|
displacement is not known, <code>as</code> will normally assume that
|
|
the value is 32 bits. For example, if the symbol ‘<samp>disp</samp>’ has not
|
|
been defined, <code>as</code> will assemble the addressing mode
|
|
‘<samp>%a0@(disp,%d0)</samp>’ as though ‘<samp>disp</samp>’ is a 32 bit value. You may
|
|
use the ‘<samp>--disp-size-default-16</samp>’ option to tell <code>as</code>
|
|
to instead assume that the displacement is 16 bits. In this case,
|
|
<code>as</code> will assemble ‘<samp>%a0@(disp,%d0)</samp>’ as though
|
|
‘<samp>disp</samp>’ is a 16 bit value. You may use the
|
|
‘<samp>--disp-size-default-32</samp>’ option to restore the default behaviour.
|
|
</p>
|
|
<a name="index-_002d_002dpcrel"></a>
|
|
</dd>
|
|
<dt>‘<samp>--pcrel</samp>’</dt>
|
|
<dd><p>Always keep branches PC-relative. In the M680x0 architecture all branches
|
|
are defined as PC-relative. However, on some processors they are limited
|
|
to word displacements maximum. When <code>as</code> needs a long branch
|
|
that is not available, it normally emits an absolute jump instead. This
|
|
option disables this substitution. When this option is given and no long
|
|
branches are available, only word branches will be emitted. An error
|
|
message will be generated if a word branch cannot reach its target. This
|
|
option has no effect on 68020 and other processors that have long branches.
|
|
see <a href="#M68K_002dBranch">Branch Improvement</a>.
|
|
</p>
|
|
<a name="index-_002dm68000-and-related-options"></a>
|
|
<a name="index-architecture-options_002c-M680x0"></a>
|
|
<a name="index-M680x0-architecture-options"></a>
|
|
</dd>
|
|
<dt>‘<samp>-m68000</samp>’</dt>
|
|
<dd><p><code>as</code> can assemble code for several different members of the
|
|
Motorola 680x0 family. The default depends upon how <code>as</code>
|
|
was configured when it was built; normally, the default is to assemble
|
|
code for the 68020 microprocessor. The following options may be used to
|
|
change the default. These options control which instructions and
|
|
addressing modes are permitted. The members of the 680x0 family are
|
|
very similar. For detailed information about the differences, see the
|
|
Motorola manuals.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt>‘<samp>-m68000</samp>’</dt>
|
|
<dt>‘<samp>-m68ec000</samp>’</dt>
|
|
<dt>‘<samp>-m68hc000</samp>’</dt>
|
|
<dt>‘<samp>-m68hc001</samp>’</dt>
|
|
<dt>‘<samp>-m68008</samp>’</dt>
|
|
<dt>‘<samp>-m68302</samp>’</dt>
|
|
<dt>‘<samp>-m68306</samp>’</dt>
|
|
<dt>‘<samp>-m68307</samp>’</dt>
|
|
<dt>‘<samp>-m68322</samp>’</dt>
|
|
<dt>‘<samp>-m68356</samp>’</dt>
|
|
<dd><p>Assemble for the 68000. ‘<samp>-m68008</samp>’, ‘<samp>-m68302</samp>’, and so on are synonyms
|
|
for ‘<samp>-m68000</samp>’, since the chips are the same from the point of view
|
|
of the assembler.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>-m68010</samp>’</dt>
|
|
<dd><p>Assemble for the 68010.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>-m68020</samp>’</dt>
|
|
<dt>‘<samp>-m68ec020</samp>’</dt>
|
|
<dd><p>Assemble for the 68020. This is normally the default.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>-m68030</samp>’</dt>
|
|
<dt>‘<samp>-m68ec030</samp>’</dt>
|
|
<dd><p>Assemble for the 68030.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>-m68040</samp>’</dt>
|
|
<dt>‘<samp>-m68ec040</samp>’</dt>
|
|
<dd><p>Assemble for the 68040.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>-m68060</samp>’</dt>
|
|
<dt>‘<samp>-m68ec060</samp>’</dt>
|
|
<dd><p>Assemble for the 68060.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>-mcpu32</samp>’</dt>
|
|
<dt>‘<samp>-m68330</samp>’</dt>
|
|
<dt>‘<samp>-m68331</samp>’</dt>
|
|
<dt>‘<samp>-m68332</samp>’</dt>
|
|
<dt>‘<samp>-m68333</samp>’</dt>
|
|
<dt>‘<samp>-m68334</samp>’</dt>
|
|
<dt>‘<samp>-m68336</samp>’</dt>
|
|
<dt>‘<samp>-m68340</samp>’</dt>
|
|
<dt>‘<samp>-m68341</samp>’</dt>
|
|
<dt>‘<samp>-m68349</samp>’</dt>
|
|
<dt>‘<samp>-m68360</samp>’</dt>
|
|
<dd><p>Assemble for the CPU32 family of chips.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>-m5200</samp>’</dt>
|
|
<dt>‘<samp>-m5202</samp>’</dt>
|
|
<dt>‘<samp>-m5204</samp>’</dt>
|
|
<dt>‘<samp>-m5206</samp>’</dt>
|
|
<dt>‘<samp>-m5206e</samp>’</dt>
|
|
<dt>‘<samp>-m521x</samp>’</dt>
|
|
<dt>‘<samp>-m5249</samp>’</dt>
|
|
<dt>‘<samp>-m528x</samp>’</dt>
|
|
<dt>‘<samp>-m5307</samp>’</dt>
|
|
<dt>‘<samp>-m5407</samp>’</dt>
|
|
<dt>‘<samp>-m547x</samp>’</dt>
|
|
<dt>‘<samp>-m548x</samp>’</dt>
|
|
<dt>‘<samp>-mcfv4</samp>’</dt>
|
|
<dt>‘<samp>-mcfv4e</samp>’</dt>
|
|
<dd><p>Assemble for the ColdFire family of chips.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>-m68881</samp>’</dt>
|
|
<dt>‘<samp>-m68882</samp>’</dt>
|
|
<dd><p>Assemble 68881 floating point instructions. This is the default for the
|
|
68020, 68030, and the CPU32. The 68040 and 68060 always support
|
|
floating point instructions.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>-mno-68881</samp>’</dt>
|
|
<dd><p>Do not assemble 68881 floating point instructions. This is the default
|
|
for 68000 and the 68010. The 68040 and 68060 always support floating
|
|
point instructions, even if this option is used.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>-m68851</samp>’</dt>
|
|
<dd><p>Assemble 68851 MMU instructions. This is the default for the 68020,
|
|
68030, and 68060. The 68040 accepts a somewhat different set of MMU
|
|
instructions; ‘<samp>-m68851</samp>’ and ‘<samp>-m68040</samp>’ should not be used
|
|
together.
|
|
</p>
|
|
</dd>
|
|
<dt>‘<samp>-mno-68851</samp>’</dt>
|
|
<dd><p>Do not assemble 68851 MMU instructions. This is the default for the
|
|
68000, 68010, and the CPU32. The 68040 accepts a somewhat different set
|
|
of MMU instructions.
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M68K_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M68K_002dMoto_002dSyntax" accesskey="n" rel="next">M68K-Moto-Syntax</a>, Previous: <a href="#M68K_002dOpts" accesskey="p" rel="previous">M68K-Opts</a>, Up: <a href="#M68K_002dDependent" accesskey="u" rel="up">M68K-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-17"></a>
|
|
<h4 class="subsection">9.22.2 Syntax</h4>
|
|
|
|
<a name="index-MIT"></a>
|
|
<p>This syntax for the Motorola 680x0 was developed at <small>MIT</small>.
|
|
</p>
|
|
<a name="index-M680x0-syntax"></a>
|
|
<a name="index-syntax_002c-M680x0"></a>
|
|
<a name="index-M680x0-size-modifiers"></a>
|
|
<a name="index-size-modifiers_002c-M680x0"></a>
|
|
<p>The 680x0 version of <code>as</code> uses instructions names and
|
|
syntax compatible with the Sun assembler. Intervening periods are
|
|
ignored; for example, ‘<samp>movl</samp>’ is equivalent to ‘<samp>mov.l</samp>’.
|
|
</p>
|
|
<p>In the following table <var>apc</var> stands for any of the address registers
|
|
(‘<samp>%a0</samp>’ through ‘<samp>%a7</samp>’), the program counter (‘<samp>%pc</samp>’), the
|
|
zero-address relative to the program counter (‘<samp>%zpc</samp>’), a suppressed
|
|
address register (‘<samp>%za0</samp>’ through ‘<samp>%za7</samp>’), or it may be omitted
|
|
entirely. The use of <var>size</var> means one of ‘<samp>w</samp>’ or ‘<samp>l</samp>’, and
|
|
it may be omitted, along with the leading colon, unless a scale is also
|
|
specified. The use of <var>scale</var> means one of ‘<samp>1</samp>’, ‘<samp>2</samp>’,
|
|
‘<samp>4</samp>’, or ‘<samp>8</samp>’, and it may always be omitted along with the
|
|
leading colon.
|
|
</p>
|
|
<a name="index-M680x0-addressing-modes"></a>
|
|
<a name="index-addressing-modes_002c-M680x0"></a>
|
|
<p>The following addressing modes are understood:
|
|
</p><dl compact="compact">
|
|
<dt><em>Immediate</em></dt>
|
|
<dd><p>‘<samp>#<var>number</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Data Register</em></dt>
|
|
<dd><p>‘<samp>%d0</samp>’ through ‘<samp>%d7</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Address Register</em></dt>
|
|
<dd><p>‘<samp>%a0</samp>’ through ‘<samp>%a7</samp>’<br>
|
|
‘<samp>%a7</samp>’ is also known as ‘<samp>%sp</samp>’, i.e., the Stack Pointer. <code>%a6</code>
|
|
is also known as ‘<samp>%fp</samp>’, the Frame Pointer.
|
|
</p>
|
|
</dd>
|
|
<dt><em>Address Register Indirect</em></dt>
|
|
<dd><p>‘<samp>%a0@</samp>’ through ‘<samp>%a7@</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Address Register Postincrement</em></dt>
|
|
<dd><p>‘<samp>%a0@+</samp>’ through ‘<samp>%a7@+</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Address Register Predecrement</em></dt>
|
|
<dd><p>‘<samp>%a0@-</samp>’ through ‘<samp>%a7@-</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Indirect Plus Offset</em></dt>
|
|
<dd><p>‘<samp><var>apc</var>@(<var>number</var>)</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Index</em></dt>
|
|
<dd><p>‘<samp><var>apc</var>@(<var>number</var>,<var>register</var>:<var>size</var>:<var>scale</var>)</samp>’
|
|
</p>
|
|
<p>The <var>number</var> may be omitted.
|
|
</p>
|
|
</dd>
|
|
<dt><em>Postindex</em></dt>
|
|
<dd><p>‘<samp><var>apc</var>@(<var>number</var>)@(<var>onumber</var>,<var>register</var>:<var>size</var>:<var>scale</var>)</samp>’
|
|
</p>
|
|
<p>The <var>onumber</var> or the <var>register</var>, but not both, may be omitted.
|
|
</p>
|
|
</dd>
|
|
<dt><em>Preindex</em></dt>
|
|
<dd><p>‘<samp><var>apc</var>@(<var>number</var>,<var>register</var>:<var>size</var>:<var>scale</var>)@(<var>onumber</var>)</samp>’
|
|
</p>
|
|
<p>The <var>number</var> may be omitted. Omitting the <var>register</var> produces
|
|
the Postindex addressing mode.
|
|
</p>
|
|
</dd>
|
|
<dt><em>Absolute</em></dt>
|
|
<dd><p>‘<samp><var>symbol</var></samp>’, or ‘<samp><var>digits</var></samp>’, optionally followed by
|
|
‘<samp>:b</samp>’, ‘<samp>:w</samp>’, or ‘<samp>:l</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M68K_002dMoto_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M68K_002dFloat" accesskey="n" rel="next">M68K-Float</a>, Previous: <a href="#M68K_002dSyntax" accesskey="p" rel="previous">M68K-Syntax</a>, Up: <a href="#M68K_002dDependent" accesskey="u" rel="up">M68K-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Motorola-Syntax"></a>
|
|
<h4 class="subsection">9.22.3 Motorola Syntax</h4>
|
|
|
|
<a name="index-Motorola-syntax-for-the-680x0"></a>
|
|
<a name="index-alternate-syntax-for-the-680x0"></a>
|
|
|
|
<p>The standard Motorola syntax for this chip differs from the syntax
|
|
already discussed (see <a href="#M68K_002dSyntax">Syntax</a>). <code>as</code> can
|
|
accept Motorola syntax for operands, even if <small>MIT</small> syntax is used for
|
|
other operands in the same instruction. The two kinds of syntax are
|
|
fully compatible.
|
|
</p>
|
|
<p>In the following table <var>apc</var> stands for any of the address registers
|
|
(‘<samp>%a0</samp>’ through ‘<samp>%a7</samp>’), the program counter (‘<samp>%pc</samp>’), the
|
|
zero-address relative to the program counter (‘<samp>%zpc</samp>’), or a
|
|
suppressed address register (‘<samp>%za0</samp>’ through ‘<samp>%za7</samp>’). The use
|
|
of <var>size</var> means one of ‘<samp>w</samp>’ or ‘<samp>l</samp>’, and it may always be
|
|
omitted along with the leading dot. The use of <var>scale</var> means one of
|
|
‘<samp>1</samp>’, ‘<samp>2</samp>’, ‘<samp>4</samp>’, or ‘<samp>8</samp>’, and it may always be omitted
|
|
along with the leading asterisk.
|
|
</p>
|
|
<p>The following additional addressing modes are understood:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><em>Address Register Indirect</em></dt>
|
|
<dd><p>‘<samp>(%a0)</samp>’ through ‘<samp>(%a7)</samp>’<br>
|
|
‘<samp>%a7</samp>’ is also known as ‘<samp>%sp</samp>’, i.e., the Stack Pointer. <code>%a6</code>
|
|
is also known as ‘<samp>%fp</samp>’, the Frame Pointer.
|
|
</p>
|
|
</dd>
|
|
<dt><em>Address Register Postincrement</em></dt>
|
|
<dd><p>‘<samp>(%a0)+</samp>’ through ‘<samp>(%a7)+</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Address Register Predecrement</em></dt>
|
|
<dd><p>‘<samp>-(%a0)</samp>’ through ‘<samp>-(%a7)</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Indirect Plus Offset</em></dt>
|
|
<dd><p>‘<samp><var>number</var>(<var>%a0</var>)</samp>’ through ‘<samp><var>number</var>(<var>%a7</var>)</samp>’,
|
|
or ‘<samp><var>number</var>(<var>%pc</var>)</samp>’.
|
|
</p>
|
|
<p>The <var>number</var> may also appear within the parentheses, as in
|
|
‘<samp>(<var>number</var>,<var>%a0</var>)</samp>’. When used with the <var>pc</var>, the
|
|
<var>number</var> may be omitted (with an address register, omitting the
|
|
<var>number</var> produces Address Register Indirect mode).
|
|
</p>
|
|
</dd>
|
|
<dt><em>Index</em></dt>
|
|
<dd><p>‘<samp><var>number</var>(<var>apc</var>,<var>register</var>.<var>size</var>*<var>scale</var>)</samp>’
|
|
</p>
|
|
<p>The <var>number</var> may be omitted, or it may appear within the
|
|
parentheses. The <var>apc</var> may be omitted. The <var>register</var> and the
|
|
<var>apc</var> may appear in either order. If both <var>apc</var> and
|
|
<var>register</var> are address registers, and the <var>size</var> and <var>scale</var>
|
|
are omitted, then the first register is taken as the base register, and
|
|
the second as the index register.
|
|
</p>
|
|
</dd>
|
|
<dt><em>Postindex</em></dt>
|
|
<dd><p>‘<samp>([<var>number</var>,<var>apc</var>],<var>register</var>.<var>size</var>*<var>scale</var>,<var>onumber</var>)</samp>’
|
|
</p>
|
|
<p>The <var>onumber</var>, or the <var>register</var>, or both, may be omitted.
|
|
Either the <var>number</var> or the <var>apc</var> may be omitted, but not both.
|
|
</p>
|
|
</dd>
|
|
<dt><em>Preindex</em></dt>
|
|
<dd><p>‘<samp>([<var>number</var>,<var>apc</var>,<var>register</var>.<var>size</var>*<var>scale</var>],<var>onumber</var>)</samp>’
|
|
</p>
|
|
<p>The <var>number</var>, or the <var>apc</var>, or the <var>register</var>, or any two of
|
|
them, may be omitted. The <var>onumber</var> may be omitted. The
|
|
<var>register</var> and the <var>apc</var> may appear in either order. If both
|
|
<var>apc</var> and <var>register</var> are address registers, and the <var>size</var>
|
|
and <var>scale</var> are omitted, then the first register is taken as the
|
|
base register, and the second as the index register.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M68K_002dFloat"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M68K_002dDirectives" accesskey="n" rel="next">M68K-Directives</a>, Previous: <a href="#M68K_002dMoto_002dSyntax" accesskey="p" rel="previous">M68K-Moto-Syntax</a>, Up: <a href="#M68K_002dDependent" accesskey="u" rel="up">M68K-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-8"></a>
|
|
<h4 class="subsection">9.22.4 Floating Point</h4>
|
|
|
|
<a name="index-floating-point_002c-M680x0"></a>
|
|
<a name="index-M680x0-floating-point"></a>
|
|
<p>Packed decimal (P) format floating literals are not supported.
|
|
Feel free to add the code!
|
|
</p>
|
|
<p>The floating point formats generated by directives are these.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-float-directive_002c-M680x0"></a>
|
|
</dd>
|
|
<dt><code>.float</code></dt>
|
|
<dd><p><code>Single</code> precision floating point constants.
|
|
</p>
|
|
<a name="index-double-directive_002c-M680x0"></a>
|
|
</dd>
|
|
<dt><code>.double</code></dt>
|
|
<dd><p><code>Double</code> precision floating point constants.
|
|
</p>
|
|
<a name="index-extend-directive-M680x0"></a>
|
|
<a name="index-ldouble-directive-M680x0"></a>
|
|
</dd>
|
|
<dt><code>.extend</code></dt>
|
|
<dt><code>.ldouble</code></dt>
|
|
<dd><p><code>Extended</code> precision (<code>long double</code>) floating point constants.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M68K_002dDirectives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M68K_002dopcodes" accesskey="n" rel="next">M68K-opcodes</a>, Previous: <a href="#M68K_002dFloat" accesskey="p" rel="previous">M68K-Float</a>, Up: <a href="#M68K_002dDependent" accesskey="u" rel="up">M68K-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="g_t680x0-Machine-Directives"></a>
|
|
<h4 class="subsection">9.22.5 680x0 Machine Directives</h4>
|
|
|
|
<a name="index-M680x0-directives"></a>
|
|
<a name="index-directives_002c-M680x0"></a>
|
|
<p>In order to be compatible with the Sun assembler the 680x0 assembler
|
|
understands the following directives.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-data1-directive_002c-M680x0"></a>
|
|
</dd>
|
|
<dt><code>.data1</code></dt>
|
|
<dd><p>This directive is identical to a <code>.data 1</code> directive.
|
|
</p>
|
|
<a name="index-data2-directive_002c-M680x0"></a>
|
|
</dd>
|
|
<dt><code>.data2</code></dt>
|
|
<dd><p>This directive is identical to a <code>.data 2</code> directive.
|
|
</p>
|
|
<a name="index-even-directive_002c-M680x0"></a>
|
|
</dd>
|
|
<dt><code>.even</code></dt>
|
|
<dd><p>This directive is a special case of the <code>.align</code> directive; it
|
|
aligns the output to an even byte boundary.
|
|
</p>
|
|
<a name="index-skip-directive_002c-M680x0"></a>
|
|
</dd>
|
|
<dt><code>.skip</code></dt>
|
|
<dd><p>This directive is identical to a <code>.space</code> directive.
|
|
</p>
|
|
<a name="index-arch-directive_002c-M680x0"></a>
|
|
</dd>
|
|
<dt><code>.arch <var>name</var></code></dt>
|
|
<dd><p>Select the target architecture and extension features. Valid values
|
|
for <var>name</var> are the same as for the <samp>-march</samp> command-line
|
|
option. This directive cannot be specified after
|
|
any instructions have been assembled. If it is given multiple times,
|
|
or in conjunction with the <samp>-march</samp> option, all uses must be for
|
|
the same architecture and extension set.
|
|
</p>
|
|
<a name="index-cpu-directive_002c-M680x0"></a>
|
|
</dd>
|
|
<dt><code>.cpu <var>name</var></code></dt>
|
|
<dd><p>Select the target cpu. Valid values
|
|
for <var>name</var> are the same as for the <samp>-mcpu</samp> command-line
|
|
option. This directive cannot be specified after
|
|
any instructions have been assembled. If it is given multiple times,
|
|
or in conjunction with the <samp>-mopt</samp> option, all uses must be for
|
|
the same cpu.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M68K_002dopcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#M68K_002dDirectives" accesskey="p" rel="previous">M68K-Directives</a>, Up: <a href="#M68K_002dDependent" accesskey="u" rel="up">M68K-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-12"></a>
|
|
<h4 class="subsection">9.22.6 Opcodes</h4>
|
|
|
|
<a name="index-M680x0-opcodes"></a>
|
|
<a name="index-opcodes_002c-M680x0"></a>
|
|
<a name="index-instruction-set_002c-M680x0"></a>
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#M68K_002dBranch" accesskey="1">M68K-Branch</a>:</td><td> </td><td align="left" valign="top">Branch Improvement
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M68K_002dChars" accesskey="2">M68K-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="M68K_002dBranch"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M68K_002dChars" accesskey="n" rel="next">M68K-Chars</a>, Up: <a href="#M68K_002dopcodes" accesskey="u" rel="up">M68K-opcodes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Branch-Improvement"></a>
|
|
<h4 class="subsubsection">9.22.6.1 Branch Improvement</h4>
|
|
|
|
<a name="index-pseudo_002dopcodes_002c-M680x0"></a>
|
|
<a name="index-M680x0-pseudo_002dopcodes"></a>
|
|
<a name="index-branch-improvement_002c-M680x0"></a>
|
|
<a name="index-M680x0-branch-improvement"></a>
|
|
<p>Certain pseudo opcodes are permitted for branch instructions.
|
|
They expand to the shortest branch instruction that reach the
|
|
target. Generally these mnemonics are made by substituting ‘<samp>j</samp>’ for
|
|
‘<samp>b</samp>’ at the start of a Motorola mnemonic.
|
|
</p>
|
|
<p>The following table summarizes the pseudo-operations. A <code>*</code> flags
|
|
cases that are more fully described after the table:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> Displacement
|
|
+------------------------------------------------------------
|
|
| 68020 68000/10, not PC-relative OK
|
|
Pseudo-Op |BYTE WORD LONG ABSOLUTE LONG JUMP **
|
|
+------------------------------------------------------------
|
|
jbsr |bsrs bsrw bsrl jsr
|
|
jra |bras braw bral jmp
|
|
* jXX |bXXs bXXw bXXl bNXs;jmp
|
|
* dbXX | N/A dbXXw dbXX;bras;bral dbXX;bras;jmp
|
|
fjXX | N/A fbXXw fbXXl N/A
|
|
|
|
XX: condition
|
|
NX: negative of condition XX
|
|
|
|
</pre></div>
|
|
<div align="center"><code>*</code>—see full description below
|
|
</div><div align="center"><code>**</code>—this expansion mode is disallowed by ‘<samp>--pcrel</samp>’
|
|
</div>
|
|
<dl compact="compact">
|
|
<dt><code>jbsr</code></dt>
|
|
<dt><code>jra</code></dt>
|
|
<dd><p>These are the simplest jump pseudo-operations; they always map to one
|
|
particular machine instruction, depending on the displacement to the
|
|
branch target. This instruction will be a byte or word branch is that
|
|
is sufficient. Otherwise, a long branch will be emitted if available.
|
|
If no long branches are available and the ‘<samp>--pcrel</samp>’ option is not
|
|
given, an absolute long jump will be emitted instead. If no long
|
|
branches are available, the ‘<samp>--pcrel</samp>’ option is given, and a word
|
|
branch cannot reach the target, an error message is generated.
|
|
</p>
|
|
<p>In addition to standard branch operands, <code>as</code> allows these
|
|
pseudo-operations to have all operands that are allowed for jsr and jmp,
|
|
substituting these instructions if the operand given is not valid for a
|
|
branch instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>j<var>XX</var></code></dt>
|
|
<dd><p>Here, ‘<samp>j<var>XX</var></samp>’ stands for an entire family of pseudo-operations,
|
|
where <var>XX</var> is a conditional branch or condition-code test. The full
|
|
list of pseudo-ops in this family is:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> jhi jls jcc jcs jne jeq jvc
|
|
jvs jpl jmi jge jlt jgt jle
|
|
</pre></div>
|
|
|
|
<p>Usually, each of these pseudo-operations expands to a single branch
|
|
instruction. However, if a word branch is not sufficient, no long branches
|
|
are available, and the ‘<samp>--pcrel</samp>’ option is not given, <code>as</code>
|
|
issues a longer code fragment in terms of <var>NX</var>, the opposite condition
|
|
to <var>XX</var>. For example, under these conditions:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> j<var>XX</var> foo
|
|
</pre></div>
|
|
<p>gives
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> b<var>NX</var>s oof
|
|
jmp foo
|
|
oof:
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>db<var>XX</var></code></dt>
|
|
<dd><p>The full family of pseudo-operations covered here is
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> dbhi dbls dbcc dbcs dbne dbeq dbvc
|
|
dbvs dbpl dbmi dbge dblt dbgt dble
|
|
dbf dbra dbt
|
|
</pre></div>
|
|
|
|
<p>Motorola ‘<samp>db<var>XX</var></samp>’ instructions allow word displacements only. When
|
|
a word displacement is sufficient, each of these pseudo-operations expands
|
|
to the corresponding Motorola instruction. When a word displacement is not
|
|
sufficient and long branches are available, when the source reads
|
|
‘<samp>db<var>XX</var> foo</samp>’, <code>as</code> emits
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> db<var>XX</var> oo1
|
|
bras oo2
|
|
oo1:bral foo
|
|
oo2:
|
|
</pre></div>
|
|
|
|
<p>If, however, long branches are not available and the ‘<samp>--pcrel</samp>’ option is
|
|
not given, <code>as</code> emits
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> db<var>XX</var> oo1
|
|
bras oo2
|
|
oo1:jmp foo
|
|
oo2:
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>fj<var>XX</var></code></dt>
|
|
<dd><p>This family includes
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> fjne fjeq fjge fjlt fjgt fjle fjf
|
|
fjt fjgl fjgle fjnge fjngl fjngle fjngt
|
|
fjnle fjnlt fjoge fjogl fjogt fjole fjolt
|
|
fjor fjseq fjsf fjsne fjst fjueq fjuge
|
|
fjugt fjule fjult fjun
|
|
</pre></div>
|
|
|
|
<p>Each of these pseudo-operations always expands to a single Motorola
|
|
coprocessor branch instruction, word or long. All Motorola coprocessor
|
|
branch instructions allow both word and long displacements.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M68K_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#M68K_002dBranch" accesskey="p" rel="previous">M68K-Branch</a>, Up: <a href="#M68K_002dopcodes" accesskey="u" rel="up">M68K-opcodes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-17"></a>
|
|
<h4 class="subsubsection">9.22.6.2 Special Characters</h4>
|
|
|
|
<a name="index-special-characters_002c-M680x0"></a>
|
|
|
|
<a name="index-M680x0-line-comment-character"></a>
|
|
<a name="index-line-comment-character_002c-M680x0"></a>
|
|
<a name="index-comments_002c-M680x0"></a>
|
|
<p>Line comments are introduced by the ‘<samp>|</samp>’ character appearing
|
|
anywhere on a line, unless the <samp>--bitwise-or</samp> command-line option
|
|
has been specified.
|
|
</p>
|
|
<p>An asterisk (‘<samp>*</samp>’) as the first character on a line marks the
|
|
start of a line comment as well.
|
|
</p>
|
|
<a name="index-M680x0-immediate-character"></a>
|
|
<a name="index-immediate-character_002c-M680x0"></a>
|
|
|
|
<p>A hash character (‘<samp>#</samp>’) as the first character on a line also
|
|
marks the start of a line comment, but in this case it could also be a
|
|
logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>). If the hash character
|
|
appears elsewhere on a line it is used to introduce an immediate
|
|
value. (This is for compatibility with Sun’s assembler).
|
|
</p>
|
|
<a name="index-M680x0-line-separator"></a>
|
|
<a name="index-line-separator_002c-M680x0"></a>
|
|
|
|
<p>Multiple statements on the same line can appear if they are separated
|
|
by the ‘<samp>;</samp>’ character.
|
|
</p>
|
|
<hr>
|
|
<a name="M68HC11_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#S12Z_002dDependent" accesskey="n" rel="next">S12Z-Dependent</a>, Previous: <a href="#M68K_002dDependent" accesskey="p" rel="previous">M68K-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="M68HC11-and-M68HC12-Dependent-Features"></a>
|
|
<h3 class="section">9.23 M68HC11 and M68HC12 Dependent Features</h3>
|
|
|
|
<a name="index-M68HC11-and-M68HC12-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#M68HC11_002dOpts" accesskey="1">M68HC11-Opts</a>:</td><td> </td><td align="left" valign="top">M68HC11 and M68HC12 Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M68HC11_002dSyntax" accesskey="2">M68HC11-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M68HC11_002dModifiers" accesskey="3">M68HC11-Modifiers</a>:</td><td> </td><td align="left" valign="top">Symbolic Operand Modifiers
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M68HC11_002dDirectives" accesskey="4">M68HC11-Directives</a>:</td><td> </td><td align="left" valign="top">Assembler Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M68HC11_002dFloat" accesskey="5">M68HC11-Float</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#M68HC11_002dopcodes" accesskey="6">M68HC11-opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="M68HC11_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M68HC11_002dSyntax" accesskey="n" rel="next">M68HC11-Syntax</a>, Up: <a href="#M68HC11_002dDependent" accesskey="u" rel="up">M68HC11-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="M68HC11-and-M68HC12-Options"></a>
|
|
<h4 class="subsection">9.23.1 M68HC11 and M68HC12 Options</h4>
|
|
|
|
<a name="index-options_002c-M68HC11"></a>
|
|
<a name="index-M68HC11-options"></a>
|
|
<p>The Motorola 68HC11 and 68HC12 version of <code>as</code> have a few machine
|
|
dependent options.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dm68hc11"></a>
|
|
</dd>
|
|
<dt><code>-m68hc11</code></dt>
|
|
<dd><p>This option switches the assembler into the M68HC11 mode. In this mode,
|
|
the assembler only accepts 68HC11 operands and mnemonics. It produces
|
|
code for the 68HC11.
|
|
</p>
|
|
<a name="index-_002dm68hc12"></a>
|
|
</dd>
|
|
<dt><code>-m68hc12</code></dt>
|
|
<dd><p>This option switches the assembler into the M68HC12 mode. In this mode,
|
|
the assembler also accepts 68HC12 operands and mnemonics. It produces
|
|
code for the 68HC12. A few 68HC11 instructions are replaced by
|
|
some 68HC12 instructions as recommended by Motorola specifications.
|
|
</p>
|
|
<a name="index-_002dm68hcs12"></a>
|
|
</dd>
|
|
<dt><code>-m68hcs12</code></dt>
|
|
<dd><p>This option switches the assembler into the M68HCS12 mode. This mode is
|
|
similar to ‘<samp>-m68hc12</samp>’ but specifies to assemble for the 68HCS12
|
|
series. The only difference is on the assembling of the ‘<samp>movb</samp>’
|
|
and ‘<samp>movw</samp>’ instruction when a PC-relative operand is used.
|
|
</p>
|
|
<a name="index-_002dmm9s12x"></a>
|
|
</dd>
|
|
<dt><code>-mm9s12x</code></dt>
|
|
<dd><p>This option switches the assembler into the M9S12X mode. This mode is
|
|
similar to ‘<samp>-m68hc12</samp>’ but specifies to assemble for the S12X
|
|
series which is a superset of the HCS12.
|
|
</p>
|
|
<a name="index-_002dmm9s12xg"></a>
|
|
</dd>
|
|
<dt><code>-mm9s12xg</code></dt>
|
|
<dd><p>This option switches the assembler into the XGATE mode for the RISC
|
|
co-processor featured on some S12X-family chips.
|
|
</p>
|
|
<a name="index-_002d_002dxgate_002dramoffset"></a>
|
|
</dd>
|
|
<dt><code>--xgate-ramoffset</code></dt>
|
|
<dd><p>This option instructs the linker to offset RAM addresses from S12X address
|
|
space into XGATE address space.
|
|
</p>
|
|
<a name="index-_002dmshort"></a>
|
|
</dd>
|
|
<dt><code>-mshort</code></dt>
|
|
<dd><p>This option controls the ABI and indicates to use a 16-bit integer ABI.
|
|
It has no effect on the assembled instructions.
|
|
This is the default.
|
|
</p>
|
|
<a name="index-_002dmlong"></a>
|
|
</dd>
|
|
<dt><code>-mlong</code></dt>
|
|
<dd><p>This option controls the ABI and indicates to use a 32-bit integer ABI.
|
|
</p>
|
|
<a name="index-_002dmshort_002ddouble"></a>
|
|
</dd>
|
|
<dt><code>-mshort-double</code></dt>
|
|
<dd><p>This option controls the ABI and indicates to use a 32-bit float ABI.
|
|
This is the default.
|
|
</p>
|
|
<a name="index-_002dmlong_002ddouble"></a>
|
|
</dd>
|
|
<dt><code>-mlong-double</code></dt>
|
|
<dd><p>This option controls the ABI and indicates to use a 64-bit float ABI.
|
|
</p>
|
|
<a name="index-_002d_002dstrict_002ddirect_002dmode"></a>
|
|
</dd>
|
|
<dt><code>--strict-direct-mode</code></dt>
|
|
<dd><p>You can use the ‘<samp>--strict-direct-mode</samp>’ option to disable
|
|
the automatic translation of direct page mode addressing into
|
|
extended mode when the instruction does not support direct mode.
|
|
For example, the ‘<samp>clr</samp>’ instruction does not support direct page
|
|
mode addressing. When it is used with the direct page mode,
|
|
<code>as</code> will ignore it and generate an absolute addressing.
|
|
This option prevents <code>as</code> from doing this, and the wrong
|
|
usage of the direct page mode will raise an error.
|
|
</p>
|
|
<a name="index-_002d_002dshort_002dbranches"></a>
|
|
</dd>
|
|
<dt><code>--short-branches</code></dt>
|
|
<dd><p>The ‘<samp>--short-branches</samp>’ option turns off the translation of
|
|
relative branches into absolute branches when the branch offset is
|
|
out of range. By default <code>as</code> transforms the relative
|
|
branch (‘<samp>bsr</samp>’, ‘<samp>bgt</samp>’, ‘<samp>bge</samp>’, ‘<samp>beq</samp>’, ‘<samp>bne</samp>’,
|
|
‘<samp>ble</samp>’, ‘<samp>blt</samp>’, ‘<samp>bhi</samp>’, ‘<samp>bcc</samp>’, ‘<samp>bls</samp>’,
|
|
‘<samp>bcs</samp>’, ‘<samp>bmi</samp>’, ‘<samp>bvs</samp>’, ‘<samp>bvs</samp>’, ‘<samp>bra</samp>’) into
|
|
an absolute branch when the offset is out of the -128 .. 127 range.
|
|
In that case, the ‘<samp>bsr</samp>’ instruction is translated into a
|
|
‘<samp>jsr</samp>’, the ‘<samp>bra</samp>’ instruction is translated into a
|
|
‘<samp>jmp</samp>’ and the conditional branches instructions are inverted and
|
|
followed by a ‘<samp>jmp</samp>’. This option disables these translations
|
|
and <code>as</code> will generate an error if a relative branch
|
|
is out of range. This option does not affect the optimization
|
|
associated to the ‘<samp>jbra</samp>’, ‘<samp>jbsr</samp>’ and ‘<samp>jbXX</samp>’ pseudo opcodes.
|
|
</p>
|
|
<a name="index-_002d_002dforce_002dlong_002dbranches"></a>
|
|
</dd>
|
|
<dt><code>--force-long-branches</code></dt>
|
|
<dd><p>The ‘<samp>--force-long-branches</samp>’ option forces the translation of
|
|
relative branches into absolute branches. This option does not affect
|
|
the optimization associated to the ‘<samp>jbra</samp>’, ‘<samp>jbsr</samp>’ and
|
|
‘<samp>jbXX</samp>’ pseudo opcodes.
|
|
</p>
|
|
<a name="index-_002d_002dprint_002dinsn_002dsyntax"></a>
|
|
</dd>
|
|
<dt><code>--print-insn-syntax</code></dt>
|
|
<dd><p>You can use the ‘<samp>--print-insn-syntax</samp>’ option to obtain the
|
|
syntax description of the instruction when an error is detected.
|
|
</p>
|
|
<a name="index-_002d_002dprint_002dopcodes"></a>
|
|
</dd>
|
|
<dt><code>--print-opcodes</code></dt>
|
|
<dd><p>The ‘<samp>--print-opcodes</samp>’ option prints the list of all the
|
|
instructions with their syntax. The first item of each line
|
|
represents the instruction name and the rest of the line indicates
|
|
the possible operands for that instruction. The list is printed
|
|
in alphabetical order. Once the list is printed <code>as</code>
|
|
exits.
|
|
</p>
|
|
<a name="index-_002d_002dgenerate_002dexample"></a>
|
|
</dd>
|
|
<dt><code>--generate-example</code></dt>
|
|
<dd><p>The ‘<samp>--generate-example</samp>’ option is similar to ‘<samp>--print-opcodes</samp>’
|
|
but it generates an example for each instruction instead.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M68HC11_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M68HC11_002dModifiers" accesskey="n" rel="next">M68HC11-Modifiers</a>, Previous: <a href="#M68HC11_002dOpts" accesskey="p" rel="previous">M68HC11-Opts</a>, Up: <a href="#M68HC11_002dDependent" accesskey="u" rel="up">M68HC11-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-18"></a>
|
|
<h4 class="subsection">9.23.2 Syntax</h4>
|
|
|
|
<a name="index-M68HC11-syntax"></a>
|
|
<a name="index-syntax_002c-M68HC11"></a>
|
|
|
|
<p>In the M68HC11 syntax, the instruction name comes first and it may
|
|
be followed by one or several operands (up to three). Operands are
|
|
separated by comma (‘<samp>,</samp>’). In the normal mode,
|
|
<code>as</code> will complain if too many operands are specified for
|
|
a given instruction. In the MRI mode (turned on with ‘<samp>-M</samp>’ option),
|
|
it will treat them as comments. Example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">inx
|
|
lda #23
|
|
bset 2,x #4
|
|
brclr *bot #8 foo
|
|
</pre></div>
|
|
|
|
<a name="index-line-comment-character_002c-M68HC11"></a>
|
|
<a name="index-M68HC11-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>;</samp>’ character or a ‘<samp>!</samp>’ character anywhere
|
|
on a line indicates the start of a comment that extends to the end of
|
|
that line.
|
|
</p>
|
|
<p>A ‘<samp>*</samp>’ or a ‘<samp>#</samp>’ character at the start of a line also
|
|
introduces a line comment, but these characters do not work elsewhere
|
|
on the line. If the first character of the line is a ‘<samp>#</samp>’ then as
|
|
well as starting a comment, the line could also be logical line number
|
|
directive (see <a href="#Comments">Comments</a>) or a preprocessor control command
|
|
(see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-M68HC11"></a>
|
|
<a name="index-statement-separator_002c-M68HC11"></a>
|
|
<a name="index-M68HC11-line-separator"></a>
|
|
<p>The M68HC11 assembler does not currently support a line separator
|
|
character.
|
|
</p>
|
|
<a name="index-M68HC11-addressing-modes"></a>
|
|
<a name="index-addressing-modes_002c-M68HC11"></a>
|
|
<p>The following addressing modes are understood for 68HC11 and 68HC12:
|
|
</p><dl compact="compact">
|
|
<dt><em>Immediate</em></dt>
|
|
<dd><p>‘<samp>#<var>number</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Address Register</em></dt>
|
|
<dd><p>‘<samp><var>number</var>,X</samp>’, ‘<samp><var>number</var>,Y</samp>’
|
|
</p>
|
|
<p>The <var>number</var> may be omitted in which case 0 is assumed.
|
|
</p>
|
|
</dd>
|
|
<dt><em>Direct Addressing mode</em></dt>
|
|
<dd><p>‘<samp>*<var>symbol</var></samp>’, or ‘<samp>*<var>digits</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Absolute</em></dt>
|
|
<dd><p>‘<samp><var>symbol</var></samp>’, or ‘<samp><var>digits</var></samp>’
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The M68HC12 has other more complex addressing modes. All of them
|
|
are supported and they are represented below:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><em>Constant Offset Indexed Addressing Mode</em></dt>
|
|
<dd><p>‘<samp><var>number</var>,<var>reg</var></samp>’
|
|
</p>
|
|
<p>The <var>number</var> may be omitted in which case 0 is assumed.
|
|
The register can be either ‘<samp>X</samp>’, ‘<samp>Y</samp>’, ‘<samp>SP</samp>’ or
|
|
‘<samp>PC</samp>’. The assembler will use the smaller post-byte definition
|
|
according to the constant value (5-bit constant offset, 9-bit constant
|
|
offset or 16-bit constant offset). If the constant is not known by
|
|
the assembler it will use the 16-bit constant offset post-byte and the value
|
|
will be resolved at link time.
|
|
</p>
|
|
</dd>
|
|
<dt><em>Offset Indexed Indirect</em></dt>
|
|
<dd><p>‘<samp>[<var>number</var>,<var>reg</var>]</samp>’
|
|
</p>
|
|
<p>The register can be either ‘<samp>X</samp>’, ‘<samp>Y</samp>’, ‘<samp>SP</samp>’ or ‘<samp>PC</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><em>Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement</em></dt>
|
|
<dd><p>‘<samp><var>number</var>,-<var>reg</var></samp>’
|
|
‘<samp><var>number</var>,+<var>reg</var></samp>’
|
|
‘<samp><var>number</var>,<var>reg</var>-</samp>’
|
|
‘<samp><var>number</var>,<var>reg</var>+</samp>’
|
|
</p>
|
|
<p>The number must be in the range ‘<samp>-8</samp>’..‘<samp>+8</samp>’ and must not be 0.
|
|
The register can be either ‘<samp>X</samp>’, ‘<samp>Y</samp>’, ‘<samp>SP</samp>’ or ‘<samp>PC</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><em>Accumulator Offset</em></dt>
|
|
<dd><p>‘<samp><var>acc</var>,<var>reg</var></samp>’
|
|
</p>
|
|
<p>The accumulator register can be either ‘<samp>A</samp>’, ‘<samp>B</samp>’ or ‘<samp>D</samp>’.
|
|
The register can be either ‘<samp>X</samp>’, ‘<samp>Y</samp>’, ‘<samp>SP</samp>’ or ‘<samp>PC</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><em>Accumulator D offset indexed-indirect</em></dt>
|
|
<dd><p>‘<samp>[D,<var>reg</var>]</samp>’
|
|
</p>
|
|
<p>The register can be either ‘<samp>X</samp>’, ‘<samp>Y</samp>’, ‘<samp>SP</samp>’ or ‘<samp>PC</samp>’.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">ldab 1024,sp
|
|
ldd [10,x]
|
|
orab 3,+x
|
|
stab -2,y-
|
|
ldx a,pc
|
|
sty [d,sp]
|
|
</pre></div>
|
|
|
|
|
|
<hr>
|
|
<a name="M68HC11_002dModifiers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M68HC11_002dDirectives" accesskey="n" rel="next">M68HC11-Directives</a>, Previous: <a href="#M68HC11_002dSyntax" accesskey="p" rel="previous">M68HC11-Syntax</a>, Up: <a href="#M68HC11_002dDependent" accesskey="u" rel="up">M68HC11-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbolic-Operand-Modifiers-1"></a>
|
|
<h4 class="subsection">9.23.3 Symbolic Operand Modifiers</h4>
|
|
|
|
<a name="index-M68HC11-modifiers"></a>
|
|
<a name="index-syntax_002c-M68HC11-1"></a>
|
|
|
|
<p>The assembler supports several modifiers when using symbol addresses
|
|
in 68HC11 and 68HC12 instruction operands. The general syntax is
|
|
the following:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">%modifier(symbol)
|
|
</pre></div>
|
|
|
|
<dl compact="compact">
|
|
<dd><a name="index-symbol-modifiers-3"></a>
|
|
</dd>
|
|
<dt><code>%addr</code></dt>
|
|
<dd><p>This modifier indicates to the assembler and linker to use
|
|
the 16-bit physical address corresponding to the symbol. This is intended
|
|
to be used on memory window systems to map a symbol in the memory bank window.
|
|
If the symbol is in a memory expansion part, the physical address
|
|
corresponds to the symbol address within the memory bank window.
|
|
If the symbol is not in a memory expansion part, this is the symbol address
|
|
(using or not using the %addr modifier has no effect in that case).
|
|
</p>
|
|
</dd>
|
|
<dt><code>%page</code></dt>
|
|
<dd><p>This modifier indicates to use the memory page number corresponding
|
|
to the symbol. If the symbol is in a memory expansion part, its page
|
|
number is computed by the linker as a number used to map the page containing
|
|
the symbol in the memory bank window. If the symbol is not in a memory
|
|
expansion part, the page number is 0.
|
|
</p>
|
|
</dd>
|
|
<dt><code>%hi</code></dt>
|
|
<dd><p>This modifier indicates to use the 8-bit high part of the physical
|
|
address of the symbol.
|
|
</p>
|
|
</dd>
|
|
<dt><code>%lo</code></dt>
|
|
<dd><p>This modifier indicates to use the 8-bit low part of the physical
|
|
address of the symbol.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For example a 68HC12 call to a function ‘<samp>foo_example</samp>’ stored in memory
|
|
expansion part could be written as follows:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">call %addr(foo_example),%page(foo_example)
|
|
</pre></div>
|
|
|
|
<p>and this is equivalent to
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">call foo_example
|
|
</pre></div>
|
|
|
|
<p>And for 68HC11 it could be written as follows:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">ldab #%page(foo_example)
|
|
stab _page_switch
|
|
jsr %addr(foo_example)
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="M68HC11_002dDirectives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M68HC11_002dFloat" accesskey="n" rel="next">M68HC11-Float</a>, Previous: <a href="#M68HC11_002dModifiers" accesskey="p" rel="previous">M68HC11-Modifiers</a>, Up: <a href="#M68HC11_002dDependent" accesskey="u" rel="up">M68HC11-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-Directives-2"></a>
|
|
<h4 class="subsection">9.23.4 Assembler Directives</h4>
|
|
|
|
<a name="index-assembler-directives_002c-M68HC11"></a>
|
|
<a name="index-assembler-directives_002c-M68HC12"></a>
|
|
<a name="index-M68HC11-assembler-directives"></a>
|
|
<a name="index-M68HC12-assembler-directives"></a>
|
|
|
|
<p>The 68HC11 and 68HC12 version of <code>as</code> have the following
|
|
specific assembler directives:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>.relax</code></dt>
|
|
<dd><a name="index-assembler-directive-_002erelax_002c-M68HC11"></a>
|
|
<a name="index-M68HC11-assembler-directive-_002erelax"></a>
|
|
<p>The relax directive is used by the ‘<samp>GNU Compiler</samp>’ to emit a specific
|
|
relocation to mark a group of instructions for linker relaxation.
|
|
The sequence of instructions within the group must be known to the linker
|
|
so that relaxation can be performed.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.mode [mshort|mlong|mshort-double|mlong-double]</code></dt>
|
|
<dd><a name="index-assembler-directive-_002emode_002c-M68HC11"></a>
|
|
<a name="index-M68HC11-assembler-directive-_002emode"></a>
|
|
<p>This directive specifies the ABI. It overrides the ‘<samp>-mshort</samp>’,
|
|
‘<samp>-mlong</samp>’, ‘<samp>-mshort-double</samp>’ and ‘<samp>-mlong-double</samp>’ options.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.far <var>symbol</var></code></dt>
|
|
<dd><a name="index-assembler-directive-_002efar_002c-M68HC11"></a>
|
|
<a name="index-M68HC11-assembler-directive-_002efar"></a>
|
|
<p>This directive marks the symbol as a ‘<samp>far</samp>’ symbol meaning that it
|
|
uses a ‘<samp>call/rtc</samp>’ calling convention as opposed to ‘<samp>jsr/rts</samp>’.
|
|
During a final link, the linker will identify references to the ‘<samp>far</samp>’
|
|
symbol and will verify the proper calling convention.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.interrupt <var>symbol</var></code></dt>
|
|
<dd><a name="index-assembler-directive-_002einterrupt_002c-M68HC11"></a>
|
|
<a name="index-M68HC11-assembler-directive-_002einterrupt"></a>
|
|
<p>This directive marks the symbol as an interrupt entry point.
|
|
This information is then used by the debugger to correctly unwind the
|
|
frame across interrupts.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.xrefb <var>symbol</var></code></dt>
|
|
<dd><a name="index-assembler-directive-_002exrefb_002c-M68HC11"></a>
|
|
<a name="index-M68HC11-assembler-directive-_002exrefb"></a>
|
|
<p>This directive is defined for compatibility with the
|
|
‘<samp>Specification for Motorola 8 and 16-Bit Assembly Language Input
|
|
Standard</samp>’ and is ignored.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M68HC11_002dFloat"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#M68HC11_002dopcodes" accesskey="n" rel="next">M68HC11-opcodes</a>, Previous: <a href="#M68HC11_002dDirectives" accesskey="p" rel="previous">M68HC11-Directives</a>, Up: <a href="#M68HC11_002dDependent" accesskey="u" rel="up">M68HC11-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-9"></a>
|
|
<h4 class="subsection">9.23.5 Floating Point</h4>
|
|
|
|
<a name="index-floating-point_002c-M68HC11"></a>
|
|
<a name="index-M68HC11-floating-point"></a>
|
|
<p>Packed decimal (P) format floating literals are not supported.
|
|
Feel free to add the code!
|
|
</p>
|
|
<p>The floating point formats generated by directives are these.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-float-directive_002c-M68HC11"></a>
|
|
</dd>
|
|
<dt><code>.float</code></dt>
|
|
<dd><p><code>Single</code> precision floating point constants.
|
|
</p>
|
|
<a name="index-double-directive_002c-M68HC11"></a>
|
|
</dd>
|
|
<dt><code>.double</code></dt>
|
|
<dd><p><code>Double</code> precision floating point constants.
|
|
</p>
|
|
<a name="index-extend-directive-M68HC11"></a>
|
|
<a name="index-ldouble-directive-M68HC11"></a>
|
|
</dd>
|
|
<dt><code>.extend</code></dt>
|
|
<dt><code>.ldouble</code></dt>
|
|
<dd><p><code>Extended</code> precision (<code>long double</code>) floating point constants.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="M68HC11_002dopcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#M68HC11_002dFloat" accesskey="p" rel="previous">M68HC11-Float</a>, Up: <a href="#M68HC11_002dDependent" accesskey="u" rel="up">M68HC11-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-13"></a>
|
|
<h4 class="subsection">9.23.6 Opcodes</h4>
|
|
|
|
<a name="index-M68HC11-opcodes"></a>
|
|
<a name="index-opcodes_002c-M68HC11"></a>
|
|
<a name="index-instruction-set_002c-M68HC11"></a>
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#M68HC11_002dBranch" accesskey="1">M68HC11-Branch</a>:</td><td> </td><td align="left" valign="top">Branch Improvement
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="M68HC11_002dBranch"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#M68HC11_002dopcodes" accesskey="u" rel="up">M68HC11-opcodes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Branch-Improvement-1"></a>
|
|
<h4 class="subsubsection">9.23.6.1 Branch Improvement</h4>
|
|
|
|
<a name="index-pseudo_002dopcodes_002c-M68HC11"></a>
|
|
<a name="index-M68HC11-pseudo_002dopcodes"></a>
|
|
<a name="index-branch-improvement_002c-M68HC11"></a>
|
|
<a name="index-M68HC11-branch-improvement"></a>
|
|
|
|
<p>Certain pseudo opcodes are permitted for branch instructions.
|
|
They expand to the shortest branch instruction that reach the
|
|
target. Generally these mnemonics are made by prepending ‘<samp>j</samp>’ to
|
|
the start of Motorola mnemonic. These pseudo opcodes are not affected
|
|
by the ‘<samp>--short-branches</samp>’ or ‘<samp>--force-long-branches</samp>’ options.
|
|
</p>
|
|
<p>The following table summarizes the pseudo-operations.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> Displacement Width
|
|
+-------------------------------------------------------------+
|
|
| Options |
|
|
| --short-branches --force-long-branches |
|
|
+--------------------------+----------------------------------+
|
|
Op |BYTE WORD | BYTE WORD |
|
|
+--------------------------+----------------------------------+
|
|
bsr | bsr <pc-rel> <error> | jsr <abs> |
|
|
bra | bra <pc-rel> <error> | jmp <abs> |
|
|
jbsr | bsr <pc-rel> jsr <abs> | bsr <pc-rel> jsr <abs> |
|
|
jbra | bra <pc-rel> jmp <abs> | bra <pc-rel> jmp <abs> |
|
|
bXX | bXX <pc-rel> <error> | bNX +3; jmp <abs> |
|
|
jbXX | bXX <pc-rel> bNX +3; | bXX <pc-rel> bNX +3; jmp <abs> |
|
|
| jmp <abs> | |
|
|
+--------------------------+----------------------------------+
|
|
XX: condition
|
|
NX: negative of condition XX
|
|
|
|
</pre></div>
|
|
|
|
<dl compact="compact">
|
|
<dt><code>jbsr</code></dt>
|
|
<dt><code>jbra</code></dt>
|
|
<dd><p>These are the simplest jump pseudo-operations; they always map to one
|
|
particular machine instruction, depending on the displacement to the
|
|
branch target.
|
|
</p>
|
|
</dd>
|
|
<dt><code>jb<var>XX</var></code></dt>
|
|
<dd><p>Here, ‘<samp>jb<var>XX</var></samp>’ stands for an entire family of pseudo-operations,
|
|
where <var>XX</var> is a conditional branch or condition-code test. The full
|
|
list of pseudo-ops in this family is:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> jbcc jbeq jbge jbgt jbhi jbvs jbpl jblo
|
|
jbcs jbne jblt jble jbls jbvc jbmi
|
|
</pre></div>
|
|
|
|
<p>For the cases of non-PC relative displacements and long displacements,
|
|
<code>as</code> issues a longer code fragment in terms of
|
|
<var>NX</var>, the opposite condition to <var>XX</var>. For example, for the
|
|
non-PC relative case:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> jb<var>XX</var> foo
|
|
</pre></div>
|
|
<p>gives
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> b<var>NX</var>s oof
|
|
jmp foo
|
|
oof:
|
|
</pre></div>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
|
|
<hr>
|
|
<a name="S12Z_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Meta_002dDependent" accesskey="n" rel="next">Meta-Dependent</a>, Previous: <a href="#M68HC11_002dDependent" accesskey="p" rel="previous">M68HC11-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="S12Z-Dependent-Features"></a>
|
|
<h3 class="section">9.24 S12Z Dependent Features</h3>
|
|
|
|
<p>The Freescale S12Z version of <code>as</code> has a few machine
|
|
dependent features.
|
|
</p>
|
|
<a name="index-S12Z-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#S12Z-Options" accesskey="1">S12Z Options</a>:</td><td> </td><td align="left" valign="top">S12Z Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#S12Z-Syntax" accesskey="2">S12Z Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="S12Z-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#S12Z-Syntax" accesskey="n" rel="next">S12Z Syntax</a>, Up: <a href="#S12Z_002dDependent" accesskey="u" rel="up">S12Z-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="S12Z-Options-1"></a>
|
|
<h4 class="subsection">9.24.1 S12Z Options</h4>
|
|
|
|
<a name="index-options_002c-S12Z"></a>
|
|
<a name="index-S12Z-options"></a>
|
|
|
|
<p>The S12Z version of <code>as</code> recognizes the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt>‘<samp>-mreg-prefix=<var>prefix</var></samp>’</dt>
|
|
<dd><a name="index-_002dmreg_002dprefix_003dprefix-option_002c-reg_002dprefix"></a>
|
|
<p>You can use the ‘<samp>-mreg-prefix=<var>pfx</var></samp>’ option to indicate
|
|
that the assembler should expect all register names to be prefixed with the
|
|
string <var>pfx</var>.
|
|
</p>
|
|
<p>For an explanation of what this means and why it might be needed,
|
|
see <a href="#S12Z-Register-Notation">S12Z Register Notation</a>.
|
|
</p>
|
|
|
|
</dd>
|
|
<dt>‘<samp>-mdollar-hex</samp>’</dt>
|
|
<dd><a name="index-_002dmdollar_002dhex-option_002c-dollar_002dhex"></a>
|
|
<a name="index-hexadecimal-prefix_002c-S12Z"></a>
|
|
<p>The ‘<samp>-mdollar-hex</samp>’ option affects the way that literal hexadecimal constants
|
|
are represented. When this option is specified, the assembler will consider
|
|
the ‘<samp>$</samp>’ character as the start of a hexadecimal integer constant. Without
|
|
this option, the standard value of ‘<samp>0x</samp>’ is expected.
|
|
</p>
|
|
<p>If you use this option, then you cannot have symbol names starting with ‘<samp>$</samp>’.
|
|
‘<samp>-mdollar-hex</samp>’ is implied if the ‘<samp>--traditional-format</samp>’
|
|
(see <a href="#traditional_002dformat">traditional-format</a>) is used.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="S12Z-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#S12Z-Options" accesskey="p" rel="previous">S12Z Options</a>, Up: <a href="#S12Z_002dDependent" accesskey="u" rel="up">S12Z-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-19"></a>
|
|
<h4 class="subsection">9.24.2 Syntax</h4>
|
|
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#S12Z-Syntax-Overview" accesskey="1">S12Z Syntax Overview</a>:</td><td> </td><td align="left" valign="top">General description
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#S12Z-Addressing-Modes" accesskey="2">S12Z Addressing Modes</a>:</td><td> </td><td align="left" valign="top">Operands and their semantics
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#S12Z-Register-Notation" accesskey="3">S12Z Register Notation</a>:</td><td> </td><td align="left" valign="top">How to refer to registers
|
|
</td></tr>
|
|
</table>
|
|
|
|
|
|
<a name="index-S12Z-syntax"></a>
|
|
<a name="index-syntax_002c-S12Z"></a>
|
|
|
|
<hr>
|
|
<a name="S12Z-Syntax-Overview"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#S12Z-Addressing-Modes" accesskey="n" rel="next">S12Z Addressing Modes</a>, Up: <a href="#S12Z-Syntax" accesskey="u" rel="up">S12Z Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Overview-2"></a>
|
|
<h4 class="subsubsection">9.24.2.1 Overview</h4>
|
|
|
|
<p>In the S12Z syntax, the instruction name comes first and it may
|
|
be followed by one, or by several operands.
|
|
In most cases the maximum number of operands is three.
|
|
Operands are separated by a comma (‘<samp>,</samp>’).
|
|
A comma however does not act as a separator if it appears within parentheses
|
|
(‘<samp>()</samp>’) or within square brackets (‘<samp>[]</samp>’).
|
|
<code>as</code> will complain if too many, too few or inappropriate operands
|
|
are specified for a given instruction.
|
|
</p>
|
|
<p>Some instructions accept and (in certain situations require) a suffix
|
|
indicating the size of the operand.
|
|
The suffix is separated from the instruction name by a period (‘<samp>.</samp>’)
|
|
and may be one of ‘<samp>b</samp>’, ‘<samp>w</samp>’, ‘<samp>p</samp>’ or ‘<samp>l</samp>’ indicating
|
|
‘byte’ (a single byte), ‘word’ (2 bytes), ‘pointer’ (3 bytes) or ‘long’ (4 bytes)
|
|
respectively.
|
|
</p>
|
|
<p>Example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> bset.b 0xA98, #5
|
|
mov.b #6, 0x2409
|
|
ld d0, #4
|
|
mov.l (d0, x), 0x2409
|
|
inc d0
|
|
cmp d0, #12
|
|
blt *-4
|
|
lea x, 0x2409
|
|
st y, (1, x)
|
|
</pre></div>
|
|
|
|
<a name="index-line-comment-character_002c-S12Z"></a>
|
|
<p>The presence of a ‘<samp>;</samp>’ character anywhere
|
|
on a line indicates the start of a comment that extends to the end of
|
|
that line.
|
|
</p>
|
|
<p>A ‘<samp>*</samp>’ or a ‘<samp>#</samp>’ character at the start of a line also
|
|
introduces a line comment, but these characters do not work elsewhere
|
|
on the line. If the first character of the line is a ‘<samp>#</samp>’ then as
|
|
well as starting a comment, the line could also be logical line number
|
|
directive (see <a href="#Comments">Comments</a>) or a preprocessor control command
|
|
(see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-S12Z"></a>
|
|
<a name="index-statement-separator_002c-S12Z"></a>
|
|
<a name="index-S12Z-line-separator"></a>
|
|
<p>The S12Z assembler does not currently support a line separator
|
|
character.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="S12Z-Addressing-Modes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#S12Z-Register-Notation" accesskey="n" rel="next">S12Z Register Notation</a>, Previous: <a href="#S12Z-Syntax-Overview" accesskey="p" rel="previous">S12Z Syntax Overview</a>, Up: <a href="#S12Z-Syntax" accesskey="u" rel="up">S12Z Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Addressing-Modes-3"></a>
|
|
<h4 class="subsubsection">9.24.2.2 Addressing Modes</h4>
|
|
<a name="index-S12Z-addressing-modes"></a>
|
|
<a name="index-addressing-modes_002c-S12Z"></a>
|
|
|
|
<p>The following addressing modes are understood for the S12Z.
|
|
</p><dl compact="compact">
|
|
<dt><em>Immediate</em></dt>
|
|
<dd><p>‘<samp>#<var>number</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Immediate Bit Field</em></dt>
|
|
<dd><p>‘<samp>#<var>width</var>:<var>offset</var></samp>’
|
|
</p>
|
|
<p>Bit field instructions in the immediate mode require the width and offset to
|
|
be specified.
|
|
The <var>width</var> parameter specifies the number of bits in the field.
|
|
It should be a number in the range [1,32].
|
|
<var>Offset</var> determines the position within the field where the operation
|
|
should start.
|
|
It should be a number in the range [0,31].
|
|
</p>
|
|
</dd>
|
|
<dt><em>Relative</em></dt>
|
|
<dd><p>‘<samp>*<var>symbol</var></samp>’, or ‘<samp>*[+-]<var>digits</var></samp>’
|
|
</p>
|
|
<p>Program counter relative addresses have a width of 15 bits.
|
|
Thus, they must be within the range [-32768, 32767].
|
|
</p>
|
|
</dd>
|
|
<dt><em>Register</em></dt>
|
|
<dd><p>‘<samp><var>reg</var></samp>’
|
|
</p>
|
|
<a name="index-register-names_002c-S12Z"></a>
|
|
<p>Some instructions accept a register as an operand.
|
|
In general, <var>reg</var> may be a
|
|
data register (‘<samp>D0</samp>’, ‘<samp>D1</samp>’ … ‘<samp>D7</samp>’),
|
|
the ‘<samp>X</samp>’ register or the ‘<samp>Y</samp>’ register.
|
|
</p>
|
|
<p>A few instructions accept as an argument the stack pointer
|
|
register (‘<samp>S</samp>’), and/or the program counter (‘<samp>P</samp>’).
|
|
</p>
|
|
<p>Some very special instructions accept arguments which refer to the
|
|
condition code register. For these arguments the syntax is
|
|
‘<samp>CCR</samp>’, ‘<samp>CCH</samp>’ or ‘<samp>CCL</samp>’ which refer to the complete
|
|
condition code register, the condition code register high byte
|
|
and the condition code register low byte respectively.
|
|
</p>
|
|
|
|
</dd>
|
|
<dt><em>Absolute Direct</em></dt>
|
|
<dd><p>‘<samp><var>symbol</var></samp>’, or ‘<samp><var>digits</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Absolute Indirect</em></dt>
|
|
<dd><p>‘<samp>[<var>symbol</var></samp>’, or ‘<samp><var>digits</var>]</samp>’
|
|
</p>
|
|
|
|
</dd>
|
|
<dt><em>Constant Offset Indexed</em></dt>
|
|
<dd><p>‘<samp>(<var>number</var>,<var>reg</var>)</samp>’
|
|
</p>
|
|
<p><var>Reg</var> may be either ‘<samp>X</samp>’, ‘<samp>Y</samp>’, ‘<samp>S</samp>’ or
|
|
‘<samp>P</samp>’ or one of the data registers ‘<samp>D0</samp>’, ‘<samp>D1</samp>’ …
|
|
‘<samp>D7</samp>’.
|
|
If any of the registers ‘<samp>D2</samp>’ … ‘<samp>D5</samp>’ are specified, then the
|
|
register value is treated as a signed value.
|
|
Otherwise it is treated as unsigned.
|
|
<var>Number</var> may be any integer in the range [-8388608,8388607].
|
|
</p>
|
|
</dd>
|
|
<dt><em>Offset Indexed Indirect</em></dt>
|
|
<dd><p>‘<samp>[<var>number</var>,<var>reg</var>]</samp>’
|
|
</p>
|
|
<p><var>Reg</var> may be either ‘<samp>X</samp>’, ‘<samp>Y</samp>’, ‘<samp>S</samp>’ or
|
|
‘<samp>P</samp>’.
|
|
<var>Number</var> may be any integer in the range [-8388608,8388607].
|
|
</p>
|
|
</dd>
|
|
<dt><em>Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement</em></dt>
|
|
<dd><p>‘<samp>-<var>reg</var></samp>’,
|
|
‘<samp>+<var>reg</var></samp>’,
|
|
‘<samp><var>reg</var>-</samp>’ or
|
|
‘<samp><var>reg</var>+</samp>’
|
|
</p>
|
|
<p>This addressing mode is typically used to access a value at an address,
|
|
and simultaneously to increment/decrement the register pointing to that
|
|
address.
|
|
Thus <var>reg</var> may be any of the 24 bit registers ‘<samp>X</samp>’, ‘<samp>Y</samp>’, or
|
|
‘<samp>S</samp>’.
|
|
Pre-increment and post-decrement are not available for
|
|
register ‘<samp>S</samp>’ (only post-increment and pre-decrement are available).
|
|
</p>
|
|
</dd>
|
|
<dt><em>Register Offset Direct</em></dt>
|
|
<dd><p>‘<samp>(<var>data-reg</var>,<var>reg</var>)</samp>’
|
|
</p>
|
|
<p><var>Reg</var> can be either ‘<samp>X</samp>’, ‘<samp>Y</samp>’, or ‘<samp>S</samp>’.
|
|
<var>Data-reg</var>
|
|
must be one of the data registers ‘<samp>D0</samp>’, ‘<samp>D1</samp>’ … ‘<samp>D7</samp>’.
|
|
If any of the registers ‘<samp>D2</samp>’ … ‘<samp>D5</samp>’ are specified, then
|
|
the register value is treated as a signed value.
|
|
Otherwise it is treated as unsigned.
|
|
</p>
|
|
</dd>
|
|
<dt><em>Register Offset Indirect</em></dt>
|
|
<dd><p>‘<samp>[<var>data-reg</var>,<var>reg</var>]</samp>’
|
|
</p>
|
|
<p><var>Reg</var> can be either ‘<samp>X</samp>’ or ‘<samp>Y</samp>’.
|
|
<var>Data-reg</var>
|
|
must be one of the data registers ‘<samp>D0</samp>’, ‘<samp>D1</samp>’ … ‘<samp>D7</samp>’.
|
|
If any of the registers ‘<samp>D2</samp>’ … ‘<samp>D5</samp>’ are specified, then
|
|
the register value is treated as a signed value.
|
|
Otherwise it is treated as unsigned.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> trap #197 ;; Immediate mode
|
|
bra *+49 ;; Relative mode
|
|
bra .L0 ;; ditto
|
|
jmp 0xFE0034 ;; Absolute direct mode
|
|
jmp [0xFD0012] ;; Absolute indirect mode
|
|
inc.b (4,x) ;; Constant offset indexed mode
|
|
jsr (45, d0) ;; ditto
|
|
dec.w [4,y] ;; Constant offset indexed indirect mode
|
|
clr.p (-s) ;; Pre-decrement mode
|
|
neg.l (d0, s) ;; Register offset direct mode
|
|
com.b [d1, x] ;; Register offset indirect mode
|
|
psh cch ;; Register mode
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="S12Z-Register-Notation"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#S12Z-Addressing-Modes" accesskey="p" rel="previous">S12Z Addressing Modes</a>, Up: <a href="#S12Z-Syntax" accesskey="u" rel="up">S12Z Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Notation"></a>
|
|
<h4 class="subsubsection">9.24.2.3 Register Notation</h4>
|
|
|
|
<a name="index-register-notation_002c-S12Z"></a>
|
|
<p>Without a register prefix (see <a href="#S12Z-Options">S12Z Options</a>), S12Z assembler code is expected in the traditional
|
|
format like this:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">lea s, (-2,s)
|
|
st d2, (0,s)
|
|
ld x, symbol
|
|
tfr d2, d6
|
|
cmp d6, #1532
|
|
</pre></div>
|
|
|
|
<p>However, if <code>as</code> is started with (for example) ‘<samp>-mreg-prefix=%</samp>’
|
|
then all register names must be prefixed with ‘<samp>%</samp>’ as follows:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">lea %s, (-2,%s)
|
|
st %d2, (0,%s)
|
|
ld %x, symbol
|
|
tfr %d2, %d6
|
|
cmp %d6, #1532
|
|
</pre></div>
|
|
|
|
<p>The register prefix feature is intended to be used by compilers
|
|
to avoid ambiguity between symbols and register names.
|
|
Consider the following assembler instruction:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">st d0, d1
|
|
</pre></div>
|
|
<p>The destination operand of this instruction could either refer to the register
|
|
‘<samp>D1</samp>’, or it could refer to the symbol named “d1”.
|
|
If the latter is intended then <code>as</code> must be invoked with
|
|
‘<samp>-mreg-prefix=<var>pfx</var></samp>’ and the code written as
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">st <var>pfx</var>d0, d1
|
|
</pre></div>
|
|
<p>where <var>pfx</var> is the chosen register prefix.
|
|
For this reason, compiler back-ends should choose a register prefix which
|
|
cannot be confused with a symbol name.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="Meta_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MicroBlaze_002dDependent" accesskey="n" rel="next">MicroBlaze-Dependent</a>, Previous: <a href="#S12Z_002dDependent" accesskey="p" rel="previous">S12Z-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Meta-Dependent-Features"></a>
|
|
<h3 class="section">9.25 Meta Dependent Features</h3>
|
|
|
|
<a name="index-Meta-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Meta-Options" accesskey="1">Meta Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Meta-Syntax" accesskey="2">Meta Syntax</a>:</td><td> </td><td align="left" valign="top">Meta Assembler Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Meta-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Meta-Syntax" accesskey="n" rel="next">Meta Syntax</a>, Up: <a href="#Meta_002dDependent" accesskey="u" rel="up">Meta-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-14"></a>
|
|
<h4 class="subsection">9.25.1 Options</h4>
|
|
|
|
<a name="index-options-for-Meta"></a>
|
|
<a name="index-Meta-options"></a>
|
|
<a name="index-architectures_002c-Meta"></a>
|
|
<a name="index-Meta-architectures"></a>
|
|
|
|
<p>The Imagination Technologies Meta architecture is implemented in a
|
|
number of versions, with each new version adding new features such as
|
|
instructions and registers. For precise details of what instructions
|
|
each core supports, please see the chip’s technical reference manual.
|
|
</p>
|
|
<p>The following table lists all available Meta options.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-mcpu=metac11</code></dt>
|
|
<dd><p>Generate code for Meta 1.1.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mcpu=metac12</code></dt>
|
|
<dd><p>Generate code for Meta 1.2.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mcpu=metac21</code></dt>
|
|
<dd><p>Generate code for Meta 2.1.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfpu=metac21</code></dt>
|
|
<dd><p>Allow code to use FPU hardware of Meta 2.1.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Meta-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Meta-Options" accesskey="p" rel="previous">Meta Options</a>, Up: <a href="#Meta_002dDependent" accesskey="u" rel="up">Meta-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-20"></a>
|
|
<h4 class="subsection">9.25.2 Syntax</h4>
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Meta_002dChars" accesskey="1">Meta-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Meta_002dRegs" accesskey="2">Meta-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Meta_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Meta_002dRegs" accesskey="n" rel="next">Meta-Regs</a>, Up: <a href="#Meta-Syntax" accesskey="u" rel="up">Meta Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-18"></a>
|
|
<h4 class="subsubsection">9.25.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-Meta"></a>
|
|
<a name="index-Meta-line-comment-character"></a>
|
|
<p>‘<samp>!</samp>’ is the line comment character.
|
|
</p>
|
|
<a name="index-line-separator_002c-Meta"></a>
|
|
<a name="index-statement-separator_002c-Meta"></a>
|
|
<a name="index-Meta-line-separator"></a>
|
|
<p>You can use ‘<samp>;</samp>’ instead of a newline to separate statements.
|
|
</p>
|
|
<a name="index-symbol-names_002c-_0024-in-2"></a>
|
|
<a name="index-_0024-in-symbol-names-2"></a>
|
|
<p>Since ‘<samp>$</samp>’ has no special meaning, you may use it in symbol names.
|
|
</p>
|
|
<hr>
|
|
<a name="Meta_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Meta_002dChars" accesskey="p" rel="previous">Meta-Chars</a>, Up: <a href="#Meta-Syntax" accesskey="u" rel="up">Meta Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-11"></a>
|
|
<h4 class="subsubsection">9.25.2.2 Register Names</h4>
|
|
|
|
<a name="index-Meta-registers"></a>
|
|
<a name="index-registers_002c-Meta"></a>
|
|
<p>Registers can be specified either using their mnemonic names, such as
|
|
‘<samp>D0Re0</samp>’, or using the unit plus register number separated by a ‘<samp>.</samp>’,
|
|
such as ‘<samp>D0.0</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="MicroBlaze_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS_002dDependent" accesskey="n" rel="next">MIPS-Dependent</a>, Previous: <a href="#Meta_002dDependent" accesskey="p" rel="previous">Meta-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="MicroBlaze-Dependent-Features"></a>
|
|
<h3 class="section">9.26 MicroBlaze Dependent Features</h3>
|
|
|
|
<a name="index-MicroBlaze-architectures"></a>
|
|
<p>The Xilinx MicroBlaze processor family includes several variants, all using
|
|
the same core instruction set. This chapter covers features of the <small>GNU</small>
|
|
assembler that are specific to the MicroBlaze architecture. For details about
|
|
the MicroBlaze instruction set, please see the <cite>MicroBlaze Processor
|
|
Reference Guide (UG081)</cite> available at www.xilinx.com.
|
|
</p>
|
|
<a name="index-MicroBlaze-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#MicroBlaze-Directives" accesskey="1">MicroBlaze Directives</a>:</td><td> </td><td align="left" valign="top">Directives for MicroBlaze Processors.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MicroBlaze-Syntax" accesskey="2">MicroBlaze Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax for the MicroBlaze
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="MicroBlaze-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MicroBlaze-Syntax" accesskey="n" rel="next">MicroBlaze Syntax</a>, Up: <a href="#MicroBlaze_002dDependent" accesskey="u" rel="up">MicroBlaze-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directives-1"></a>
|
|
<h4 class="subsection">9.26.1 Directives</h4>
|
|
<a name="index-MicroBlaze-directives"></a>
|
|
<p>A number of assembler directives are available for MicroBlaze.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>.data8 <var>expression</var>,...</code></dt>
|
|
<dd><p>This directive is an alias for <code>.byte</code>. Each expression is assembled
|
|
into an eight-bit value.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.data16 <var>expression</var>,...</code></dt>
|
|
<dd><p>This directive is an alias for <code>.hword</code>. Each expression is assembled
|
|
into an 16-bit value.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.data32 <var>expression</var>,...</code></dt>
|
|
<dd><p>This directive is an alias for <code>.word</code>. Each expression is assembled
|
|
into an 32-bit value.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.ent <var>name</var>[,<var>label</var>]</code></dt>
|
|
<dd><p>This directive is an alias for <code>.func</code> denoting the start of function
|
|
<var>name</var> at (optional) <var>label</var>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.end <var>name</var>[,<var>label</var>]</code></dt>
|
|
<dd><p>This directive is an alias for <code>.endfunc</code> denoting the end of function
|
|
<var>name</var>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.gpword <var>label</var>,...</code></dt>
|
|
<dd><p>This directive is an alias for <code>.rva</code>. The resolved address of <var>label</var>
|
|
is stored in the data section.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.weakext <var>label</var></code></dt>
|
|
<dd><p>Declare that <var>label</var> is a weak external symbol.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.rodata</code></dt>
|
|
<dd><p>Switch to .rodata section. Equivalent to <code>.section .rodata</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>.sdata2</code></dt>
|
|
<dd><p>Switch to .sdata2 section. Equivalent to <code>.section .sdata2</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>.sdata</code></dt>
|
|
<dd><p>Switch to .sdata section. Equivalent to <code>.section .sdata</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>.bss</code></dt>
|
|
<dd><p>Switch to .bss section. Equivalent to <code>.section .bss</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>.sbss</code></dt>
|
|
<dd><p>Switch to .sbss section. Equivalent to <code>.section .sbss</code>
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="MicroBlaze-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#MicroBlaze-Directives" accesskey="p" rel="previous">MicroBlaze Directives</a>, Up: <a href="#MicroBlaze_002dDependent" accesskey="u" rel="up">MicroBlaze-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-for-the-MicroBlaze"></a>
|
|
<h4 class="subsection">9.26.2 Syntax for the MicroBlaze</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#MicroBlaze_002dChars" accesskey="1">MicroBlaze-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="MicroBlaze_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#MicroBlaze-Syntax" accesskey="u" rel="up">MicroBlaze Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-19"></a>
|
|
<h4 class="subsubsection">9.26.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-MicroBlaze"></a>
|
|
<a name="index-MicroBlaze-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>#</samp>’ on a line indicates the start of a comment
|
|
that extends to the end of the current line.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line, the whole line
|
|
is treated as a comment, but in this case the line can also be a
|
|
logical line number directive (see <a href="#Comments">Comments</a>) or a
|
|
preprocessor control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-MicroBlaze"></a>
|
|
<a name="index-statement-separator_002c-MicroBlaze"></a>
|
|
<a name="index-MicroBlaze-line-separator"></a>
|
|
<p>The ‘<samp>;</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MMIX_002dDependent" accesskey="n" rel="next">MMIX-Dependent</a>, Previous: <a href="#MicroBlaze_002dDependent" accesskey="p" rel="previous">MicroBlaze-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="MIPS-Dependent-Features"></a>
|
|
<h3 class="section">9.27 MIPS Dependent Features</h3>
|
|
|
|
<a name="index-MIPS-processor"></a>
|
|
<p><small>GNU</small> <code>as</code> for MIPS architectures supports several
|
|
different MIPS processors, and MIPS ISA levels I through V, MIPS32,
|
|
and MIPS64. For information about the MIPS instruction set, see
|
|
<cite>MIPS RISC Architecture</cite>, by Kane and Heindrich (Prentice-Hall).
|
|
For an overview of MIPS assembly conventions, see “Appendix D:
|
|
Assembly Language Programming” in the same work.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-Options" accesskey="1">MIPS Options</a>:</td><td> </td><td align="left" valign="top">Assembler options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-Macros" accesskey="2">MIPS Macros</a>:</td><td> </td><td align="left" valign="top">High-level assembly macros
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-Symbol-Sizes" accesskey="3">MIPS Symbol Sizes</a>:</td><td> </td><td align="left" valign="top">Directives to override the size of symbols
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-Small-Data" accesskey="4">MIPS Small Data</a>:</td><td> </td><td align="left" valign="top">Controlling the use of small data accesses
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-ISA" accesskey="5">MIPS ISA</a>:</td><td> </td><td align="left" valign="top">Directives to override the ISA level
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-assembly-options" accesskey="6">MIPS assembly options</a>:</td><td> </td><td align="left" valign="top">Directives to control code generation
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-autoextend" accesskey="7">MIPS autoextend</a>:</td><td> </td><td align="left" valign="top">Directives for extending MIPS 16 bit instructions
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-insn" accesskey="8">MIPS insn</a>:</td><td> </td><td align="left" valign="top">Directive to mark data as an instruction
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-FP-ABIs" accesskey="9">MIPS FP ABIs</a>:</td><td> </td><td align="left" valign="top">Marking which FP ABI is in use
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-NaN-Encodings">MIPS NaN Encodings</a>:</td><td> </td><td align="left" valign="top">Directives to record which NaN encoding is being used
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-Option-Stack">MIPS Option Stack</a>:</td><td> </td><td align="left" valign="top">Directives to save and restore options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a>:</td><td> </td><td align="left" valign="top">Directives to control
|
|
generation of MIPS ASE instructions
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a>:</td><td> </td><td align="left" valign="top">Directives to override floating-point options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-Syntax">MIPS Syntax</a>:</td><td> </td><td align="left" valign="top">MIPS specific syntactical considerations
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="MIPS-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-Macros" accesskey="n" rel="next">MIPS Macros</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-options"></a>
|
|
<h4 class="subsection">9.27.1 Assembler options</h4>
|
|
|
|
<p>The MIPS configurations of <small>GNU</small> <code>as</code> support these
|
|
special options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dG-option-_0028MIPS_0029"></a>
|
|
</dd>
|
|
<dt><code>-G <var>num</var></code></dt>
|
|
<dd><p>Set the “small data” limit to <var>n</var> bytes. The default limit is 8 bytes.
|
|
See <a href="#MIPS-Small-Data">Controlling the use of small data accesses</a>.
|
|
</p>
|
|
<a name="index-_002dEB-option-_0028MIPS_0029"></a>
|
|
<a name="index-_002dEL-option-_0028MIPS_0029"></a>
|
|
<a name="index-MIPS-big_002dendian-output"></a>
|
|
<a name="index-MIPS-little_002dendian-output"></a>
|
|
<a name="index-big_002dendian-output_002c-MIPS"></a>
|
|
<a name="index-little_002dendian-output_002c-MIPS"></a>
|
|
</dd>
|
|
<dt><code>-EB</code></dt>
|
|
<dt><code>-EL</code></dt>
|
|
<dd><p>Any MIPS configuration of <code>as</code> can select big-endian or
|
|
little-endian output at run time (unlike the other <small>GNU</small> development
|
|
tools, which must be configured for one or the other). Use ‘<samp>-EB</samp>’
|
|
to select big-endian output, and ‘<samp>-EL</samp>’ for little-endian.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-KPIC</code></dt>
|
|
<dd><a name="index-PIC-selection_002c-MIPS"></a>
|
|
<a name="index-_002dKPIC-option_002c-MIPS"></a>
|
|
<p>Generate SVR4-style PIC. This option tells the assembler to generate
|
|
SVR4-style position-independent macro expansions. It also tells the
|
|
assembler to mark the output file as PIC.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mvxworks-pic</code></dt>
|
|
<dd><a name="index-_002dmvxworks_002dpic-option_002c-MIPS"></a>
|
|
<p>Generate VxWorks PIC. This option tells the assembler to generate
|
|
VxWorks-style position-independent macro expansions.
|
|
</p>
|
|
<a name="index-MIPS-architecture-options"></a>
|
|
</dd>
|
|
<dt><code>-mips1</code></dt>
|
|
<dt><code>-mips2</code></dt>
|
|
<dt><code>-mips3</code></dt>
|
|
<dt><code>-mips4</code></dt>
|
|
<dt><code>-mips5</code></dt>
|
|
<dt><code>-mips32</code></dt>
|
|
<dt><code>-mips32r2</code></dt>
|
|
<dt><code>-mips32r3</code></dt>
|
|
<dt><code>-mips32r5</code></dt>
|
|
<dt><code>-mips32r6</code></dt>
|
|
<dt><code>-mips64</code></dt>
|
|
<dt><code>-mips64r2</code></dt>
|
|
<dt><code>-mips64r3</code></dt>
|
|
<dt><code>-mips64r5</code></dt>
|
|
<dt><code>-mips64r6</code></dt>
|
|
<dd><p>Generate code for a particular MIPS Instruction Set Architecture level.
|
|
‘<samp>-mips1</samp>’ corresponds to the R2000 and R3000 processors,
|
|
‘<samp>-mips2</samp>’ to the R6000 processor, ‘<samp>-mips3</samp>’ to the
|
|
R4000 processor, and ‘<samp>-mips4</samp>’ to the R8000 and R10000 processors.
|
|
‘<samp>-mips5</samp>’, ‘<samp>-mips32</samp>’, ‘<samp>-mips32r2</samp>’, ‘<samp>-mips32r3</samp>’,
|
|
‘<samp>-mips32r5</samp>’, ‘<samp>-mips32r6</samp>’, ‘<samp>-mips64</samp>’, ‘<samp>-mips64r2</samp>’,
|
|
‘<samp>-mips64r3</samp>’, ‘<samp>-mips64r5</samp>’, and ‘<samp>-mips64r6</samp>’ correspond to
|
|
generic MIPS V, MIPS32, MIPS32 Release 2, MIPS32 Release 3, MIPS32
|
|
Release 5, MIPS32 Release 6, MIPS64, and MIPS64 Release 2, MIPS64
|
|
Release 3, MIPS64 Release 5, and MIPS64 Release 6 ISA processors,
|
|
respectively. You can also switch instruction sets during the assembly;
|
|
see <a href="#MIPS-ISA">Directives to override the ISA level</a>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mgp32</code></dt>
|
|
<dt><code>-mfp32</code></dt>
|
|
<dd><p>Some macros have different expansions for 32-bit and 64-bit registers.
|
|
The register sizes are normally inferred from the ISA and ABI, but these
|
|
flags force a certain group of registers to be treated as 32 bits wide at
|
|
all times. ‘<samp>-mgp32</samp>’ controls the size of general-purpose registers
|
|
and ‘<samp>-mfp32</samp>’ controls the size of floating-point registers.
|
|
</p>
|
|
<p>The <code>.set gp=32</code> and <code>.set fp=32</code> directives allow the size
|
|
of registers to be changed for parts of an object. The default value is
|
|
restored by <code>.set gp=default</code> and <code>.set fp=default</code>.
|
|
</p>
|
|
<p>On some MIPS variants there is a 32-bit mode flag; when this flag is
|
|
set, 64-bit instructions generate a trap. Also, some 32-bit OSes only
|
|
save the 32-bit registers on a context switch, so it is essential never
|
|
to use the 64-bit registers.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mgp64</code></dt>
|
|
<dt><code>-mfp64</code></dt>
|
|
<dd><p>Assume that 64-bit registers are available. This is provided in the
|
|
interests of symmetry with ‘<samp>-mgp32</samp>’ and ‘<samp>-mfp32</samp>’.
|
|
</p>
|
|
<p>The <code>.set gp=64</code> and <code>.set fp=64</code> directives allow the size
|
|
of registers to be changed for parts of an object. The default value is
|
|
restored by <code>.set gp=default</code> and <code>.set fp=default</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfpxx</code></dt>
|
|
<dd><p>Make no assumptions about whether 32-bit or 64-bit floating-point
|
|
registers are available. This is provided to support having modules
|
|
compatible with either ‘<samp>-mfp32</samp>’ or ‘<samp>-mfp64</samp>’. This option can
|
|
only be used with MIPS II and above.
|
|
</p>
|
|
<p>The <code>.set fp=xx</code> directive allows a part of an object to be marked
|
|
as not making assumptions about 32-bit or 64-bit FP registers. The
|
|
default value is restored by <code>.set fp=default</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-modd-spreg</code></dt>
|
|
<dt><code>-mno-odd-spreg</code></dt>
|
|
<dd><p>Enable use of floating-point operations on odd-numbered single-precision
|
|
registers when supported by the ISA. ‘<samp>-mfpxx</samp>’ implies
|
|
‘<samp>-mno-odd-spreg</samp>’, otherwise the default is ‘<samp>-modd-spreg</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mips16</code></dt>
|
|
<dt><code>-no-mips16</code></dt>
|
|
<dd><p>Generate code for the MIPS 16 processor. This is equivalent to putting
|
|
<code>.module mips16</code> at the start of the assembly file. ‘<samp>-no-mips16</samp>’
|
|
turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mmips16e2</code></dt>
|
|
<dt><code>-mno-mips16e2</code></dt>
|
|
<dd><p>Enable the use of MIPS16e2 instructions in MIPS16 mode. This is equivalent
|
|
to putting <code>.module mips16e2</code> at the start of the assembly file.
|
|
‘<samp>-mno-mips16e2</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mmicromips</code></dt>
|
|
<dt><code>-mno-micromips</code></dt>
|
|
<dd><p>Generate code for the microMIPS processor. This is equivalent to putting
|
|
<code>.module micromips</code> at the start of the assembly file.
|
|
‘<samp>-mno-micromips</samp>’ turns off this option. This is equivalent to putting
|
|
<code>.module nomicromips</code> at the start of the assembly file.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-msmartmips</code></dt>
|
|
<dt><code>-mno-smartmips</code></dt>
|
|
<dd><p>Enables the SmartMIPS extensions to the MIPS32 instruction set, which
|
|
provides a number of new instructions which target smartcard and
|
|
cryptographic applications. This is equivalent to putting
|
|
<code>.module smartmips</code> at the start of the assembly file.
|
|
‘<samp>-mno-smartmips</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mips3d</code></dt>
|
|
<dt><code>-no-mips3d</code></dt>
|
|
<dd><p>Generate code for the MIPS-3D Application Specific Extension.
|
|
This tells the assembler to accept MIPS-3D instructions.
|
|
‘<samp>-no-mips3d</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mdmx</code></dt>
|
|
<dt><code>-no-mdmx</code></dt>
|
|
<dd><p>Generate code for the MDMX Application Specific Extension.
|
|
This tells the assembler to accept MDMX instructions.
|
|
‘<samp>-no-mdmx</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mdsp</code></dt>
|
|
<dt><code>-mno-dsp</code></dt>
|
|
<dd><p>Generate code for the DSP Release 1 Application Specific Extension.
|
|
This tells the assembler to accept DSP Release 1 instructions.
|
|
‘<samp>-mno-dsp</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mdspr2</code></dt>
|
|
<dt><code>-mno-dspr2</code></dt>
|
|
<dd><p>Generate code for the DSP Release 2 Application Specific Extension.
|
|
This option implies ‘<samp>-mdsp</samp>’.
|
|
This tells the assembler to accept DSP Release 2 instructions.
|
|
‘<samp>-mno-dspr2</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mdspr3</code></dt>
|
|
<dt><code>-mno-dspr3</code></dt>
|
|
<dd><p>Generate code for the DSP Release 3 Application Specific Extension.
|
|
This option implies ‘<samp>-mdsp</samp>’ and ‘<samp>-mdspr2</samp>’.
|
|
This tells the assembler to accept DSP Release 3 instructions.
|
|
‘<samp>-mno-dspr3</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mmt</code></dt>
|
|
<dt><code>-mno-mt</code></dt>
|
|
<dd><p>Generate code for the MT Application Specific Extension.
|
|
This tells the assembler to accept MT instructions.
|
|
‘<samp>-mno-mt</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mmcu</code></dt>
|
|
<dt><code>-mno-mcu</code></dt>
|
|
<dd><p>Generate code for the MCU Application Specific Extension.
|
|
This tells the assembler to accept MCU instructions.
|
|
‘<samp>-mno-mcu</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mmsa</code></dt>
|
|
<dt><code>-mno-msa</code></dt>
|
|
<dd><p>Generate code for the MIPS SIMD Architecture Extension.
|
|
This tells the assembler to accept MSA instructions.
|
|
‘<samp>-mno-msa</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mxpa</code></dt>
|
|
<dt><code>-mno-xpa</code></dt>
|
|
<dd><p>Generate code for the MIPS eXtended Physical Address (XPA) Extension.
|
|
This tells the assembler to accept XPA instructions.
|
|
‘<samp>-mno-xpa</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mvirt</code></dt>
|
|
<dt><code>-mno-virt</code></dt>
|
|
<dd><p>Generate code for the Virtualization Application Specific Extension.
|
|
This tells the assembler to accept Virtualization instructions.
|
|
‘<samp>-mno-virt</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mcrc</code></dt>
|
|
<dt><code>-mno-crc</code></dt>
|
|
<dd><p>Generate code for the cyclic redundancy check (CRC) Application Specific
|
|
Extension. This tells the assembler to accept CRC instructions.
|
|
‘<samp>-mno-crc</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mginv</code></dt>
|
|
<dt><code>-mno-ginv</code></dt>
|
|
<dd><p>Generate code for the Global INValidate (GINV) Application Specific
|
|
Extension. This tells the assembler to accept GINV instructions.
|
|
‘<samp>-mno-ginv</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mloongson-mmi</code></dt>
|
|
<dt><code>-mno-loongson-mmi</code></dt>
|
|
<dd><p>Generate code for the Loongson MultiMedia extensions Instructions (MMI)
|
|
Application Specific Extension. This tells the assembler to accept MMI
|
|
instructions.
|
|
‘<samp>-mno-loongson-mmi</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mloongson-cam</code></dt>
|
|
<dt><code>-mno-loongson-cam</code></dt>
|
|
<dd><p>Generate code for the Loongson Content Address Memory (CAM)
|
|
Application Specific Extension. This tells the assembler to accept CAM
|
|
instructions.
|
|
‘<samp>-mno-loongson-cam</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mloongson-ext</code></dt>
|
|
<dt><code>-mno-loongson-ext</code></dt>
|
|
<dd><p>Generate code for the Loongson EXTensions (EXT) instructions
|
|
Application Specific Extension. This tells the assembler to accept EXT
|
|
instructions.
|
|
‘<samp>-mno-loongson-ext</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mloongson-ext2</code></dt>
|
|
<dt><code>-mno-loongson-ext2</code></dt>
|
|
<dd><p>Generate code for the Loongson EXTensions R2 (EXT2) instructions
|
|
Application Specific Extension. This tells the assembler to accept EXT2
|
|
instructions.
|
|
‘<samp>-mno-loongson-ext2</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-minsn32</code></dt>
|
|
<dt><code>-mno-insn32</code></dt>
|
|
<dd><p>Only use 32-bit instruction encodings when generating code for the
|
|
microMIPS processor. This option inhibits the use of any 16-bit
|
|
instructions. This is equivalent to putting <code>.set insn32</code> at
|
|
the start of the assembly file. ‘<samp>-mno-insn32</samp>’ turns off this
|
|
option. This is equivalent to putting <code>.set noinsn32</code> at the
|
|
start of the assembly file. By default ‘<samp>-mno-insn32</samp>’ is
|
|
selected, allowing all instructions to be used.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfix7000</code></dt>
|
|
<dt><code>-mno-fix7000</code></dt>
|
|
<dd><p>Cause nops to be inserted if the read of the destination register
|
|
of an mfhi or mflo instruction occurs in the following two instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfix-rm7000</code></dt>
|
|
<dt><code>-mno-fix-rm7000</code></dt>
|
|
<dd><p>Cause nops to be inserted if a dmult or dmultu instruction is
|
|
followed by a load instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfix-loongson2f-jump</code></dt>
|
|
<dt><code>-mno-fix-loongson2f-jump</code></dt>
|
|
<dd><p>Eliminate instruction fetch from outside 256M region to work around the
|
|
Loongson2F ‘<samp>jump</samp>’ instructions. Without it, under extreme cases,
|
|
the kernel may crash. The issue has been solved in latest processor
|
|
batches, but this fix has no side effect to them.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfix-loongson2f-nop</code></dt>
|
|
<dt><code>-mno-fix-loongson2f-nop</code></dt>
|
|
<dd><p>Replace nops by <code>or at,at,zero</code> to work around the Loongson2F
|
|
‘<samp>nop</samp>’ errata. Without it, under extreme cases, the CPU might
|
|
deadlock. The issue has been solved in later Loongson2F batches, but
|
|
this fix has no side effect to them.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfix-loongson3-llsc</code></dt>
|
|
<dt><code>-mno-fix-loongson3-llsc</code></dt>
|
|
<dd><p>Insert ‘<samp>sync</samp>’ before ‘<samp>ll</samp>’ and ‘<samp>lld</samp>’ to work around
|
|
Loongson3 LLSC errata. Without it, under extrame cases, the CPU might
|
|
deadlock. The default can be controlled by the
|
|
<samp>--enable-mips-fix-loongson3-llsc=[yes|no]</samp> configure option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfix-vr4120</code></dt>
|
|
<dt><code>-mno-fix-vr4120</code></dt>
|
|
<dd><p>Insert nops to work around certain VR4120 errata. This option is
|
|
intended to be used on GCC-generated code: it is not designed to catch
|
|
all problems in hand-written assembler code.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfix-vr4130</code></dt>
|
|
<dt><code>-mno-fix-vr4130</code></dt>
|
|
<dd><p>Insert nops to work around the VR4130 ‘<samp>mflo</samp>’/‘<samp>mfhi</samp>’ errata.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfix-24k</code></dt>
|
|
<dt><code>-mno-fix-24k</code></dt>
|
|
<dd><p>Insert nops to work around the 24K ‘<samp>eret</samp>’/‘<samp>deret</samp>’ errata.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfix-cn63xxp1</code></dt>
|
|
<dt><code>-mno-fix-cn63xxp1</code></dt>
|
|
<dd><p>Replace <code>pref</code> hints 0 - 4 and 6 - 24 with hint 28 to work around
|
|
certain CN63XXP1 errata.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfix-r5900</code></dt>
|
|
<dt><code>-mno-fix-r5900</code></dt>
|
|
<dd><p>Do not attempt to schedule the preceding instruction into the delay slot
|
|
of a branch instruction placed at the end of a short loop of six
|
|
instructions or fewer and always schedule a <code>nop</code> instruction there
|
|
instead. The short loop bug under certain conditions causes loops to
|
|
execute only once or twice, due to a hardware bug in the R5900 chip.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m4010</code></dt>
|
|
<dt><code>-no-m4010</code></dt>
|
|
<dd><p>Generate code for the LSI R4010 chip. This tells the assembler to
|
|
accept the R4010-specific instructions (‘<samp>addciu</samp>’, ‘<samp>ffc</samp>’,
|
|
etc.), and to not schedule ‘<samp>nop</samp>’ instructions around accesses to
|
|
the ‘<samp>HI</samp>’ and ‘<samp>LO</samp>’ registers. ‘<samp>-no-m4010</samp>’ turns off this
|
|
option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m4650</code></dt>
|
|
<dt><code>-no-m4650</code></dt>
|
|
<dd><p>Generate code for the MIPS R4650 chip. This tells the assembler to accept
|
|
the ‘<samp>mad</samp>’ and ‘<samp>madu</samp>’ instruction, and to not schedule ‘<samp>nop</samp>’
|
|
instructions around accesses to the ‘<samp>HI</samp>’ and ‘<samp>LO</samp>’ registers.
|
|
‘<samp>-no-m4650</samp>’ turns off this option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m3900</code></dt>
|
|
<dt><code>-no-m3900</code></dt>
|
|
<dt><code>-m4100</code></dt>
|
|
<dt><code>-no-m4100</code></dt>
|
|
<dd><p>For each option ‘<samp>-m<var>nnnn</var></samp>’, generate code for the MIPS
|
|
R<var>nnnn</var> chip. This tells the assembler to accept instructions
|
|
specific to that chip, and to schedule for that chip’s hazards.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-march=<var>cpu</var></code></dt>
|
|
<dd><p>Generate code for a particular MIPS CPU. It is exactly equivalent to
|
|
‘<samp>-m<var>cpu</var></samp>’, except that there are more value of <var>cpu</var>
|
|
understood. Valid <var>cpu</var> value are:
|
|
</p>
|
|
<blockquote>
|
|
<p>2000,
|
|
3000,
|
|
3900,
|
|
4000,
|
|
4010,
|
|
4100,
|
|
4111,
|
|
vr4120,
|
|
vr4130,
|
|
vr4181,
|
|
4300,
|
|
4400,
|
|
4600,
|
|
4650,
|
|
5000,
|
|
rm5200,
|
|
rm5230,
|
|
rm5231,
|
|
rm5261,
|
|
rm5721,
|
|
vr5400,
|
|
vr5500,
|
|
6000,
|
|
rm7000,
|
|
8000,
|
|
rm9000,
|
|
10000,
|
|
12000,
|
|
14000,
|
|
16000,
|
|
4kc,
|
|
4km,
|
|
4kp,
|
|
4ksc,
|
|
4kec,
|
|
4kem,
|
|
4kep,
|
|
4ksd,
|
|
m4k,
|
|
m4kp,
|
|
m14k,
|
|
m14kc,
|
|
m14ke,
|
|
m14kec,
|
|
24kc,
|
|
24kf2_1,
|
|
24kf,
|
|
24kf1_1,
|
|
24kec,
|
|
24kef2_1,
|
|
24kef,
|
|
24kef1_1,
|
|
34kc,
|
|
34kf2_1,
|
|
34kf,
|
|
34kf1_1,
|
|
34kn,
|
|
74kc,
|
|
74kf2_1,
|
|
74kf,
|
|
74kf1_1,
|
|
74kf3_2,
|
|
1004kc,
|
|
1004kf2_1,
|
|
1004kf,
|
|
1004kf1_1,
|
|
interaptiv,
|
|
interaptiv-mr2,
|
|
m5100,
|
|
m5101,
|
|
p5600,
|
|
5kc,
|
|
5kf,
|
|
20kc,
|
|
25kf,
|
|
sb1,
|
|
sb1a,
|
|
i6400,
|
|
i6500,
|
|
p6600,
|
|
loongson2e,
|
|
loongson2f,
|
|
gs464,
|
|
gs464e,
|
|
gs264e,
|
|
octeon,
|
|
octeon+,
|
|
octeon2,
|
|
octeon3,
|
|
xlr,
|
|
xlp
|
|
</p></blockquote>
|
|
|
|
<p>For compatibility reasons, ‘<samp><var>n</var>x</samp>’ and ‘<samp><var>b</var>fx</samp>’ are
|
|
accepted as synonyms for ‘<samp><var>n</var>f1_1</samp>’. These values are
|
|
deprecated.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mtune=<var>cpu</var></code></dt>
|
|
<dd><p>Schedule and tune for a particular MIPS CPU. Valid <var>cpu</var> values are
|
|
identical to ‘<samp>-march=<var>cpu</var></samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mabi=<var>abi</var></code></dt>
|
|
<dd><p>Record which ABI the source code uses. The recognized arguments
|
|
are: ‘<samp>32</samp>’, ‘<samp>n32</samp>’, ‘<samp>o64</samp>’, ‘<samp>64</samp>’ and ‘<samp>eabi</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-msym32</code></dt>
|
|
<dt><code>-mno-sym32</code></dt>
|
|
<dd><a name="index-_002dmsym32"></a>
|
|
<a name="index-_002dmno_002dsym32"></a>
|
|
<p>Equivalent to adding <code>.set sym32</code> or <code>.set nosym32</code> to
|
|
the beginning of the assembler input. See <a href="#MIPS-Symbol-Sizes">MIPS Symbol Sizes</a>.
|
|
</p>
|
|
<a name="index-_002dnocpp-ignored-_0028MIPS_0029"></a>
|
|
</dd>
|
|
<dt><code>-nocpp</code></dt>
|
|
<dd><p>This option is ignored. It is accepted for command-line compatibility with
|
|
other assemblers, which use it to turn off C style preprocessing. With
|
|
<small>GNU</small> <code>as</code>, there is no need for ‘<samp>-nocpp</samp>’, because the
|
|
<small>GNU</small> assembler itself never runs the C preprocessor.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-msoft-float</code></dt>
|
|
<dt><code>-mhard-float</code></dt>
|
|
<dd><p>Disable or enable floating-point instructions. Note that by default
|
|
floating-point instructions are always allowed even with CPU targets
|
|
that don’t have support for these instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-msingle-float</code></dt>
|
|
<dt><code>-mdouble-float</code></dt>
|
|
<dd><p>Disable or enable double-precision floating-point operations. Note
|
|
that by default double-precision floating-point operations are always
|
|
allowed even with CPU targets that don’t have support for these
|
|
operations.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--construct-floats</code></dt>
|
|
<dt><code>--no-construct-floats</code></dt>
|
|
<dd><p>The <code>--no-construct-floats</code> option disables the construction of
|
|
double width floating point constants by loading the two halves of the
|
|
value into the two single width floating point registers that make up
|
|
the double width register. This feature is useful if the processor
|
|
support the FR bit in its status register, and this bit is known (by
|
|
the programmer) to be set. This bit prevents the aliasing of the double
|
|
width register by the single width registers.
|
|
</p>
|
|
<p>By default <code>--construct-floats</code> is selected, allowing construction
|
|
of these floating point constants.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--relax-branch</code></dt>
|
|
<dt><code>--no-relax-branch</code></dt>
|
|
<dd><p>The ‘<samp>--relax-branch</samp>’ option enables the relaxation of out-of-range
|
|
branches. Any branches whose target cannot be reached directly are
|
|
converted to a small instruction sequence including an inverse-condition
|
|
branch to the physically next instruction, and a jump to the original
|
|
target is inserted between the two instructions. In PIC code the jump
|
|
will involve further instructions for address calculation.
|
|
</p>
|
|
<p>The <code>BC1ANY2F</code>, <code>BC1ANY2T</code>, <code>BC1ANY4F</code>, <code>BC1ANY4T</code>,
|
|
<code>BPOSGE32</code> and <code>BPOSGE64</code> instructions are excluded from
|
|
relaxation, because they have no complementing counterparts. They could
|
|
be relaxed with the use of a longer sequence involving another branch,
|
|
however this has not been implemented and if their target turns out of
|
|
reach, they produce an error even if branch relaxation is enabled.
|
|
</p>
|
|
<p>Also no MIPS16 branches are ever relaxed.
|
|
</p>
|
|
<p>By default ‘<samp>--no-relax-branch</samp>’ is selected, causing any out-of-range
|
|
branches to produce an error.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mignore-branch-isa</code></dt>
|
|
<dt><code>-mno-ignore-branch-isa</code></dt>
|
|
<dd><p>Ignore branch checks for invalid transitions between ISA modes.
|
|
</p>
|
|
<p>The semantics of branches does not provide for an ISA mode switch, so in
|
|
most cases the ISA mode a branch has been encoded for has to be the same
|
|
as the ISA mode of the branch’s target label. If the ISA modes do not
|
|
match, then such a branch, if taken, will cause the ISA mode to remain
|
|
unchanged and instructions that follow will be executed in the wrong ISA
|
|
mode causing the program to misbehave or crash.
|
|
</p>
|
|
<p>In the case of the <code>BAL</code> instruction it may be possible to relax
|
|
it to an equivalent <code>JALX</code> instruction so that the ISA mode is
|
|
switched at the run time as required. For other branches no relaxation
|
|
is possible and therefore GAS has checks implemented that verify in
|
|
branch assembly that the two ISA modes match, and report an error
|
|
otherwise so that the problem with code can be diagnosed at the assembly
|
|
time rather than at the run time.
|
|
</p>
|
|
<p>However some assembly code, including generated code produced by some
|
|
versions of GCC, may incorrectly include branches to data labels, which
|
|
appear to require a mode switch but are either dead or immediately
|
|
followed by valid instructions encoded for the same ISA the branch has
|
|
been encoded for. While not strictly correct at the source level such
|
|
code will execute as intended, so to help with these cases
|
|
‘<samp>-mignore-branch-isa</samp>’ is supported which disables ISA mode checks
|
|
for branches.
|
|
</p>
|
|
<p>By default ‘<samp>-mno-ignore-branch-isa</samp>’ is selected, causing any invalid
|
|
branch requiring a transition between ISA modes to produce an error.
|
|
</p>
|
|
<a name="index-_002dmnan_003d-command_002dline-option_002c-MIPS"></a>
|
|
</dd>
|
|
<dt><code>-mnan=<var>encoding</var></code></dt>
|
|
<dd><p>This option indicates whether the source code uses the IEEE 2008
|
|
NaN encoding (<samp>-mnan=2008</samp>) or the original MIPS encoding
|
|
(<samp>-mnan=legacy</samp>). It is equivalent to adding a <code>.nan</code>
|
|
directive to the beginning of the source file. See <a href="#MIPS-NaN-Encodings">MIPS NaN Encodings</a>.
|
|
</p>
|
|
<p><samp>-mnan=legacy</samp> is the default if no <samp>-mnan</samp> option or
|
|
<code>.nan</code> directive is used.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--trap</code></dt>
|
|
<dt><code>--no-break</code></dt>
|
|
<dd><p><code>as</code> automatically macro expands certain division and
|
|
multiplication instructions to check for overflow and division by zero. This
|
|
option causes <code>as</code> to generate code to take a trap exception
|
|
rather than a break exception when an error is detected. The trap instructions
|
|
are only supported at Instruction Set Architecture level 2 and higher.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--break</code></dt>
|
|
<dt><code>--no-trap</code></dt>
|
|
<dd><p>Generate code to take a break exception rather than a trap exception when an
|
|
error is detected. This is the default.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mpdr</code></dt>
|
|
<dt><code>-mno-pdr</code></dt>
|
|
<dd><p>Control generation of <code>.pdr</code> sections. Off by default on IRIX, on
|
|
elsewhere.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mshared</code></dt>
|
|
<dt><code>-mno-shared</code></dt>
|
|
<dd><p>When generating code using the Unix calling conventions (selected by
|
|
‘<samp>-KPIC</samp>’ or ‘<samp>-mcall_shared</samp>’), gas will normally generate code
|
|
which can go into a shared library. The ‘<samp>-mno-shared</samp>’ option
|
|
tells gas to generate code which uses the calling convention, but can
|
|
not go into a shared library. The resulting code is slightly more
|
|
efficient. This option only affects the handling of the
|
|
‘<samp>.cpload</samp>’ and ‘<samp>.cpsetup</samp>’ pseudo-ops.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="MIPS-Macros"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-Symbol-Sizes" accesskey="n" rel="next">MIPS Symbol Sizes</a>, Previous: <a href="#MIPS-Options" accesskey="p" rel="previous">MIPS Options</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="High_002dlevel-assembly-macros"></a>
|
|
<h4 class="subsection">9.27.2 High-level assembly macros</h4>
|
|
|
|
<p>MIPS assemblers have traditionally provided a wider range of
|
|
instructions than the MIPS architecture itself. These extra
|
|
instructions are usually referred to as “macro” instructions
|
|
<a name="DOCF2" href="#FOOT2"><sup>2</sup></a>.
|
|
</p>
|
|
<p>Some MIPS macro instructions extend an underlying architectural instruction
|
|
while others are entirely new. An example of the former type is <code>and</code>,
|
|
which allows the third operand to be either a register or an arbitrary
|
|
immediate value. Examples of the latter type include <code>bgt</code>, which
|
|
branches to the third operand when the first operand is greater than
|
|
the second operand, and <code>ulh</code>, which implements an unaligned
|
|
2-byte load.
|
|
</p>
|
|
<p>One of the most common extensions provided by macros is to expand
|
|
memory offsets to the full address range (32 or 64 bits) and to allow
|
|
symbolic offsets such as ‘<samp>my_data + 4</samp>’ to be used in place of
|
|
integer constants. For example, the architectural instruction
|
|
<code>lbu</code> allows only a signed 16-bit offset, whereas the macro
|
|
<code>lbu</code> allows code such as ‘<samp>lbu $4,array+32769($5)</samp>’.
|
|
The implementation of these symbolic offsets depends on several factors,
|
|
such as whether the assembler is generating SVR4-style PIC (selected by
|
|
<samp>-KPIC</samp>, see <a href="#MIPS-Options">Assembler options</a>), the size of symbols
|
|
(see <a href="#MIPS-Symbol-Sizes">Directives to override the size of symbols</a>),
|
|
and the small data limit (see <a href="#MIPS-Small-Data">Controlling the use
|
|
of small data accesses</a>).
|
|
</p>
|
|
<a name="index-_002eset-macro"></a>
|
|
<a name="index-_002eset-nomacro"></a>
|
|
<p>Sometimes it is undesirable to have one assembly instruction expand
|
|
to several machine instructions. The directive <code>.set nomacro</code>
|
|
tells the assembler to warn when this happens. <code>.set macro</code>
|
|
restores the default behavior.
|
|
</p>
|
|
<a name="index-at-register_002c-MIPS"></a>
|
|
<a name="index-_002eset-at_003dreg"></a>
|
|
<p>Some macro instructions need a temporary register to store intermediate
|
|
results. This register is usually <code>$1</code>, also known as <code>$at</code>,
|
|
but it can be changed to any core register <var>reg</var> using
|
|
<code>.set at=<var>reg</var></code>. Note that <code>$at</code> always refers
|
|
to <code>$1</code> regardless of which register is being used as the
|
|
temporary register.
|
|
</p>
|
|
<a name="index-_002eset-at"></a>
|
|
<a name="index-_002eset-noat"></a>
|
|
<p>Implicit uses of the temporary register in macros could interfere with
|
|
explicit uses in the assembly code. The assembler therefore warns
|
|
whenever it sees an explicit use of the temporary register. The directive
|
|
<code>.set noat</code> silences this warning while <code>.set at</code> restores
|
|
the default behavior. It is safe to use <code>.set noat</code> while
|
|
<code>.set nomacro</code> is in effect since single-instruction macros
|
|
never need a temporary register.
|
|
</p>
|
|
<p>Note that while the <small>GNU</small> assembler provides these macros for compatibility,
|
|
it does not make any attempt to optimize them with the surrounding code.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS-Symbol-Sizes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-Small-Data" accesskey="n" rel="next">MIPS Small Data</a>, Previous: <a href="#MIPS-Macros" accesskey="p" rel="previous">MIPS Macros</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directives-to-override-the-size-of-symbols"></a>
|
|
<h4 class="subsection">9.27.3 Directives to override the size of symbols</h4>
|
|
|
|
<a name="index-_002eset-sym32"></a>
|
|
<a name="index-_002eset-nosym32"></a>
|
|
<p>The n64 ABI allows symbols to have any 64-bit value. Although this
|
|
provides a great deal of flexibility, it means that some macros have
|
|
much longer expansions than their 32-bit counterparts. For example,
|
|
the non-PIC expansion of ‘<samp>dla $4,sym</samp>’ is usually:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">lui $4,%highest(sym)
|
|
lui $1,%hi(sym)
|
|
daddiu $4,$4,%higher(sym)
|
|
daddiu $1,$1,%lo(sym)
|
|
dsll32 $4,$4,0
|
|
daddu $4,$4,$1
|
|
</pre></div>
|
|
|
|
<p>whereas the 32-bit expansion is simply:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">lui $4,%hi(sym)
|
|
daddiu $4,$4,%lo(sym)
|
|
</pre></div>
|
|
|
|
<p>n64 code is sometimes constructed in such a way that all symbolic
|
|
constants are known to have 32-bit values, and in such cases, it’s
|
|
preferable to use the 32-bit expansion instead of the 64-bit
|
|
expansion.
|
|
</p>
|
|
<p>You can use the <code>.set sym32</code> directive to tell the assembler
|
|
that, from this point on, all expressions of the form
|
|
‘<samp><var>symbol</var></samp>’ or ‘<samp><var>symbol</var> + <var>offset</var></samp>’
|
|
have 32-bit values. For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">.set sym32
|
|
dla $4,sym
|
|
lw $4,sym+16
|
|
sw $4,sym+0x8000($4)
|
|
</pre></div>
|
|
|
|
<p>will cause the assembler to treat ‘<samp>sym</samp>’, <code>sym+16</code> and
|
|
<code>sym+0x8000</code> as 32-bit values. The handling of non-symbolic
|
|
addresses is not affected.
|
|
</p>
|
|
<p>The directive <code>.set nosym32</code> ends a <code>.set sym32</code> block and
|
|
reverts to the normal behavior. It is also possible to change the
|
|
symbol size using the command-line options <samp>-msym32</samp> and
|
|
<samp>-mno-sym32</samp>.
|
|
</p>
|
|
<p>These options and directives are always accepted, but at present,
|
|
they have no effect for anything other than n64.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS-Small-Data"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-ISA" accesskey="n" rel="next">MIPS ISA</a>, Previous: <a href="#MIPS-Symbol-Sizes" accesskey="p" rel="previous">MIPS Symbol Sizes</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Controlling-the-use-of-small-data-accesses"></a>
|
|
<h4 class="subsection">9.27.4 Controlling the use of small data accesses</h4>
|
|
|
|
<a name="index-small-data_002c-MIPS"></a>
|
|
<a name="index-gp-register_002c-MIPS"></a>
|
|
<p>It often takes several instructions to load the address of a symbol.
|
|
For example, when ‘<samp>addr</samp>’ is a 32-bit symbol, the non-PIC expansion
|
|
of ‘<samp>dla $4,addr</samp>’ is usually:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">lui $4,%hi(addr)
|
|
daddiu $4,$4,%lo(addr)
|
|
</pre></div>
|
|
|
|
<p>The sequence is much longer when ‘<samp>addr</samp>’ is a 64-bit symbol.
|
|
See <a href="#MIPS-Symbol-Sizes">Directives to override the size of symbols</a>.
|
|
</p>
|
|
<p>In order to cut down on this overhead, most embedded MIPS systems
|
|
set aside a 64-kilobyte “small data” area and guarantee that all
|
|
data of size <var>n</var> and smaller will be placed in that area.
|
|
The limit <var>n</var> is passed to both the assembler and the linker
|
|
using the command-line option <samp>-G <var>n</var></samp>, see <a href="#MIPS-Options">Assembler options</a>. Note that the same value of <var>n</var> must be used
|
|
when linking and when assembling all input files to the link; any
|
|
inconsistency could cause a relocation overflow error.
|
|
</p>
|
|
<p>The size of an object in the <code>.bss</code> section is set by the
|
|
<code>.comm</code> or <code>.lcomm</code> directive that defines it. The size of
|
|
an external object may be set with the <code>.extern</code> directive. For
|
|
example, ‘<samp>.extern sym,4</samp>’ declares that the object at <code>sym</code>
|
|
is 4 bytes in length, while leaving <code>sym</code> otherwise undefined.
|
|
</p>
|
|
<p>When no <samp>-G</samp> option is given, the default limit is 8 bytes.
|
|
The option <samp>-G 0</samp> prevents any data from being automatically
|
|
classified as small.
|
|
</p>
|
|
<p>It is also possible to mark specific objects as small by putting them
|
|
in the special sections <code>.sdata</code> and <code>.sbss</code>, which are
|
|
“small” counterparts of <code>.data</code> and <code>.bss</code> respectively.
|
|
The toolchain will treat such data as small regardless of the
|
|
<samp>-G</samp> setting.
|
|
</p>
|
|
<p>On startup, systems that support a small data area are expected to
|
|
initialize register <code>$28</code>, also known as <code>$gp</code>, in such a
|
|
way that small data can be accessed using a 16-bit offset from that
|
|
register. For example, when ‘<samp>addr</samp>’ is small data,
|
|
the ‘<samp>dla $4,addr</samp>’ instruction above is equivalent to:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">daddiu $4,$28,%gp_rel(addr)
|
|
</pre></div>
|
|
|
|
<p>Small data is not supported for SVR4-style PIC.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS-ISA"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-assembly-options" accesskey="n" rel="next">MIPS assembly options</a>, Previous: <a href="#MIPS-Small-Data" accesskey="p" rel="previous">MIPS Small Data</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directives-to-override-the-ISA-level"></a>
|
|
<h4 class="subsection">9.27.5 Directives to override the ISA level</h4>
|
|
|
|
<a name="index-MIPS-ISA-override"></a>
|
|
<a name="index-_002eset-mipsn"></a>
|
|
<p><small>GNU</small> <code>as</code> supports an additional directive to change
|
|
the MIPS Instruction Set Architecture level on the fly: <code>.set
|
|
mips<var>n</var></code>. <var>n</var> should be a number from 0 to 5, or 32, 32r2, 32r3,
|
|
32r5, 32r6, 64, 64r2, 64r3, 64r5 or 64r6.
|
|
The values other than 0 make the assembler accept instructions
|
|
for the corresponding ISA level, from that point on in the
|
|
assembly. <code>.set mips<var>n</var></code> affects not only which instructions
|
|
are permitted, but also how certain macros are expanded. <code>.set
|
|
mips0</code> restores the ISA level to its original level: either the
|
|
level you selected with command-line options, or the default for your
|
|
configuration. You can use this feature to permit specific MIPS III
|
|
instructions while assembling in 32 bit mode. Use this directive with
|
|
care!
|
|
</p>
|
|
<a name="index-MIPS-CPU-override"></a>
|
|
<a name="index-_002eset-arch_003dcpu"></a>
|
|
<p>The <code>.set arch=<var>cpu</var></code> directive provides even finer control.
|
|
It changes the effective CPU target and allows the assembler to use
|
|
instructions specific to a particular CPU. All CPUs supported by the
|
|
‘<samp>-march</samp>’ command-line option are also selectable by this directive.
|
|
The original value is restored by <code>.set arch=default</code>.
|
|
</p>
|
|
<p>The directive <code>.set mips16</code> puts the assembler into MIPS 16 mode,
|
|
in which it will assemble instructions for the MIPS 16 processor. Use
|
|
<code>.set nomips16</code> to return to normal 32 bit mode.
|
|
</p>
|
|
<p>Traditional MIPS assemblers do not support this directive.
|
|
</p>
|
|
<p>The directive <code>.set micromips</code> puts the assembler into microMIPS mode,
|
|
in which it will assemble instructions for the microMIPS processor. Use
|
|
<code>.set nomicromips</code> to return to normal 32 bit mode.
|
|
</p>
|
|
<p>Traditional MIPS assemblers do not support this directive.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS-assembly-options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-autoextend" accesskey="n" rel="next">MIPS autoextend</a>, Previous: <a href="#MIPS-ISA" accesskey="p" rel="previous">MIPS ISA</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directives-to-control-code-generation"></a>
|
|
<h4 class="subsection">9.27.6 Directives to control code generation</h4>
|
|
|
|
<a name="index-MIPS-directives-to-override-command_002dline-options"></a>
|
|
<a name="index-_002emodule"></a>
|
|
<p>The <code>.module</code> directive allows command-line options to be set directly
|
|
from assembly. The format of the directive matches the <code>.set</code>
|
|
directive but only those options which are relevant to a whole module are
|
|
supported. The effect of a <code>.module</code> directive is the same as the
|
|
corresponding command-line option. Where <code>.set</code> directives support
|
|
returning to a default then the <code>.module</code> directives do not as they
|
|
define the defaults.
|
|
</p>
|
|
<p>These module-level directives must appear first in assembly.
|
|
</p>
|
|
<p>Traditional MIPS assemblers do not support this directive.
|
|
</p>
|
|
<a name="index-MIPS-32_002dbit-microMIPS-instruction-generation-override"></a>
|
|
<a name="index-_002eset-insn32"></a>
|
|
<a name="index-_002eset-noinsn32"></a>
|
|
<p>The directive <code>.set insn32</code> makes the assembler only use 32-bit
|
|
instruction encodings when generating code for the microMIPS processor.
|
|
This directive inhibits the use of any 16-bit instructions from that
|
|
point on in the assembly. The <code>.set noinsn32</code> directive allows
|
|
16-bit instructions to be accepted.
|
|
</p>
|
|
<p>Traditional MIPS assemblers do not support this directive.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS-autoextend"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-insn" accesskey="n" rel="next">MIPS insn</a>, Previous: <a href="#MIPS-assembly-options" accesskey="p" rel="previous">MIPS assembly options</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directives-for-extending-MIPS-16-bit-instructions"></a>
|
|
<h4 class="subsection">9.27.7 Directives for extending MIPS 16 bit instructions</h4>
|
|
|
|
<a name="index-_002eset-autoextend"></a>
|
|
<a name="index-_002eset-noautoextend"></a>
|
|
<p>By default, MIPS 16 instructions are automatically extended to 32 bits
|
|
when necessary. The directive <code>.set noautoextend</code> will turn this
|
|
off. When <code>.set noautoextend</code> is in effect, any 32 bit instruction
|
|
must be explicitly extended with the <code>.e</code> modifier (e.g.,
|
|
<code>li.e $4,1000</code>). The directive <code>.set autoextend</code> may be used
|
|
to once again automatically extend instructions when necessary.
|
|
</p>
|
|
<p>This directive is only meaningful when in MIPS 16 mode. Traditional
|
|
MIPS assemblers do not support this directive.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS-insn"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-FP-ABIs" accesskey="n" rel="next">MIPS FP ABIs</a>, Previous: <a href="#MIPS-autoextend" accesskey="p" rel="previous">MIPS autoextend</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directive-to-mark-data-as-an-instruction"></a>
|
|
<h4 class="subsection">9.27.8 Directive to mark data as an instruction</h4>
|
|
|
|
<a name="index-_002einsn"></a>
|
|
<p>The <code>.insn</code> directive tells <code>as</code> that the following
|
|
data is actually instructions. This makes a difference in MIPS 16 and
|
|
microMIPS modes: when loading the address of a label which precedes
|
|
instructions, <code>as</code> automatically adds 1 to the value, so
|
|
that jumping to the loaded address will do the right thing.
|
|
</p>
|
|
<a name="index-_002eglobal"></a>
|
|
<p>The <code>.global</code> and <code>.globl</code> directives supported by
|
|
<code>as</code> will by default mark the symbol as pointing to a
|
|
region of data not code. This means that, for example, any
|
|
instructions following such a symbol will not be disassembled by
|
|
<code>objdump</code> as it will regard them as data. To change this
|
|
behavior an optional section name can be placed after the symbol name
|
|
in the <code>.global</code> directive. If this section exists and is known
|
|
to be a code section, then the symbol will be marked as pointing at
|
|
code not data. Ie the syntax for the directive is:
|
|
</p>
|
|
<p><code>.global <var>symbol</var>[ <var>section</var>][, <var>symbol</var>[ <var>section</var>]] ...</code>,
|
|
</p>
|
|
<p>Here is a short example:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example"> .global foo .text, bar, baz .data
|
|
foo:
|
|
nop
|
|
bar:
|
|
.word 0x0
|
|
baz:
|
|
.word 0x1
|
|
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="MIPS-FP-ABIs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-NaN-Encodings" accesskey="n" rel="next">MIPS NaN Encodings</a>, Previous: <a href="#MIPS-insn" accesskey="p" rel="previous">MIPS insn</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directives-to-control-the-FP-ABI"></a>
|
|
<h4 class="subsection">9.27.9 Directives to control the FP ABI</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-FP-ABI-History" accesskey="1">MIPS FP ABI History</a>:</td><td> </td><td align="left" valign="top">History of FP ABIs
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-FP-ABI-Variants" accesskey="2">MIPS FP ABI Variants</a>:</td><td> </td><td align="left" valign="top">Supported FP ABIs
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-FP-ABI-Selection" accesskey="3">MIPS FP ABI Selection</a>:</td><td> </td><td align="left" valign="top">Automatic selection of FP ABI
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MIPS-FP-ABI-Compatibility" accesskey="4">MIPS FP ABI Compatibility</a>:</td><td> </td><td align="left" valign="top">Linking different FP ABI variants
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="MIPS-FP-ABI-History"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-FP-ABI-Variants" accesskey="n" rel="next">MIPS FP ABI Variants</a>, Up: <a href="#MIPS-FP-ABIs" accesskey="u" rel="up">MIPS FP ABIs</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="History-of-FP-ABIs"></a>
|
|
<h4 class="subsubsection">9.27.9.1 History of FP ABIs</h4>
|
|
<a name="index-_002egnu_005fattribute-4_002c-n-directive_002c-MIPS"></a>
|
|
<a name="index-_002egnu_005fattribute-Tag_005fGNU_005fMIPS_005fABI_005fFP_002c-n-directive_002c-MIPS"></a>
|
|
<p>The MIPS ABIs support a variety of different floating-point extensions
|
|
where calling-convention and register sizes vary for floating-point data.
|
|
The extensions exist to support a wide variety of optional architecture
|
|
features. The resulting ABI variants are generally incompatible with each
|
|
other and must be tracked carefully.
|
|
</p>
|
|
<p>Traditionally the use of an explicit <code>.gnu_attribute 4, <var>n</var></code>
|
|
directive is used to indicate which ABI is in use by a specific module.
|
|
It was then left to the user to ensure that command-line options and the
|
|
selected ABI were compatible with some potential for inconsistencies.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS-FP-ABI-Variants"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-FP-ABI-Selection" accesskey="n" rel="next">MIPS FP ABI Selection</a>, Previous: <a href="#MIPS-FP-ABI-History" accesskey="p" rel="previous">MIPS FP ABI History</a>, Up: <a href="#MIPS-FP-ABIs" accesskey="u" rel="up">MIPS FP ABIs</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Supported-FP-ABIs"></a>
|
|
<h4 class="subsubsection">9.27.9.2 Supported FP ABIs</h4>
|
|
<p>The supported floating-point ABI variants are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>0 - No floating-point</code></dt>
|
|
<dd><p>This variant is used to indicate that floating-point is not used within
|
|
the module at all and therefore has no impact on the ABI. This is the
|
|
default.
|
|
</p>
|
|
</dd>
|
|
<dt><code>1 - Double-precision</code></dt>
|
|
<dd><p>This variant indicates that double-precision support is used. For 64-bit
|
|
ABIs this means that 64-bit wide floating-point registers are required.
|
|
For 32-bit ABIs this means that 32-bit wide floating-point registers are
|
|
required and double-precision operations use pairs of registers.
|
|
</p>
|
|
</dd>
|
|
<dt><code>2 - Single-precision</code></dt>
|
|
<dd><p>This variant indicates that single-precision support is used. Double
|
|
precision operations will be supported via soft-float routines.
|
|
</p>
|
|
</dd>
|
|
<dt><code>3 - Soft-float</code></dt>
|
|
<dd><p>This variant indicates that although floating-point support is used all
|
|
operations are emulated in software. This means the ABI is modified to
|
|
pass all floating-point data in general-purpose registers.
|
|
</p>
|
|
</dd>
|
|
<dt><code>4 - Deprecated</code></dt>
|
|
<dd><p>This variant existed as an initial attempt at supporting 64-bit wide
|
|
floating-point registers for O32 ABI on a MIPS32r2 CPU. This has been
|
|
superseded by 5, 6 and 7.
|
|
</p>
|
|
</dd>
|
|
<dt><code>5 - Double-precision 32-bit CPU, 32-bit or 64-bit FPU</code></dt>
|
|
<dd><p>This variant is used by 32-bit ABIs to indicate that the floating-point
|
|
code in the module has been designed to operate correctly with either
|
|
32-bit wide or 64-bit wide floating-point registers. Double-precision
|
|
support is used. Only O32 currently supports this variant and requires
|
|
a minimum architecture of MIPS II.
|
|
</p>
|
|
</dd>
|
|
<dt><code>6 - Double-precision 32-bit FPU, 64-bit FPU</code></dt>
|
|
<dd><p>This variant is used by 32-bit ABIs to indicate that the floating-point
|
|
code in the module requires 64-bit wide floating-point registers.
|
|
Double-precision support is used. Only O32 currently supports this
|
|
variant and requires a minimum architecture of MIPS32r2.
|
|
</p>
|
|
</dd>
|
|
<dt><code>7 - Double-precision compat 32-bit FPU, 64-bit FPU</code></dt>
|
|
<dd><p>This variant is used by 32-bit ABIs to indicate that the floating-point
|
|
code in the module requires 64-bit wide floating-point registers.
|
|
Double-precision support is used. This differs from the previous ABI
|
|
as it restricts use of odd-numbered single-precision registers. Only
|
|
O32 currently supports this variant and requires a minimum architecture
|
|
of MIPS32r2.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="MIPS-FP-ABI-Selection"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-FP-ABI-Compatibility" accesskey="n" rel="next">MIPS FP ABI Compatibility</a>, Previous: <a href="#MIPS-FP-ABI-Variants" accesskey="p" rel="previous">MIPS FP ABI Variants</a>, Up: <a href="#MIPS-FP-ABIs" accesskey="u" rel="up">MIPS FP ABIs</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Automatic-selection-of-FP-ABI"></a>
|
|
<h4 class="subsubsection">9.27.9.3 Automatic selection of FP ABI</h4>
|
|
<a name="index-_002emodule-fp_003dnn-directive_002c-MIPS"></a>
|
|
<p>In order to simplify and add safety to the process of selecting the
|
|
correct floating-point ABI, the assembler will automatically infer the
|
|
correct <code>.gnu_attribute 4, <var>n</var></code> directive based on command-line
|
|
options and <code>.module</code> overrides. Where an explicit
|
|
<code>.gnu_attribute 4, <var>n</var></code> directive has been seen then a warning
|
|
will be raised if it does not match an inferred setting.
|
|
</p>
|
|
<p>The floating-point ABI is inferred as follows. If ‘<samp>-msoft-float</samp>’
|
|
has been used the module will be marked as soft-float. If
|
|
‘<samp>-msingle-float</samp>’ has been used then the module will be marked as
|
|
single-precision. The remaining ABIs are then selected based
|
|
on the FP register width. Double-precision is selected if the width
|
|
of GP and FP registers match and the special double-precision variants
|
|
for 32-bit ABIs are then selected depending on ‘<samp>-mfpxx</samp>’,
|
|
‘<samp>-mfp64</samp>’ and ‘<samp>-mno-odd-spreg</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS-FP-ABI-Compatibility"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#MIPS-FP-ABI-Selection" accesskey="p" rel="previous">MIPS FP ABI Selection</a>, Up: <a href="#MIPS-FP-ABIs" accesskey="u" rel="up">MIPS FP ABIs</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Linking-different-FP-ABI-variants"></a>
|
|
<h4 class="subsubsection">9.27.9.4 Linking different FP ABI variants</h4>
|
|
<p>Modules using the default FP ABI (no floating-point) can be linked with
|
|
any other (singular) FP ABI variant.
|
|
</p>
|
|
<p>Special compatibility support exists for O32 with the four
|
|
double-precision FP ABI variants. The ‘<samp>-mfpxx</samp>’ FP ABI is specifically
|
|
designed to be compatible with the standard double-precision ABI and the
|
|
‘<samp>-mfp64</samp>’ FP ABIs. This makes it desirable for O32 modules to be
|
|
built as ‘<samp>-mfpxx</samp>’ to ensure the maximum compatibility with other
|
|
modules produced for more specific needs. The only FP ABIs which cannot
|
|
be linked together are the standard double-precision ABI and the full
|
|
‘<samp>-mfp64</samp>’ ABI with ‘<samp>-modd-spreg</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS-NaN-Encodings"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-Option-Stack" accesskey="n" rel="next">MIPS Option Stack</a>, Previous: <a href="#MIPS-FP-ABIs" accesskey="p" rel="previous">MIPS FP ABIs</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directives-to-record-which-NaN-encoding-is-being-used"></a>
|
|
<h4 class="subsection">9.27.10 Directives to record which NaN encoding is being used</h4>
|
|
|
|
<a name="index-MIPS-IEEE-754-NaN-data-encoding-selection"></a>
|
|
<a name="index-_002enan-directive_002c-MIPS"></a>
|
|
<p>The IEEE 754 floating-point standard defines two types of not-a-number
|
|
(NaN) data: “signalling” NaNs and “quiet” NaNs. The original version
|
|
of the standard did not specify how these two types should be
|
|
distinguished. Most implementations followed the i387 model, in which
|
|
the first bit of the significand is set for quiet NaNs and clear for
|
|
signalling NaNs. However, the original MIPS implementation assigned the
|
|
opposite meaning to the bit, so that it was set for signalling NaNs and
|
|
clear for quiet NaNs.
|
|
</p>
|
|
<p>The 2008 revision of the standard formally suggested the i387 choice
|
|
and as from Sep 2012 the current release of the MIPS architecture
|
|
therefore optionally supports that form. Code that uses one NaN encoding
|
|
would usually be incompatible with code that uses the other NaN encoding,
|
|
so MIPS ELF objects have a flag (<code>EF_MIPS_NAN2008</code>) to record which
|
|
encoding is being used.
|
|
</p>
|
|
<p>Assembly files can use the <code>.nan</code> directive to select between the
|
|
two encodings. ‘<samp>.nan 2008</samp>’ says that the assembly file uses the
|
|
IEEE 754-2008 encoding while ‘<samp>.nan legacy</samp>’ says that the file uses
|
|
the original MIPS encoding. If several <code>.nan</code> directives are given,
|
|
the final setting is the one that is used.
|
|
</p>
|
|
<p>The command-line options <samp>-mnan=legacy</samp> and <samp>-mnan=2008</samp>
|
|
can be used instead of ‘<samp>.nan legacy</samp>’ and ‘<samp>.nan 2008</samp>’
|
|
respectively. However, any <code>.nan</code> directive overrides the
|
|
command-line setting.
|
|
</p>
|
|
<p>‘<samp>.nan legacy</samp>’ is the default if no <code>.nan</code> directive or
|
|
<samp>-mnan</samp> option is given.
|
|
</p>
|
|
<p>Note that <small>GNU</small> <code>as</code> does not produce NaNs itself and
|
|
therefore these directives do not affect code generation. They simply
|
|
control the setting of the <code>EF_MIPS_NAN2008</code> flag.
|
|
</p>
|
|
<p>Traditional MIPS assemblers do not support these directives.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS-Option-Stack"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-ASE-Instruction-Generation-Overrides" accesskey="n" rel="next">MIPS ASE Instruction Generation Overrides</a>, Previous: <a href="#MIPS-NaN-Encodings" accesskey="p" rel="previous">MIPS NaN Encodings</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directives-to-save-and-restore-options"></a>
|
|
<h4 class="subsection">9.27.11 Directives to save and restore options</h4>
|
|
|
|
<a name="index-MIPS-option-stack"></a>
|
|
<a name="index-_002eset-push"></a>
|
|
<a name="index-_002eset-pop"></a>
|
|
<p>The directives <code>.set push</code> and <code>.set pop</code> may be used to save
|
|
and restore the current settings for all the options which are
|
|
controlled by <code>.set</code>. The <code>.set push</code> directive saves the
|
|
current settings on a stack. The <code>.set pop</code> directive pops the
|
|
stack and restores the settings.
|
|
</p>
|
|
<p>These directives can be useful inside an macro which must change an
|
|
option such as the ISA level or instruction reordering but does not want
|
|
to change the state of the code which invoked the macro.
|
|
</p>
|
|
<p>Traditional MIPS assemblers do not support these directives.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS-ASE-Instruction-Generation-Overrides"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-Floating_002dPoint" accesskey="n" rel="next">MIPS Floating-Point</a>, Previous: <a href="#MIPS-Option-Stack" accesskey="p" rel="previous">MIPS Option Stack</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directives-to-control-generation-of-MIPS-ASE-instructions"></a>
|
|
<h4 class="subsection">9.27.12 Directives to control generation of MIPS ASE instructions</h4>
|
|
|
|
<a name="index-MIPS-MIPS_002d3D-instruction-generation-override"></a>
|
|
<a name="index-_002eset-mips3d"></a>
|
|
<a name="index-_002eset-nomips3d"></a>
|
|
<p>The directive <code>.set mips3d</code> makes the assembler accept instructions
|
|
from the MIPS-3D Application Specific Extension from that point on
|
|
in the assembly. The <code>.set nomips3d</code> directive prevents MIPS-3D
|
|
instructions from being accepted.
|
|
</p>
|
|
<a name="index-SmartMIPS-instruction-generation-override"></a>
|
|
<a name="index-_002eset-smartmips"></a>
|
|
<a name="index-_002eset-nosmartmips"></a>
|
|
<p>The directive <code>.set smartmips</code> makes the assembler accept
|
|
instructions from the SmartMIPS Application Specific Extension to the
|
|
MIPS32 ISA from that point on in the assembly. The
|
|
<code>.set nosmartmips</code> directive prevents SmartMIPS instructions from
|
|
being accepted.
|
|
</p>
|
|
<a name="index-MIPS-MDMX-instruction-generation-override"></a>
|
|
<a name="index-_002eset-mdmx"></a>
|
|
<a name="index-_002eset-nomdmx"></a>
|
|
<p>The directive <code>.set mdmx</code> makes the assembler accept instructions
|
|
from the MDMX Application Specific Extension from that point on
|
|
in the assembly. The <code>.set nomdmx</code> directive prevents MDMX
|
|
instructions from being accepted.
|
|
</p>
|
|
<a name="index-MIPS-DSP-Release-1-instruction-generation-override"></a>
|
|
<a name="index-_002eset-dsp"></a>
|
|
<a name="index-_002eset-nodsp"></a>
|
|
<p>The directive <code>.set dsp</code> makes the assembler accept instructions
|
|
from the DSP Release 1 Application Specific Extension from that point
|
|
on in the assembly. The <code>.set nodsp</code> directive prevents DSP
|
|
Release 1 instructions from being accepted.
|
|
</p>
|
|
<a name="index-MIPS-DSP-Release-2-instruction-generation-override"></a>
|
|
<a name="index-_002eset-dspr2"></a>
|
|
<a name="index-_002eset-nodspr2"></a>
|
|
<p>The directive <code>.set dspr2</code> makes the assembler accept instructions
|
|
from the DSP Release 2 Application Specific Extension from that point
|
|
on in the assembly. This directive implies <code>.set dsp</code>. The
|
|
<code>.set nodspr2</code> directive prevents DSP Release 2 instructions from
|
|
being accepted.
|
|
</p>
|
|
<a name="index-MIPS-DSP-Release-3-instruction-generation-override"></a>
|
|
<a name="index-_002eset-dspr3"></a>
|
|
<a name="index-_002eset-nodspr3"></a>
|
|
<p>The directive <code>.set dspr3</code> makes the assembler accept instructions
|
|
from the DSP Release 3 Application Specific Extension from that point
|
|
on in the assembly. This directive implies <code>.set dsp</code> and
|
|
<code>.set dspr2</code>. The <code>.set nodspr3</code> directive prevents DSP
|
|
Release 3 instructions from being accepted.
|
|
</p>
|
|
<a name="index-MIPS-MT-instruction-generation-override"></a>
|
|
<a name="index-_002eset-mt"></a>
|
|
<a name="index-_002eset-nomt"></a>
|
|
<p>The directive <code>.set mt</code> makes the assembler accept instructions
|
|
from the MT Application Specific Extension from that point on
|
|
in the assembly. The <code>.set nomt</code> directive prevents MT
|
|
instructions from being accepted.
|
|
</p>
|
|
<a name="index-MIPS-MCU-instruction-generation-override"></a>
|
|
<a name="index-_002eset-mcu"></a>
|
|
<a name="index-_002eset-nomcu"></a>
|
|
<p>The directive <code>.set mcu</code> makes the assembler accept instructions
|
|
from the MCU Application Specific Extension from that point on
|
|
in the assembly. The <code>.set nomcu</code> directive prevents MCU
|
|
instructions from being accepted.
|
|
</p>
|
|
<a name="index-MIPS-SIMD-Architecture-instruction-generation-override"></a>
|
|
<a name="index-_002eset-msa"></a>
|
|
<a name="index-_002eset-nomsa"></a>
|
|
<p>The directive <code>.set msa</code> makes the assembler accept instructions
|
|
from the MIPS SIMD Architecture Extension from that point on
|
|
in the assembly. The <code>.set nomsa</code> directive prevents MSA
|
|
instructions from being accepted.
|
|
</p>
|
|
<a name="index-Virtualization-instruction-generation-override"></a>
|
|
<a name="index-_002eset-virt"></a>
|
|
<a name="index-_002eset-novirt"></a>
|
|
<p>The directive <code>.set virt</code> makes the assembler accept instructions
|
|
from the Virtualization Application Specific Extension from that point
|
|
on in the assembly. The <code>.set novirt</code> directive prevents Virtualization
|
|
instructions from being accepted.
|
|
</p>
|
|
<a name="index-MIPS-eXtended-Physical-Address-_0028XPA_0029-instruction-generation-override"></a>
|
|
<a name="index-_002eset-xpa"></a>
|
|
<a name="index-_002eset-noxpa"></a>
|
|
<p>The directive <code>.set xpa</code> makes the assembler accept instructions
|
|
from the XPA Extension from that point on in the assembly. The
|
|
<code>.set noxpa</code> directive prevents XPA instructions from being accepted.
|
|
</p>
|
|
<a name="index-MIPS16e2-instruction-generation-override"></a>
|
|
<a name="index-_002eset-mips16e2"></a>
|
|
<a name="index-_002eset-nomips16e2"></a>
|
|
<p>The directive <code>.set mips16e2</code> makes the assembler accept instructions
|
|
from the MIPS16e2 Application Specific Extension from that point on in the
|
|
assembly, whenever in MIPS16 mode. The <code>.set nomips16e2</code> directive
|
|
prevents MIPS16e2 instructions from being accepted, in MIPS16 mode. Neither
|
|
directive affects the state of MIPS16 mode being active itself which has
|
|
separate controls.
|
|
</p>
|
|
<a name="index-MIPS-cyclic-redundancy-check-_0028CRC_0029-instruction-generation-override"></a>
|
|
<a name="index-_002eset-crc"></a>
|
|
<a name="index-_002eset-nocrc"></a>
|
|
<p>The directive <code>.set crc</code> makes the assembler accept instructions
|
|
from the CRC Extension from that point on in the assembly. The
|
|
<code>.set nocrc</code> directive prevents CRC instructions from being accepted.
|
|
</p>
|
|
<a name="index-MIPS-Global-INValidate-_0028GINV_0029-instruction-generation-override"></a>
|
|
<a name="index-_002eset-ginv"></a>
|
|
<a name="index-_002eset-noginv"></a>
|
|
<p>The directive <code>.set ginv</code> makes the assembler accept instructions
|
|
from the GINV Extension from that point on in the assembly. The
|
|
<code>.set noginv</code> directive prevents GINV instructions from being accepted.
|
|
</p>
|
|
<a name="index-Loongson-MultiMedia-extensions-Instructions-_0028MMI_0029-generation-override"></a>
|
|
<a name="index-_002eset-loongson_002dmmi"></a>
|
|
<a name="index-_002eset-noloongson_002dmmi"></a>
|
|
<p>The directive <code>.set loongson-mmi</code> makes the assembler accept
|
|
instructions from the MMI Extension from that point on in the assembly.
|
|
The <code>.set noloongson-mmi</code> directive prevents MMI instructions from
|
|
being accepted.
|
|
</p>
|
|
<a name="index-Loongson-Content-Address-Memory-_0028CAM_0029-generation-override"></a>
|
|
<a name="index-_002eset-loongson_002dcam"></a>
|
|
<a name="index-_002eset-noloongson_002dcam"></a>
|
|
<p>The directive <code>.set loongson-cam</code> makes the assembler accept
|
|
instructions from the Loongson CAM from that point on in the assembly.
|
|
The <code>.set noloongson-cam</code> directive prevents Loongson CAM instructions
|
|
from being accepted.
|
|
</p>
|
|
<a name="index-Loongson-EXTensions-_0028EXT_0029-instructions-generation-override"></a>
|
|
<a name="index-_002eset-loongson_002dext"></a>
|
|
<a name="index-_002eset-noloongson_002dext"></a>
|
|
<p>The directive <code>.set loongson-ext</code> makes the assembler accept
|
|
instructions from the Loongson EXT from that point on in the assembly.
|
|
The <code>.set noloongson-ext</code> directive prevents Loongson EXT instructions
|
|
from being accepted.
|
|
</p>
|
|
<a name="index-Loongson-EXTensions-R2-_0028EXT2_0029-instructions-generation-override"></a>
|
|
<a name="index-_002eset-loongson_002dext2"></a>
|
|
<a name="index-_002eset-noloongson_002dext2"></a>
|
|
<p>The directive <code>.set loongson-ext2</code> makes the assembler accept
|
|
instructions from the Loongson EXT2 from that point on in the assembly.
|
|
This directive implies <code>.set loognson-ext</code>.
|
|
The <code>.set noloongson-ext2</code> directive prevents Loongson EXT2 instructions
|
|
from being accepted.
|
|
</p>
|
|
<p>Traditional MIPS assemblers do not support these directives.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS-Floating_002dPoint"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MIPS-Syntax" accesskey="n" rel="next">MIPS Syntax</a>, Previous: <a href="#MIPS-ASE-Instruction-Generation-Overrides" accesskey="p" rel="previous">MIPS ASE Instruction Generation Overrides</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directives-to-override-floating_002dpoint-options"></a>
|
|
<h4 class="subsection">9.27.13 Directives to override floating-point options</h4>
|
|
|
|
<a name="index-Disable-floating_002dpoint-instructions"></a>
|
|
<a name="index-_002eset-softfloat"></a>
|
|
<a name="index-_002eset-hardfloat"></a>
|
|
<p>The directives <code>.set softfloat</code> and <code>.set hardfloat</code> provide
|
|
finer control of disabling and enabling float-point instructions.
|
|
These directives always override the default (that hard-float
|
|
instructions are accepted) or the command-line options
|
|
(‘<samp>-msoft-float</samp>’ and ‘<samp>-mhard-float</samp>’).
|
|
</p>
|
|
<a name="index-Disable-single_002dprecision-floating_002dpoint-operations"></a>
|
|
<a name="index-_002eset-singlefloat"></a>
|
|
<a name="index-_002eset-doublefloat"></a>
|
|
<p>The directives <code>.set singlefloat</code> and <code>.set doublefloat</code>
|
|
provide finer control of disabling and enabling double-precision
|
|
float-point operations. These directives always override the default
|
|
(that double-precision operations are accepted) or the command-line
|
|
options (‘<samp>-msingle-float</samp>’ and ‘<samp>-mdouble-float</samp>’).
|
|
</p>
|
|
<p>Traditional MIPS assemblers do not support these directives.
|
|
</p>
|
|
<hr>
|
|
<a name="MIPS-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#MIPS-Floating_002dPoint" accesskey="p" rel="previous">MIPS Floating-Point</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntactical-considerations-for-the-MIPS-assembler"></a>
|
|
<h4 class="subsection">9.27.14 Syntactical considerations for the MIPS assembler</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#MIPS_002dChars" accesskey="1">MIPS-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="MIPS_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#MIPS-Syntax" accesskey="u" rel="up">MIPS Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-20"></a>
|
|
<h4 class="subsubsection">9.27.14.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-MIPS"></a>
|
|
<a name="index-MIPS-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>#</samp>’ on a line indicates the start of a comment
|
|
that extends to the end of the current line.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line, the whole line
|
|
is treated as a comment, but in this case the line can also be a
|
|
logical line number directive (see <a href="#Comments">Comments</a>) or a
|
|
preprocessor control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-MIPS"></a>
|
|
<a name="index-statement-separator_002c-MIPS"></a>
|
|
<a name="index-MIPS-line-separator"></a>
|
|
<p>The ‘<samp>;</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
<hr>
|
|
<a name="MMIX_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MSP430_002dDependent" accesskey="n" rel="next">MSP430-Dependent</a>, Previous: <a href="#MIPS_002dDependent" accesskey="p" rel="previous">MIPS-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="MMIX-Dependent-Features"></a>
|
|
<h3 class="section">9.28 MMIX Dependent Features</h3>
|
|
|
|
<a name="index-MMIX-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#MMIX_002dOpts" accesskey="1">MMIX-Opts</a>:</td><td> </td><td align="left" valign="top">Command-line Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MMIX_002dExpand" accesskey="2">MMIX-Expand</a>:</td><td> </td><td align="left" valign="top">Instruction expansion
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MMIX_002dSyntax" accesskey="3">MMIX-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MMIX_002dmmixal" accesskey="4">MMIX-mmixal</a>:</td><td> </td><td align="left" valign="top">Differences to <code>mmixal</code> syntax and semantics
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="MMIX_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MMIX_002dExpand" accesskey="n" rel="next">MMIX-Expand</a>, Up: <a href="#MMIX_002dDependent" accesskey="u" rel="up">MMIX-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Command_002dline-Options-1"></a>
|
|
<h4 class="subsection">9.28.1 Command-line Options</h4>
|
|
|
|
<a name="index-options_002c-MMIX"></a>
|
|
<a name="index-MMIX-options"></a>
|
|
<p>The MMIX version of <code>as</code> has some machine-dependent options.
|
|
</p>
|
|
<a name="index-_002d_002dfixed_002dspecial_002dregister_002dnames-command_002dline-option_002c-MMIX"></a>
|
|
<p>When ‘<samp>--fixed-special-register-names</samp>’ is specified, only the register
|
|
names specified in <a href="#MMIX_002dRegs">MMIX-Regs</a> are recognized in the instructions
|
|
<code>PUT</code> and <code>GET</code>.
|
|
</p>
|
|
<a name="index-_002d_002dglobalize_002dsymbols-command_002dline-option_002c-MMIX"></a>
|
|
<p>You can use the ‘<samp>--globalize-symbols</samp>’ to make all symbols global.
|
|
This option is useful when splitting up a <code>mmixal</code> program into
|
|
several files.
|
|
</p>
|
|
<a name="index-_002d_002dgnu_002dsyntax-command_002dline-option_002c-MMIX"></a>
|
|
<p>The ‘<samp>--gnu-syntax</samp>’ turns off most syntax compatibility with
|
|
<code>mmixal</code>. Its usability is currently doubtful.
|
|
</p>
|
|
<a name="index-_002d_002drelax-command_002dline-option_002c-MMIX"></a>
|
|
<p>The ‘<samp>--relax</samp>’ option is not fully supported, but will eventually make
|
|
the object file prepared for linker relaxation.
|
|
</p>
|
|
<a name="index-_002d_002dno_002dpredefined_002dsyms-command_002dline-option_002c-MMIX"></a>
|
|
<p>If you want to avoid inadvertently calling a predefined symbol and would
|
|
rather get an error, for example when using <code>as</code> with a
|
|
compiler or other machine-generated code, specify
|
|
‘<samp>--no-predefined-syms</samp>’. This turns off built-in predefined
|
|
definitions of all such symbols, including rounding-mode symbols, segment
|
|
symbols, ‘<samp>BIT</samp>’ symbols, and <code>TRAP</code> symbols used in <code>mmix</code>
|
|
“system calls”. It also turns off predefined special-register names,
|
|
except when used in <code>PUT</code> and <code>GET</code> instructions.
|
|
</p>
|
|
<a name="index-_002d_002dno_002dexpand-command_002dline-option_002c-MMIX"></a>
|
|
<p>By default, some instructions are expanded to fit the size of the operand
|
|
or an external symbol (see <a href="#MMIX_002dExpand">MMIX-Expand</a>). By passing
|
|
‘<samp>--no-expand</samp>’, no such expansion will be done, instead causing errors
|
|
at link time if the operand does not fit.
|
|
</p>
|
|
<a name="index-_002d_002dno_002dmerge_002dgregs-command_002dline-option_002c-MMIX"></a>
|
|
<p>The <code>mmixal</code> documentation (see <a href="#mmixsite">mmixsite</a>) specifies that global
|
|
registers allocated with the ‘<samp>GREG</samp>’ directive (see <a href="#MMIX_002dgreg">MMIX-greg</a>) and
|
|
initialized to the same non-zero value, will refer to the same global
|
|
register. This isn’t strictly enforceable in <code>as</code> since the
|
|
final addresses aren’t known until link-time, but it will do an effort
|
|
unless the ‘<samp>--no-merge-gregs</samp>’ option is specified. (Register merging
|
|
isn’t yet implemented in <code>ld</code>.)
|
|
</p>
|
|
<a name="index-_002dx-command_002dline-option_002c-MMIX"></a>
|
|
<p><code>as</code> will warn every time it expands an instruction to fit an
|
|
operand unless the option ‘<samp>-x</samp>’ is specified. It is believed that
|
|
this behaviour is more useful than just mimicking <code>mmixal</code>’s
|
|
behaviour, in which instructions are only expanded if the ‘<samp>-x</samp>’ option
|
|
is specified, and assembly fails otherwise, when an instruction needs to
|
|
be expanded. It needs to be kept in mind that <code>mmixal</code> is both an
|
|
assembler and linker, while <code>as</code> will expand instructions
|
|
that at link stage can be contracted. (Though linker relaxation isn’t yet
|
|
implemented in <code>ld</code>.) The option ‘<samp>-x</samp>’ also implies
|
|
‘<samp>--linker-allocated-gregs</samp>’.
|
|
</p>
|
|
<a name="index-_002d_002dno_002dpushj_002dstubs-command_002dline-option_002c-MMIX"></a>
|
|
<a name="index-_002d_002dno_002dstubs-command_002dline-option_002c-MMIX"></a>
|
|
<p>If instruction expansion is enabled, <code>as</code> can expand a
|
|
‘<samp>PUSHJ</samp>’ instruction into a series of instructions. The shortest
|
|
expansion is to not expand it, but just mark the call as redirectable to a
|
|
stub, which <code>ld</code> creates at link-time, but only if the
|
|
original ‘<samp>PUSHJ</samp>’ instruction is found not to reach the target. The
|
|
stub consists of the necessary instructions to form a jump to the target.
|
|
This happens if <code>as</code> can assert that the ‘<samp>PUSHJ</samp>’
|
|
instruction can reach such a stub. The option ‘<samp>--no-pushj-stubs</samp>’
|
|
disables this shorter expansion, and the longer series of instructions is
|
|
then created at assembly-time. The option ‘<samp>--no-stubs</samp>’ is a synonym,
|
|
intended for compatibility with future releases, where generation of stubs
|
|
for other instructions may be implemented.
|
|
</p>
|
|
<a name="index-_002d_002dlinker_002dallocated_002dgregs-command_002dline-option_002c-MMIX"></a>
|
|
<p>Usually a two-operand-expression (see <a href="#GREG_002dbase">GREG-base</a>) without a matching
|
|
‘<samp>GREG</samp>’ directive is treated as an error by <code>as</code>. When
|
|
the option ‘<samp>--linker-allocated-gregs</samp>’ is in effect, they are instead
|
|
passed through to the linker, which will allocate as many global registers
|
|
as is needed.
|
|
</p>
|
|
<hr>
|
|
<a name="MMIX_002dExpand"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MMIX_002dSyntax" accesskey="n" rel="next">MMIX-Syntax</a>, Previous: <a href="#MMIX_002dOpts" accesskey="p" rel="previous">MMIX-Opts</a>, Up: <a href="#MMIX_002dDependent" accesskey="u" rel="up">MMIX-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Instruction-expansion-1"></a>
|
|
<h4 class="subsection">9.28.2 Instruction expansion</h4>
|
|
|
|
<a name="index-instruction-expansion_002c-MMIX"></a>
|
|
<p>When <code>as</code> encounters an instruction with an operand that is
|
|
either not known or does not fit the operand size of the instruction,
|
|
<code>as</code> (and <code>ld</code>) will expand the instruction into
|
|
a sequence of instructions semantically equivalent to the operand fitting
|
|
the instruction. Expansion will take place for the following
|
|
instructions:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt>‘<samp>GETA</samp>’</dt>
|
|
<dd><p>Expands to a sequence of four instructions: <code>SETL</code>, <code>INCML</code>,
|
|
<code>INCMH</code> and <code>INCH</code>. The operand must be a multiple of four.
|
|
</p></dd>
|
|
<dt>Conditional branches</dt>
|
|
<dd><p>A branch instruction is turned into a branch with the complemented
|
|
condition and prediction bit over five instructions; four instructions
|
|
setting <code>$255</code> to the operand value, which like with <code>GETA</code> must
|
|
be a multiple of four, and a final <code>GO $255,$255,0</code>.
|
|
</p></dd>
|
|
<dt>‘<samp>PUSHJ</samp>’</dt>
|
|
<dd><p>Similar to expansion for conditional branches; four instructions set
|
|
<code>$255</code> to the operand value, followed by a <code>PUSHGO $255,$255,0</code>.
|
|
</p></dd>
|
|
<dt>‘<samp>JMP</samp>’</dt>
|
|
<dd><p>Similar to conditional branches and <code>PUSHJ</code>. The final instruction
|
|
is <code>GO $255,$255,0</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The linker <code>ld</code> is expected to shrink these expansions for
|
|
code assembled with ‘<samp>--relax</samp>’ (though not currently implemented).
|
|
</p>
|
|
<hr>
|
|
<a name="MMIX_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MMIX_002dmmixal" accesskey="n" rel="next">MMIX-mmixal</a>, Previous: <a href="#MMIX_002dExpand" accesskey="p" rel="previous">MMIX-Expand</a>, Up: <a href="#MMIX_002dDependent" accesskey="u" rel="up">MMIX-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-21"></a>
|
|
<h4 class="subsection">9.28.3 Syntax</h4>
|
|
|
|
<p>The assembly syntax is supposed to be upward compatible with that
|
|
described in Sections 1.3 and 1.4 of ‘<samp>The Art of Computer
|
|
Programming, Volume 1</samp>’. Draft versions of those chapters as well as other
|
|
MMIX information is located at
|
|
<a name="mmixsite"></a><a href="http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html">http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html</a>.
|
|
Most code examples from the mmixal package located there should work
|
|
unmodified when assembled and linked as single files, with a few
|
|
noteworthy exceptions (see <a href="#MMIX_002dmmixal">MMIX-mmixal</a>).
|
|
</p>
|
|
<p>Before an instruction is emitted, the current location is aligned to the
|
|
next four-byte boundary. If a label is defined at the beginning of the
|
|
line, its value will be the aligned value.
|
|
</p>
|
|
<p>In addition to the traditional hex-prefix ‘<samp>0x</samp>’, a hexadecimal number
|
|
can also be specified by the prefix character ‘<samp>#</samp>’.
|
|
</p>
|
|
<p>After all operands to an MMIX instruction or directive have been
|
|
specified, the rest of the line is ignored, treated as a comment.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#MMIX_002dChars" accesskey="1">MMIX-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MMIX_002dSymbols" accesskey="2">MMIX-Symbols</a>:</td><td> </td><td align="left" valign="top">Symbols
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MMIX_002dRegs" accesskey="3">MMIX-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MMIX_002dPseudos" accesskey="4">MMIX-Pseudos</a>:</td><td> </td><td align="left" valign="top">Assembler Directives
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="MMIX_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MMIX_002dSymbols" accesskey="n" rel="next">MMIX-Symbols</a>, Up: <a href="#MMIX_002dSyntax" accesskey="u" rel="up">MMIX-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-21"></a>
|
|
<h4 class="subsubsection">9.28.3.1 Special Characters</h4>
|
|
<a name="index-line-comment-characters_002c-MMIX"></a>
|
|
<a name="index-MMIX-line-comment-characters"></a>
|
|
|
|
<p>The characters ‘<samp>*</samp>’ and ‘<samp>#</samp>’ are line comment characters; each
|
|
start a comment at the beginning of a line, but only at the beginning of a
|
|
line. A ‘<samp>#</samp>’ prefixes a hexadecimal number if found elsewhere on a
|
|
line. If a ‘<samp>#</samp>’ appears at the start of a line the whole line is
|
|
treated as a comment, but the line can also act as a logical line
|
|
number directive (see <a href="#Comments">Comments</a>) or a preprocessor control command
|
|
(see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<p>Two other characters, ‘<samp>%</samp>’ and ‘<samp>!</samp>’, each start a comment anywhere
|
|
on the line. Thus you can’t use the ‘<samp>modulus</samp>’ and ‘<samp>not</samp>’
|
|
operators in expressions normally associated with these two characters.
|
|
</p>
|
|
<p>A ‘<samp>;</samp>’ is a line separator, treated as a new-line, so separate
|
|
instructions can be specified on a single line.
|
|
</p>
|
|
<hr>
|
|
<a name="MMIX_002dSymbols"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MMIX_002dRegs" accesskey="n" rel="next">MMIX-Regs</a>, Previous: <a href="#MMIX_002dChars" accesskey="p" rel="previous">MMIX-Chars</a>, Up: <a href="#MMIX_002dSyntax" accesskey="u" rel="up">MMIX-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbols-4"></a>
|
|
<h4 class="subsubsection">9.28.3.2 Symbols</h4>
|
|
<p>The character ‘<samp>:</samp>’ is permitted in identifiers. There are two
|
|
exceptions to it being treated as any other symbol character: if a symbol
|
|
begins with ‘<samp>:</samp>’, it means that the symbol is in the global namespace
|
|
and that the current prefix should not be prepended to that symbol
|
|
(see <a href="#MMIX_002dprefix">MMIX-prefix</a>). The ‘<samp>:</samp>’ is then not considered part of the
|
|
symbol. For a symbol in the label position (first on a line), a ‘<samp>:</samp>’
|
|
at the end of a symbol is silently stripped off. A label is permitted,
|
|
but not required, to be followed by a ‘<samp>:</samp>’, as with many other
|
|
assembly formats.
|
|
</p>
|
|
<p>The character ‘<samp>@</samp>’ in an expression, is a synonym for ‘<samp>.</samp>’, the
|
|
current location.
|
|
</p>
|
|
<p>In addition to the common forward and backward local symbol formats
|
|
(see <a href="#Symbol-Names">Symbol Names</a>), they can be specified with upper-case ‘<samp>B</samp>’ and
|
|
‘<samp>F</samp>’, as in ‘<samp>8B</samp>’ and ‘<samp>9F</samp>’. A local label defined for the
|
|
current position is written with a ‘<samp>H</samp>’ appended to the number:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">3H LDB $0,$1,2
|
|
</pre></div>
|
|
<p>This and traditional local-label formats cannot be mixed: a label must be
|
|
defined and referred to using the same format.
|
|
</p>
|
|
<p>There’s a minor caveat: just as for the ordinary local symbols, the local
|
|
symbols are translated into ordinary symbols using control characters are
|
|
to hide the ordinal number of the symbol. Unfortunately, these symbols
|
|
are not translated back in error messages. Thus you may see confusing
|
|
error messages when local symbols are used. Control characters
|
|
‘<samp>\003</samp>’ (control-C) and ‘<samp>\004</samp>’ (control-D) are used for the
|
|
MMIX-specific local-symbol syntax.
|
|
</p>
|
|
<p>The symbol ‘<samp>Main</samp>’ is handled specially; it is always global.
|
|
</p>
|
|
<p>By defining the symbols ‘<samp>__.MMIX.start..text</samp>’ and
|
|
‘<samp>__.MMIX.start..data</samp>’, the address of respectively the ‘<samp>.text</samp>’
|
|
and ‘<samp>.data</samp>’ segments of the final program can be defined, though when
|
|
linking more than one object file, the code or data in the object file
|
|
containing the symbol is not guaranteed to be start at that position; just
|
|
the final executable. See <a href="#MMIX_002dloc">MMIX-loc</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="MMIX_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MMIX_002dPseudos" accesskey="n" rel="next">MMIX-Pseudos</a>, Previous: <a href="#MMIX_002dSymbols" accesskey="p" rel="previous">MMIX-Symbols</a>, Up: <a href="#MMIX_002dSyntax" accesskey="u" rel="up">MMIX-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-names-1"></a>
|
|
<h4 class="subsubsection">9.28.3.3 Register names</h4>
|
|
<a name="index-register-names_002c-MMIX"></a>
|
|
<a name="index-MMIX-register-names"></a>
|
|
|
|
<p>Local and global registers are specified as ‘<samp>$0</samp>’ to ‘<samp>$255</samp>’.
|
|
The recognized special register names are ‘<samp>rJ</samp>’, ‘<samp>rA</samp>’, ‘<samp>rB</samp>’,
|
|
‘<samp>rC</samp>’, ‘<samp>rD</samp>’, ‘<samp>rE</samp>’, ‘<samp>rF</samp>’, ‘<samp>rG</samp>’, ‘<samp>rH</samp>’,
|
|
‘<samp>rI</samp>’, ‘<samp>rK</samp>’, ‘<samp>rL</samp>’, ‘<samp>rM</samp>’, ‘<samp>rN</samp>’, ‘<samp>rO</samp>’,
|
|
‘<samp>rP</samp>’, ‘<samp>rQ</samp>’, ‘<samp>rR</samp>’, ‘<samp>rS</samp>’, ‘<samp>rT</samp>’, ‘<samp>rU</samp>’,
|
|
‘<samp>rV</samp>’, ‘<samp>rW</samp>’, ‘<samp>rX</samp>’, ‘<samp>rY</samp>’, ‘<samp>rZ</samp>’, ‘<samp>rBB</samp>’,
|
|
‘<samp>rTT</samp>’, ‘<samp>rWW</samp>’, ‘<samp>rXX</samp>’, ‘<samp>rYY</samp>’ and ‘<samp>rZZ</samp>’. A leading
|
|
‘<samp>:</samp>’ is optional for special register names.
|
|
</p>
|
|
<p>Local and global symbols can be equated to register names and used in
|
|
place of ordinary registers.
|
|
</p>
|
|
<p>Similarly for special registers, local and global symbols can be used.
|
|
Also, symbols equated from numbers and constant expressions are allowed in
|
|
place of a special register, except when either of the options
|
|
<code>--no-predefined-syms</code> and <code>--fixed-special-register-names</code> are
|
|
specified. Then only the special register names above are allowed for the
|
|
instructions having a special register operand; <code>GET</code> and <code>PUT</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="MMIX_002dPseudos"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#MMIX_002dRegs" accesskey="p" rel="previous">MMIX-Regs</a>, Up: <a href="#MMIX_002dSyntax" accesskey="u" rel="up">MMIX-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-Directives-3"></a>
|
|
<h4 class="subsubsection">9.28.3.4 Assembler Directives</h4>
|
|
<a name="index-assembler-directives_002c-MMIX"></a>
|
|
<a name="index-pseudo_002dops_002c-MMIX"></a>
|
|
<a name="index-MMIX-assembler-directives"></a>
|
|
<a name="index-MMIX-pseudo_002dops"></a>
|
|
|
|
<dl compact="compact">
|
|
<dt><code>LOC</code></dt>
|
|
<dd><a name="index-assembler-directive-LOC_002c-MMIX"></a>
|
|
<a name="index-pseudo_002dop-LOC_002c-MMIX"></a>
|
|
<a name="index-MMIX-assembler-directive-LOC"></a>
|
|
<a name="index-MMIX-pseudo_002dop-LOC"></a>
|
|
|
|
<a name="MMIX_002dloc"></a><p>The <code>LOC</code> directive sets the current location to the value of the
|
|
operand field, which may include changing sections. If the operand is a
|
|
constant, the section is set to either <code>.data</code> if the value is
|
|
<code>0x2000000000000000</code> or larger, else it is set to <code>.text</code>.
|
|
Within a section, the current location may only be changed to
|
|
monotonically higher addresses. A LOC expression must be a previously
|
|
defined symbol or a “pure” constant.
|
|
</p>
|
|
<p>An example, which sets the label <var>prev</var> to the current location, and
|
|
updates the current location to eight bytes forward:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">prev LOC @+8
|
|
</pre></div>
|
|
|
|
<p>When a LOC has a constant as its operand, a symbol
|
|
<code>__.MMIX.start..text</code> or <code>__.MMIX.start..data</code> is defined
|
|
depending on the address as mentioned above. Each such symbol is
|
|
interpreted as special by the linker, locating the section at that
|
|
address. Note that if multiple files are linked, the first object file
|
|
with that section will be mapped to that address (not necessarily the file
|
|
with the LOC definition).
|
|
</p>
|
|
</dd>
|
|
<dt><code>LOCAL</code></dt>
|
|
<dd><a name="index-assembler-directive-LOCAL_002c-MMIX"></a>
|
|
<a name="index-pseudo_002dop-LOCAL_002c-MMIX"></a>
|
|
<a name="index-MMIX-assembler-directive-LOCAL"></a>
|
|
<a name="index-MMIX-pseudo_002dop-LOCAL"></a>
|
|
|
|
<a name="MMIX_002dlocal"></a><p>Example:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> LOCAL external_symbol
|
|
LOCAL 42
|
|
.local asymbol
|
|
</pre></div>
|
|
|
|
<p>This directive-operation generates a link-time assertion that the operand
|
|
does not correspond to a global register. The operand is an expression
|
|
that at link-time resolves to a register symbol or a number. A number is
|
|
treated as the register having that number. There is one restriction on
|
|
the use of this directive: the pseudo-directive must be placed in a
|
|
section with contents, code or data.
|
|
</p>
|
|
</dd>
|
|
<dt><code>IS</code></dt>
|
|
<dd><a name="index-assembler-directive-IS_002c-MMIX"></a>
|
|
<a name="index-pseudo_002dop-IS_002c-MMIX"></a>
|
|
<a name="index-MMIX-assembler-directive-IS"></a>
|
|
<a name="index-MMIX-pseudo_002dop-IS"></a>
|
|
|
|
<a name="MMIX_002dis"></a><p>The <code>IS</code> directive:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">asymbol IS an_expression
|
|
</pre></div>
|
|
<p>sets the symbol ‘<samp>asymbol</samp>’ to ‘<samp>an_expression</samp>’. A symbol may not
|
|
be set more than once using this directive. Local labels may be set using
|
|
this directive, for example:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">5H IS @+4
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>GREG</code></dt>
|
|
<dd><a name="index-assembler-directive-GREG_002c-MMIX"></a>
|
|
<a name="index-pseudo_002dop-GREG_002c-MMIX"></a>
|
|
<a name="index-MMIX-assembler-directive-GREG"></a>
|
|
<a name="index-MMIX-pseudo_002dop-GREG"></a>
|
|
|
|
<a name="MMIX_002dgreg"></a><p>This directive reserves a global register, gives it an initial value and
|
|
optionally gives it a symbolic name. Some examples:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">areg GREG
|
|
breg GREG data_value
|
|
GREG data_buffer
|
|
.greg creg, another_data_value
|
|
</pre></div>
|
|
|
|
<p>The symbolic register name can be used in place of a (non-special)
|
|
register. If a value isn’t provided, it defaults to zero. Unless the
|
|
option ‘<samp>--no-merge-gregs</samp>’ is specified, non-zero registers allocated
|
|
with this directive may be eliminated by <code>as</code>; another
|
|
register with the same value used in its place.
|
|
Any of the instructions
|
|
‘<samp>CSWAP</samp>’,
|
|
‘<samp>GO</samp>’,
|
|
‘<samp>LDA</samp>’,
|
|
‘<samp>LDBU</samp>’,
|
|
‘<samp>LDB</samp>’,
|
|
‘<samp>LDHT</samp>’,
|
|
‘<samp>LDOU</samp>’,
|
|
‘<samp>LDO</samp>’,
|
|
‘<samp>LDSF</samp>’,
|
|
‘<samp>LDTU</samp>’,
|
|
‘<samp>LDT</samp>’,
|
|
‘<samp>LDUNC</samp>’,
|
|
‘<samp>LDVTS</samp>’,
|
|
‘<samp>LDWU</samp>’,
|
|
‘<samp>LDW</samp>’,
|
|
‘<samp>PREGO</samp>’,
|
|
‘<samp>PRELD</samp>’,
|
|
‘<samp>PREST</samp>’,
|
|
‘<samp>PUSHGO</samp>’,
|
|
‘<samp>STBU</samp>’,
|
|
‘<samp>STB</samp>’,
|
|
‘<samp>STCO</samp>’,
|
|
‘<samp>STHT</samp>’,
|
|
‘<samp>STOU</samp>’,
|
|
‘<samp>STSF</samp>’,
|
|
‘<samp>STTU</samp>’,
|
|
‘<samp>STT</samp>’,
|
|
‘<samp>STUNC</samp>’,
|
|
‘<samp>SYNCD</samp>’,
|
|
‘<samp>SYNCID</samp>’,
|
|
can have a value nearby <a name="GREG_002dbase"></a>an initial value in place of its
|
|
second and third operands. Here, “nearby” is defined as within the
|
|
range 0…255 from the initial value of such an allocated register.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">buffer1 BYTE 0,0,0,0,0
|
|
buffer2 BYTE 0,0,0,0,0
|
|
…
|
|
GREG buffer1
|
|
LDOU $42,buffer2
|
|
</pre></div>
|
|
<p>In the example above, the ‘<samp>Y</samp>’ field of the <code>LDOUI</code> instruction
|
|
(LDOU with a constant Z) will be replaced with the global register
|
|
allocated for ‘<samp>buffer1</samp>’, and the ‘<samp>Z</samp>’ field will have the value
|
|
5, the offset from ‘<samp>buffer1</samp>’ to ‘<samp>buffer2</samp>’. The result is
|
|
equivalent to this code:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">buffer1 BYTE 0,0,0,0,0
|
|
buffer2 BYTE 0,0,0,0,0
|
|
…
|
|
tmpreg GREG buffer1
|
|
LDOU $42,tmpreg,(buffer2-buffer1)
|
|
</pre></div>
|
|
|
|
<p>Global registers allocated with this directive are allocated in order
|
|
higher-to-lower within a file. Other than that, the exact order of
|
|
register allocation and elimination is undefined. For example, the order
|
|
is undefined when more than one file with such directives are linked
|
|
together. With the options ‘<samp>-x</samp>’ and ‘<samp>--linker-allocated-gregs</samp>’,
|
|
‘<samp>GREG</samp>’ directives for two-operand cases like the one mentioned above
|
|
can be omitted. Sufficient global registers will then be allocated by the
|
|
linker.
|
|
</p>
|
|
</dd>
|
|
<dt><code>BYTE</code></dt>
|
|
<dd><a name="index-assembler-directive-BYTE_002c-MMIX"></a>
|
|
<a name="index-pseudo_002dop-BYTE_002c-MMIX"></a>
|
|
<a name="index-MMIX-assembler-directive-BYTE"></a>
|
|
<a name="index-MMIX-pseudo_002dop-BYTE"></a>
|
|
|
|
<a name="MMIX_002dbyte"></a><p>The ‘<samp>BYTE</samp>’ directive takes a series of operands separated by a comma.
|
|
If an operand is a string (see <a href="#Strings">Strings</a>), each character of that string
|
|
is emitted as a byte. Other operands must be constant expressions without
|
|
forward references, in the range 0…255. If you need operands having
|
|
expressions with forward references, use ‘<samp>.byte</samp>’ (see <a href="#Byte">Byte</a>). An
|
|
operand can be omitted, defaulting to a zero value.
|
|
</p>
|
|
</dd>
|
|
<dt><code>WYDE</code></dt>
|
|
<dt><code>TETRA</code></dt>
|
|
<dt><code>OCTA</code></dt>
|
|
<dd><a name="index-assembler-directive-WYDE_002c-MMIX"></a>
|
|
<a name="index-pseudo_002dop-WYDE_002c-MMIX"></a>
|
|
<a name="index-MMIX-assembler-directive-WYDE"></a>
|
|
<a name="index-MMIX-pseudo_002dop-WYDE"></a>
|
|
<a name="index-assembler-directive-TETRA_002c-MMIX"></a>
|
|
<a name="index-pseudo_002dop-TETRA_002c-MMIX"></a>
|
|
<a name="index-MMIX-assembler-directive-TETRA"></a>
|
|
<a name="index-MMIX-pseudo_002dop-TETRA"></a>
|
|
<a name="index-assembler-directive-OCTA_002c-MMIX"></a>
|
|
<a name="index-pseudo_002dop-OCTA_002c-MMIX"></a>
|
|
<a name="index-MMIX-assembler-directive-OCTA"></a>
|
|
<a name="index-MMIX-pseudo_002dop-OCTA"></a>
|
|
|
|
<a name="MMIX_002dconstants"></a><p>The directives ‘<samp>WYDE</samp>’, ‘<samp>TETRA</samp>’ and ‘<samp>OCTA</samp>’ emit constants of
|
|
two, four and eight bytes size respectively. Before anything else happens
|
|
for the directive, the current location is aligned to the respective
|
|
constant-size boundary. If a label is defined at the beginning of the
|
|
line, its value will be that after the alignment. A single operand can be
|
|
omitted, defaulting to a zero value emitted for the directive. Operands
|
|
can be expressed as strings (see <a href="#Strings">Strings</a>), in which case each
|
|
character in the string is emitted as a separate constant of the size
|
|
indicated by the directive.
|
|
</p>
|
|
</dd>
|
|
<dt><code>PREFIX</code></dt>
|
|
<dd><a name="index-assembler-directive-PREFIX_002c-MMIX"></a>
|
|
<a name="index-pseudo_002dop-PREFIX_002c-MMIX"></a>
|
|
<a name="index-MMIX-assembler-directive-PREFIX"></a>
|
|
<a name="index-MMIX-pseudo_002dop-PREFIX"></a>
|
|
|
|
<a name="MMIX_002dprefix"></a><p>The ‘<samp>PREFIX</samp>’ directive sets a symbol name prefix to be prepended to
|
|
all symbols (except local symbols, see <a href="#MMIX_002dSymbols">MMIX-Symbols</a>), that are not
|
|
prefixed with ‘<samp>:</samp>’, until the next ‘<samp>PREFIX</samp>’ directive. Such
|
|
prefixes accumulate. For example,
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> PREFIX a
|
|
PREFIX b
|
|
c IS 0
|
|
</pre></div>
|
|
<p>defines a symbol ‘<samp>abc</samp>’ with the value 0.
|
|
</p>
|
|
</dd>
|
|
<dt><code>BSPEC</code></dt>
|
|
<dt><code>ESPEC</code></dt>
|
|
<dd><a name="index-assembler-directive-BSPEC_002c-MMIX"></a>
|
|
<a name="index-pseudo_002dop-BSPEC_002c-MMIX"></a>
|
|
<a name="index-MMIX-assembler-directive-BSPEC"></a>
|
|
<a name="index-MMIX-pseudo_002dop-BSPEC"></a>
|
|
<a name="index-assembler-directive-ESPEC_002c-MMIX"></a>
|
|
<a name="index-pseudo_002dop-ESPEC_002c-MMIX"></a>
|
|
<a name="index-MMIX-assembler-directive-ESPEC"></a>
|
|
<a name="index-MMIX-pseudo_002dop-ESPEC"></a>
|
|
|
|
<a name="MMIX_002dspec"></a><p>A pair of ‘<samp>BSPEC</samp>’ and ‘<samp>ESPEC</samp>’ directives delimit a section of
|
|
special contents (without specified semantics). Example:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> BSPEC 42
|
|
TETRA 1,2,3
|
|
ESPEC
|
|
</pre></div>
|
|
<p>The single operand to ‘<samp>BSPEC</samp>’ must be number in the range
|
|
0…255. The ‘<samp>BSPEC</samp>’ number 80 is used by the GNU binutils
|
|
implementation.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="MMIX_002dmmixal"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#MMIX_002dSyntax" accesskey="p" rel="previous">MMIX-Syntax</a>, Up: <a href="#MMIX_002dDependent" accesskey="u" rel="up">MMIX-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Differences-to-mmixal"></a>
|
|
<h4 class="subsection">9.28.4 Differences to <code>mmixal</code></h4>
|
|
<a name="index-mmixal-differences"></a>
|
|
<a name="index-differences_002c-mmixal"></a>
|
|
|
|
<p>The binutils <code>as</code> and <code>ld</code> combination has a few
|
|
differences in function compared to <code>mmixal</code> (see <a href="#mmixsite">mmixsite</a>).
|
|
</p>
|
|
<p>The replacement of a symbol with a GREG-allocated register
|
|
(see <a href="#GREG_002dbase">GREG-base</a>) is not handled the exactly same way in
|
|
<code>as</code> as in <code>mmixal</code>. This is apparent in the
|
|
<code>mmixal</code> example file <code>inout.mms</code>, where different registers
|
|
with different offsets, eventually yielding the same address, are used in
|
|
the first instruction. This type of difference should however not affect
|
|
the function of any program unless it has specific assumptions about the
|
|
allocated register number.
|
|
</p>
|
|
<p>Line numbers (in the ‘<samp>mmo</samp>’ object format) are currently not
|
|
supported.
|
|
</p>
|
|
<p>Expression operator precedence is not that of mmixal: operator precedence
|
|
is that of the C programming language. It’s recommended to use
|
|
parentheses to explicitly specify wanted operator precedence whenever more
|
|
than one type of operators are used.
|
|
</p>
|
|
<p>The serialize unary operator <code>&</code>, the fractional division operator
|
|
‘<samp>//</samp>’, the logical not operator <code>!</code> and the modulus operator
|
|
‘<samp>%</samp>’ are not available.
|
|
</p>
|
|
<p>Symbols are not global by default, unless the option
|
|
‘<samp>--globalize-symbols</samp>’ is passed. Use the ‘<samp>.global</samp>’ directive to
|
|
globalize symbols (see <a href="#Global">Global</a>).
|
|
</p>
|
|
<p>Operand syntax is a bit stricter with <code>as</code> than
|
|
<code>mmixal</code>. For example, you can’t say <code>addu 1,2,3</code>, instead you
|
|
must write <code>addu $1,$2,3</code>.
|
|
</p>
|
|
<p>You can’t LOC to a lower address than those already visited
|
|
(i.e., “backwards”).
|
|
</p>
|
|
<p>A LOC directive must come before any emitted code.
|
|
</p>
|
|
<p>Predefined symbols are visible as file-local symbols after use. (In the
|
|
ELF file, that is—the linked mmo file has no notion of a file-local
|
|
symbol.)
|
|
</p>
|
|
<p>Some mapping of constant expressions to sections in LOC expressions is
|
|
attempted, but that functionality is easily confused and should be avoided
|
|
unless compatibility with <code>mmixal</code> is required. A LOC expression to
|
|
‘<samp>0x2000000000000000</samp>’ or higher, maps to the ‘<samp>.data</samp>’ section and
|
|
lower addresses map to the ‘<samp>.text</samp>’ section (see <a href="#MMIX_002dloc">MMIX-loc</a>).
|
|
</p>
|
|
<p>The code and data areas are each contiguous. Sparse programs with
|
|
far-away LOC directives will take up the same amount of space as a
|
|
contiguous program with zeros filled in the gaps between the LOC
|
|
directives. If you need sparse programs, you might try and get the wanted
|
|
effect with a linker script and splitting up the code parts into sections
|
|
(see <a href="#Section">Section</a>). Assembly code for this, to be compatible with
|
|
<code>mmixal</code>, would look something like:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> .if 0
|
|
LOC away_expression
|
|
.else
|
|
.section away,"ax"
|
|
.fi
|
|
</pre></div>
|
|
<p><code>as</code> will not execute the LOC directive and <code>mmixal</code>
|
|
ignores the lines with <code>.</code>. This construct can be used generally to
|
|
help compatibility.
|
|
</p>
|
|
<p>Symbols can’t be defined twice–not even to the same value.
|
|
</p>
|
|
<p>Instruction mnemonics are recognized case-insensitive, though the
|
|
‘<samp>IS</samp>’ and ‘<samp>GREG</samp>’ pseudo-operations must be specified in
|
|
upper-case characters.
|
|
</p>
|
|
<p>There’s no unicode support.
|
|
</p>
|
|
<p>The following is a list of programs in ‘<samp>mmix.tar.gz</samp>’, available at
|
|
<a href="http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html">http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html</a>, last
|
|
checked with the version dated 2001-08-25 (md5sum
|
|
c393470cfc86fac040487d22d2bf0172) that assemble with <code>mmixal</code> but do
|
|
not assemble with <code>as</code>:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>silly.mms</code></dt>
|
|
<dd><p>LOC to a previous address.
|
|
</p></dd>
|
|
<dt><code>sim.mms</code></dt>
|
|
<dd><p>Redefines symbol ‘<samp>Done</samp>’.
|
|
</p></dd>
|
|
<dt><code>test.mms</code></dt>
|
|
<dd><p>Uses the serial operator ‘<samp>&</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="MSP430_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#NDS32_002dDependent" accesskey="n" rel="next">NDS32-Dependent</a>, Previous: <a href="#MMIX_002dDependent" accesskey="p" rel="previous">MMIX-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="MSP-430-Dependent-Features"></a>
|
|
<h3 class="section">9.29 MSP 430 Dependent Features</h3>
|
|
|
|
<a name="index-MSP-430-support"></a>
|
|
<a name="index-430-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#MSP430-Options" accesskey="1">MSP430 Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MSP430-Syntax" accesskey="2">MSP430 Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MSP430-Floating-Point" accesskey="3">MSP430 Floating Point</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MSP430-Directives" accesskey="4">MSP430 Directives</a>:</td><td> </td><td align="left" valign="top">MSP 430 Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MSP430-Opcodes" accesskey="5">MSP430 Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MSP430-Profiling-Capability" accesskey="6">MSP430 Profiling Capability</a>:</td><td> </td><td align="left" valign="top">Profiling Capability
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="MSP430-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MSP430-Syntax" accesskey="n" rel="next">MSP430 Syntax</a>, Up: <a href="#MSP430_002dDependent" accesskey="u" rel="up">MSP430-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-15"></a>
|
|
<h4 class="subsection">9.29.1 Options</h4>
|
|
<a name="index-MSP-430-options-_0028none_0029"></a>
|
|
<a name="index-options-for-MSP430-_0028none_0029"></a>
|
|
<dl compact="compact">
|
|
<dt><code>-mmcu</code></dt>
|
|
<dd><p>selects the mcu architecture. If the architecture is 430Xv2 then this
|
|
also enables NOP generation unless the <samp>-mN</samp> is also specified.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mcpu</code></dt>
|
|
<dd><p>selects the cpu architecture. If the architecture is 430Xv2 then this
|
|
also enables NOP generation unless the <samp>-mN</samp> is also specified.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-msilicon-errata=<var>name</var>[,<var>name</var>…]</code></dt>
|
|
<dd><p>Implements a fixup for named silicon errata. Multiple silicon errata
|
|
can be specified by multiple uses of the <samp>-msilicon-errata</samp>
|
|
option and/or by including the errata names, separated by commas, on
|
|
an individual <samp>-msilicon-errata</samp> option. Errata names
|
|
currently recognised by the assembler are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>cpu4</code></dt>
|
|
<dd><p><code>PUSH #4</code> and <samp>PUSH #8</samp> need longer encodings on the
|
|
MSP430. This option is enabled by default, and cannot be disabled.
|
|
</p></dd>
|
|
<dt><code>cpu8</code></dt>
|
|
<dd><p>Do not set the <code>SP</code> to an odd value.
|
|
</p></dd>
|
|
<dt><code>cpu11</code></dt>
|
|
<dd><p>Do not update the <code>SR</code> and the <code>PC</code> in the same instruction.
|
|
</p></dd>
|
|
<dt><code>cpu12</code></dt>
|
|
<dd><p>Do not use the <code>PC</code> in a <code>CMP</code> or <code>BIT</code> instruction.
|
|
</p></dd>
|
|
<dt><code>cpu13</code></dt>
|
|
<dd><p>Do not use an arithmetic instruction to modify the <code>SR</code>.
|
|
</p></dd>
|
|
<dt><code>cpu19</code></dt>
|
|
<dd><p>Insert <code>NOP</code> after <code>CPUOFF</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt><code>-msilicon-errata-warn=<var>name</var>[,<var>name</var>…]</code></dt>
|
|
<dd><p>Like the <samp>-msilicon-errata</samp> option except that instead of
|
|
fixing the specified errata, a warning message is issued instead.
|
|
This option can be used alongside <samp>-msilicon-errata</samp> to
|
|
generate messages whenever a problem is fixed, or on its own in order
|
|
to inspect code for potential problems.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mP</code></dt>
|
|
<dd><p>enables polymorph instructions handler.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mQ</code></dt>
|
|
<dd><p>enables relaxation at assembly time. DANGEROUS!
|
|
</p>
|
|
</dd>
|
|
<dt><code>-ml</code></dt>
|
|
<dd><p>indicates that the input uses the large code model.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mn</code></dt>
|
|
<dd><p>enables the generation of a NOP instruction following any instruction
|
|
that might change the interrupts enabled/disabled state. The
|
|
pipelined nature of the MSP430 core means that any instruction that
|
|
changes the interrupt state (<code>EINT</code>, <code>DINT</code>, <code>BIC #8,
|
|
SR</code>, <code>BIS #8, SR</code> or <code>MOV.W <>, SR</code>) must be
|
|
followed by a NOP instruction in order to ensure the correct
|
|
processing of interrupts. By default it is up to the programmer to
|
|
supply these NOP instructions, but this command-line option enables
|
|
the automatic insertion by the assembler, if they are missing.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mN</code></dt>
|
|
<dd><p>disables the generation of a NOP instruction following any instruction
|
|
that might change the interrupts enabled/disabled state. This is the
|
|
default behaviour.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-my</code></dt>
|
|
<dd><p>tells the assembler to generate a warning message if a NOP does not
|
|
immediately follow an instruction that enables or disables
|
|
interrupts. This is the default.
|
|
</p>
|
|
<p>Note that this option can be stacked with the <samp>-mn</samp> option so
|
|
that the assembler will both warn about missing NOP instructions and
|
|
then insert them automatically.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mY</code></dt>
|
|
<dd><p>disables warnings about missing NOP instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-md</code></dt>
|
|
<dd><p>mark the object file as one that requires data to copied from ROM to
|
|
RAM at execution startup. Disabled by default.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mdata-region=<var>region</var></code></dt>
|
|
<dd><p>Select the region data will be placed in.
|
|
Region placement is performed by the compiler and linker. The only effect this
|
|
option will have on the assembler is that if <var>upper</var> or <var>either</var> is
|
|
selected, then the symbols to initialise high data and bss will be defined.
|
|
Valid <var>region</var> values are:
|
|
</p><dl compact="compact">
|
|
<dt><code>none</code></dt>
|
|
<dt><code>lower</code></dt>
|
|
<dt><code>upper</code></dt>
|
|
<dt><code>either</code></dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="MSP430-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MSP430-Floating-Point" accesskey="n" rel="next">MSP430 Floating Point</a>, Previous: <a href="#MSP430-Options" accesskey="p" rel="previous">MSP430 Options</a>, Up: <a href="#MSP430_002dDependent" accesskey="u" rel="up">MSP430-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-22"></a>
|
|
<h4 class="subsection">9.29.2 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#MSP430_002dMacros" accesskey="1">MSP430-Macros</a>:</td><td> </td><td align="left" valign="top">Macros
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MSP430_002dChars" accesskey="2">MSP430-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MSP430_002dRegs" accesskey="3">MSP430-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#MSP430_002dExt" accesskey="4">MSP430-Ext</a>:</td><td> </td><td align="left" valign="top">Assembler Extensions
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="MSP430_002dMacros"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MSP430_002dChars" accesskey="n" rel="next">MSP430-Chars</a>, Up: <a href="#MSP430-Syntax" accesskey="u" rel="up">MSP430 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Macros"></a>
|
|
<h4 class="subsubsection">9.29.2.1 Macros</h4>
|
|
|
|
<a name="index-Macros_002c-MSP-430"></a>
|
|
<a name="index-MSP-430-macros"></a>
|
|
<p>The macro syntax used on the MSP 430 is like that described in the MSP
|
|
430 Family Assembler Specification. Normal <code>as</code>
|
|
macros should still work.
|
|
</p>
|
|
<p>Additional built-in macros are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>llo(exp)</code></dt>
|
|
<dd><p>Extracts least significant word from 32-bit expression ’exp’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>lhi(exp)</code></dt>
|
|
<dd><p>Extracts most significant word from 32-bit expression ’exp’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hlo(exp)</code></dt>
|
|
<dd><p>Extracts 3rd word from 64-bit expression ’exp’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hhi(exp)</code></dt>
|
|
<dd><p>Extracts 4rd word from 64-bit expression ’exp’.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>They normally being used as an immediate source operand.
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> mov #llo(1), r10 ; == mov #1, r10
|
|
mov #lhi(1), r10 ; == mov #0, r10
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="MSP430_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MSP430_002dRegs" accesskey="n" rel="next">MSP430-Regs</a>, Previous: <a href="#MSP430_002dMacros" accesskey="p" rel="previous">MSP430-Macros</a>, Up: <a href="#MSP430-Syntax" accesskey="u" rel="up">MSP430 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-22"></a>
|
|
<h4 class="subsubsection">9.29.2.2 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-MSP-430"></a>
|
|
<a name="index-MSP-430-line-comment-character"></a>
|
|
<p>A semicolon (‘<samp>;</samp>’) appearing anywhere on a line starts a comment
|
|
that extends to the end of that line.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line then the whole
|
|
line is treated as a comment, but it can also be a logical line number
|
|
directive (see <a href="#Comments">Comments</a>) or a preprocessor control command
|
|
(see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-MSP-430"></a>
|
|
<a name="index-statement-separator_002c-MSP-430"></a>
|
|
<a name="index-MSP-430-line-separator"></a>
|
|
<p>Multiple statements can appear on the same line provided that they are
|
|
separated by the ‘<samp>{</samp>’ character.
|
|
</p>
|
|
<a name="index-identifiers_002c-MSP-430"></a>
|
|
<a name="index-MSP-430-identifiers"></a>
|
|
<p>The character ‘<samp>$</samp>’ in jump instructions indicates current location and
|
|
implemented only for TI syntax compatibility.
|
|
</p>
|
|
<hr>
|
|
<a name="MSP430_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MSP430_002dExt" accesskey="n" rel="next">MSP430-Ext</a>, Previous: <a href="#MSP430_002dChars" accesskey="p" rel="previous">MSP430-Chars</a>, Up: <a href="#MSP430-Syntax" accesskey="u" rel="up">MSP430 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-12"></a>
|
|
<h4 class="subsubsection">9.29.2.3 Register Names</h4>
|
|
|
|
<a name="index-MSP-430-register-names"></a>
|
|
<a name="index-register-names_002c-MSP-430"></a>
|
|
<p>General-purpose registers are represented by predefined symbols of the
|
|
form ‘<samp>r<var>N</var></samp>’ (for global registers), where <var>N</var> represents
|
|
a number between <code>0</code> and <code>15</code>. The leading
|
|
letters may be in either upper or lower case; for example, ‘<samp>r13</samp>’
|
|
and ‘<samp>R7</samp>’ are both valid register names.
|
|
</p>
|
|
<a name="index-special-purpose-registers_002c-MSP-430"></a>
|
|
<p>Register names ‘<samp>PC</samp>’, ‘<samp>SP</samp>’ and ‘<samp>SR</samp>’ cannot be used as register names
|
|
and will be treated as variables. Use ‘<samp>r0</samp>’, ‘<samp>r1</samp>’, and ‘<samp>r2</samp>’ instead.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="MSP430_002dExt"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#MSP430_002dRegs" accesskey="p" rel="previous">MSP430-Regs</a>, Up: <a href="#MSP430-Syntax" accesskey="u" rel="up">MSP430 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-Extensions"></a>
|
|
<h4 class="subsubsection">9.29.2.4 Assembler Extensions</h4>
|
|
<a name="index-MSP430-Assembler-Extensions"></a>
|
|
|
|
<dl compact="compact">
|
|
<dt><code>@rN</code></dt>
|
|
<dd><p>As destination operand being treated as ‘<samp>0(rn)</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>0(rN)</code></dt>
|
|
<dd><p>As source operand being treated as ‘<samp>@rn</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>jCOND +N</code></dt>
|
|
<dd><p>Skips next N bytes followed by jump instruction and equivalent to
|
|
‘<samp>jCOND $+N+2</samp>’
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Also, there are some instructions, which cannot be found in other assemblers.
|
|
These are branch instructions, which has different opcodes upon jump distance.
|
|
They all got PC relative addressing mode.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>beq label</code></dt>
|
|
<dd><p>A polymorph instruction which is ‘<samp>jeq label</samp>’ in case if jump distance
|
|
within allowed range for cpu’s jump instruction. If not, this unrolls into
|
|
a sequence of
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> jne $+6
|
|
br label
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>bne label</code></dt>
|
|
<dd><p>A polymorph instruction which is ‘<samp>jne label</samp>’ or ‘<samp>jeq +4; br label</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>blt label</code></dt>
|
|
<dd><p>A polymorph instruction which is ‘<samp>jl label</samp>’ or ‘<samp>jge +4; br label</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>bltn label</code></dt>
|
|
<dd><p>A polymorph instruction which is ‘<samp>jn label</samp>’ or ‘<samp>jn +2; jmp +4; br label</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>bltu label</code></dt>
|
|
<dd><p>A polymorph instruction which is ‘<samp>jlo label</samp>’ or ‘<samp>jhs +2; br label</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>bge label</code></dt>
|
|
<dd><p>A polymorph instruction which is ‘<samp>jge label</samp>’ or ‘<samp>jl +4; br label</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>bgeu label</code></dt>
|
|
<dd><p>A polymorph instruction which is ‘<samp>jhs label</samp>’ or ‘<samp>jlo +4; br label</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>bgt label</code></dt>
|
|
<dd><p>A polymorph instruction which is ‘<samp>jeq +2; jge label</samp>’ or ‘<samp>jeq +6; jl +4; br label</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>bgtu label</code></dt>
|
|
<dd><p>A polymorph instruction which is ‘<samp>jeq +2; jhs label</samp>’ or ‘<samp>jeq +6; jlo +4; br label</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>bleu label</code></dt>
|
|
<dd><p>A polymorph instruction which is ‘<samp>jeq label; jlo label</samp>’ or ‘<samp>jeq +2; jhs +4; br label</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>ble label</code></dt>
|
|
<dd><p>A polymorph instruction which is ‘<samp>jeq label; jl label</samp>’ or ‘<samp>jeq +2; jge +4; br label</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>jump label</code></dt>
|
|
<dd><p>A polymorph instruction which is ‘<samp>jmp label</samp>’ or ‘<samp>br label</samp>’
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<hr>
|
|
<a name="MSP430-Floating-Point"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MSP430-Directives" accesskey="n" rel="next">MSP430 Directives</a>, Previous: <a href="#MSP430-Syntax" accesskey="p" rel="previous">MSP430 Syntax</a>, Up: <a href="#MSP430_002dDependent" accesskey="u" rel="up">MSP430-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-10"></a>
|
|
<h4 class="subsection">9.29.3 Floating Point</h4>
|
|
|
|
<a name="index-floating-point_002c-MSP-430-_0028IEEE_0029"></a>
|
|
<a name="index-MSP-430-floating-point-_0028IEEE_0029"></a>
|
|
<p>The MSP 430 family uses <small>IEEE</small> 32-bit floating-point numbers.
|
|
</p>
|
|
<hr>
|
|
<a name="MSP430-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MSP430-Opcodes" accesskey="n" rel="next">MSP430 Opcodes</a>, Previous: <a href="#MSP430-Floating-Point" accesskey="p" rel="previous">MSP430 Floating Point</a>, Up: <a href="#MSP430_002dDependent" accesskey="u" rel="up">MSP430-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="MSP-430-Machine-Directives"></a>
|
|
<h4 class="subsection">9.29.4 MSP 430 Machine Directives</h4>
|
|
|
|
<a name="index-machine-directives_002c-MSP-430"></a>
|
|
<a name="index-MSP-430-machine-directives"></a>
|
|
<dl compact="compact">
|
|
<dd><a name="index-file-directive_002c-MSP-430"></a>
|
|
</dd>
|
|
<dt><code>.file</code></dt>
|
|
<dd><p>This directive is ignored; it is accepted for compatibility with other
|
|
MSP 430 assemblers.
|
|
</p>
|
|
<blockquote>
|
|
<p><em>Warning:</em> in other versions of the <small>GNU</small> assembler, <code>.file</code> is
|
|
used for the directive called <code>.app-file</code> in the MSP 430 support.
|
|
</p></blockquote>
|
|
|
|
<a name="index-line-directive_002c-MSP-430"></a>
|
|
</dd>
|
|
<dt><code>.line</code></dt>
|
|
<dd><p>This directive is ignored; it is accepted for compatibility with other
|
|
MSP 430 assemblers.
|
|
</p>
|
|
<a name="index-arch-directive_002c-MSP-430"></a>
|
|
</dd>
|
|
<dt><code>.arch</code></dt>
|
|
<dd><p>Sets the target microcontroller in the same way as the <samp>-mmcu</samp>
|
|
command-line option.
|
|
</p>
|
|
<a name="index-cpu-directive_002c-MSP-430"></a>
|
|
</dd>
|
|
<dt><code>.cpu</code></dt>
|
|
<dd><p>Sets the target architecture in the same way as the <samp>-mcpu</samp>
|
|
command-line option.
|
|
</p>
|
|
<a name="index-profiler-directive_002c-MSP-430"></a>
|
|
</dd>
|
|
<dt><code>.profiler</code></dt>
|
|
<dd><p>This directive instructs assembler to add new profile entry to the object file.
|
|
</p>
|
|
<a name="index-refsym-directive_002c-MSP-430"></a>
|
|
</dd>
|
|
<dt><code>.refsym</code></dt>
|
|
<dd><p>This directive instructs assembler to add an undefined reference to
|
|
the symbol following the directive. The maximum symbol name length is
|
|
1023 characters. No relocation is created for this symbol; it will
|
|
exist purely for pulling in object files from archives. Note that
|
|
this reloc is not sufficient to prevent garbage collection; use a
|
|
KEEP() directive in the linker file to preserve such objects.
|
|
</p>
|
|
<a name="index-mspabi_005fattribute-directive_002c-MSP430"></a>
|
|
</dd>
|
|
<dt><code>.mspabi_attribute</code></dt>
|
|
<dd><p>This directive tells the assembler what the MSPABI build attributes for this
|
|
file are. This is used for validating the command line options passed to
|
|
the assembler against the options the original source file was compiled with.
|
|
The expected format is:
|
|
‘<samp>.mspabi_attribute tag_name, tag_value</samp>’
|
|
For example, to set the tag <code>OFBA_MSPABI_Tag_ISA</code> to <code>MSP430X</code>:
|
|
‘<samp>.mspabi_attribute 4, 2</samp>’
|
|
</p>
|
|
<p>See the <cite>MSP430 EABI, document slaa534</cite> for the details on tag names and
|
|
values.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="MSP430-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#MSP430-Profiling-Capability" accesskey="n" rel="next">MSP430 Profiling Capability</a>, Previous: <a href="#MSP430-Directives" accesskey="p" rel="previous">MSP430 Directives</a>, Up: <a href="#MSP430_002dDependent" accesskey="u" rel="up">MSP430-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-14"></a>
|
|
<h4 class="subsection">9.29.5 Opcodes</h4>
|
|
|
|
<a name="index-MSP-430-opcodes"></a>
|
|
<a name="index-opcodes-for-MSP-430"></a>
|
|
<p><code>as</code> implements all the standard MSP 430 opcodes. No
|
|
additional pseudo-instructions are needed on this family.
|
|
</p>
|
|
<p>For information on the 430 machine instruction set, see <cite>MSP430
|
|
User’s Manual, document slau049d</cite>, Texas Instrument, Inc.
|
|
</p>
|
|
<hr>
|
|
<a name="MSP430-Profiling-Capability"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#MSP430-Opcodes" accesskey="p" rel="previous">MSP430 Opcodes</a>, Up: <a href="#MSP430_002dDependent" accesskey="u" rel="up">MSP430-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Profiling-Capability"></a>
|
|
<h4 class="subsection">9.29.6 Profiling Capability</h4>
|
|
|
|
<a name="index-MSP-430-profiling-capability"></a>
|
|
<a name="index-profiling-capability-for-MSP-430"></a>
|
|
<p>It is a performance hit to use gcc’s profiling approach for this tiny target.
|
|
Even more – jtag hardware facility does not perform any profiling functions.
|
|
However we’ve got gdb’s built-in simulator where we can do anything.
|
|
</p>
|
|
<p>We define new section ‘<samp>.profiler</samp>’ which holds all profiling information.
|
|
We define new pseudo operation ‘<samp>.profiler</samp>’ which will instruct assembler to
|
|
add new profile entry to the object file. Profile should take place at the
|
|
present address.
|
|
</p>
|
|
<p>Pseudo operation format:
|
|
</p>
|
|
<p>‘<samp>.profiler flags,function_to_profile [, cycle_corrector, extra]</samp>’
|
|
</p>
|
|
|
|
<p>where:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<p>‘<samp>flags</samp>’ is a combination of the following characters:
|
|
</p>
|
|
</dd>
|
|
<dt><code>s</code></dt>
|
|
<dd><p>function entry
|
|
</p></dd>
|
|
<dt><code>x</code></dt>
|
|
<dd><p>function exit
|
|
</p></dd>
|
|
<dt><code>i</code></dt>
|
|
<dd><p>function is in init section
|
|
</p></dd>
|
|
<dt><code>f</code></dt>
|
|
<dd><p>function is in fini section
|
|
</p></dd>
|
|
<dt><code>l</code></dt>
|
|
<dd><p>library call
|
|
</p></dd>
|
|
<dt><code>c</code></dt>
|
|
<dd><p>libc standard call
|
|
</p></dd>
|
|
<dt><code>d</code></dt>
|
|
<dd><p>stack value demand
|
|
</p></dd>
|
|
<dt><code>I</code></dt>
|
|
<dd><p>interrupt service routine
|
|
</p></dd>
|
|
<dt><code>P</code></dt>
|
|
<dd><p>prologue start
|
|
</p></dd>
|
|
<dt><code>p</code></dt>
|
|
<dd><p>prologue end
|
|
</p></dd>
|
|
<dt><code>E</code></dt>
|
|
<dd><p>epilogue start
|
|
</p></dd>
|
|
<dt><code>e</code></dt>
|
|
<dd><p>epilogue end
|
|
</p></dd>
|
|
<dt><code>j</code></dt>
|
|
<dd><p>long jump / sjlj unwind
|
|
</p></dd>
|
|
<dt><code>a</code></dt>
|
|
<dd><p>an arbitrary code fragment
|
|
</p></dd>
|
|
<dt><code>t</code></dt>
|
|
<dd><p>extra parameter saved (a constant value like frame size)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt><code>function_to_profile</code></dt>
|
|
<dd><p>a function address
|
|
</p></dd>
|
|
<dt><code>cycle_corrector</code></dt>
|
|
<dd><p>a value which should be added to the cycle counter, zero if omitted.
|
|
</p></dd>
|
|
<dt><code>extra</code></dt>
|
|
<dd><p>any extra parameter, zero if omitted.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For example:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">.global fxx
|
|
.type fxx,@function
|
|
fxx:
|
|
.LFrameOffset_fxx=0x08
|
|
.profiler "scdP", fxx ; function entry.
|
|
; we also demand stack value to be saved
|
|
push r11
|
|
push r10
|
|
push r9
|
|
push r8
|
|
.profiler "cdpt",fxx,0, .LFrameOffset_fxx ; check stack value at this point
|
|
; (this is a prologue end)
|
|
; note, that spare var filled with
|
|
; the farme size
|
|
mov r15,r8
|
|
...
|
|
.profiler cdE,fxx ; check stack
|
|
pop r8
|
|
pop r9
|
|
pop r10
|
|
pop r11
|
|
.profiler xcde,fxx,3 ; exit adds 3 to the cycle counter
|
|
ret ; cause 'ret' insn takes 3 cycles
|
|
</pre></div>
|
|
|
|
|
|
<hr>
|
|
<a name="NDS32_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#NiosII_002dDependent" accesskey="n" rel="next">NiosII-Dependent</a>, Previous: <a href="#MSP430_002dDependent" accesskey="p" rel="previous">MSP430-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="NDS32-Dependent-Features"></a>
|
|
<h3 class="section">9.30 NDS32 Dependent Features</h3>
|
|
|
|
<a name="index-NDS32-processor"></a>
|
|
<p>The NDS32 processors family includes high-performance and low-power 32-bit
|
|
processors for high-end to low-end. <small>GNU</small> <code>as</code> for NDS32
|
|
architectures supports NDS32 ISA version 3. For detail about NDS32
|
|
instruction set, please see the AndeStar ISA User Manual which is available
|
|
at http://www.andestech.com/en/index/index.htm
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#NDS32-Options" accesskey="1">NDS32 Options</a>:</td><td> </td><td align="left" valign="top">Assembler options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#NDS32-Syntax" accesskey="2">NDS32 Syntax</a>:</td><td> </td><td align="left" valign="top">High-level assembly macros
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="NDS32-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#NDS32-Syntax" accesskey="n" rel="next">NDS32 Syntax</a>, Up: <a href="#NDS32_002dDependent" accesskey="u" rel="up">NDS32-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="NDS32-Options-1"></a>
|
|
<h4 class="subsection">9.30.1 NDS32 Options</h4>
|
|
|
|
<a name="index-NDS32-options"></a>
|
|
<a name="index-options-for-NDS32"></a>
|
|
<p>The NDS32 configurations of <small>GNU</small> <code>as</code> support these
|
|
special options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-O1</code></dt>
|
|
<dd><p>Optimize for performance.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-Os</code></dt>
|
|
<dd><p>Optimize for space.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-EL</code></dt>
|
|
<dd><p>Produce little endian data output.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-EB</code></dt>
|
|
<dd><p>Produce little endian data output.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mpic</code></dt>
|
|
<dd><p>Generate PIC.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mno-fp-as-gp-relax</code></dt>
|
|
<dd><p>Suppress fp-as-gp relaxation for this file.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mb2bb-relax</code></dt>
|
|
<dd><p>Back-to-back branch optimization.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mno-all-relax</code></dt>
|
|
<dd><p>Suppress all relaxation for this file.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-march=<arch name></code></dt>
|
|
<dd><p>Assemble for architecture <arch name> which could be v3, v3j, v3m, v3f,
|
|
v3s, v2, v2j, v2f, v2s.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mbaseline=<baseline></code></dt>
|
|
<dd><p>Assemble for baseline <baseline> which could be v2, v3, v3m.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mfpu-freg=<var>FREG</var></code></dt>
|
|
<dd><p>Specify a FPU configuration.
|
|
</p><dl compact="compact">
|
|
<dt><code>0 8 SP / 4 DP registers</code></dt>
|
|
<dt><code>1 16 SP / 8 DP registers</code></dt>
|
|
<dt><code>2 32 SP / 16 DP registers</code></dt>
|
|
<dt><code>3 32 SP / 32 DP registers</code></dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt><code>-mabi=<var>abi</var></code></dt>
|
|
<dd><p>Specify a abi version <abi> could be v1, v2, v2fp, v2fpp.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m[no-]mac</code></dt>
|
|
<dd><p>Enable/Disable Multiply instructions support.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m[no-]div</code></dt>
|
|
<dd><p>Enable/Disable Divide instructions support.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m[no-]16bit-ext</code></dt>
|
|
<dd><p>Enable/Disable 16-bit extension
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m[no-]dx-regs</code></dt>
|
|
<dd><p>Enable/Disable d0/d1 registers
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m[no-]perf-ext</code></dt>
|
|
<dd><p>Enable/Disable Performance extension
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m[no-]perf2-ext</code></dt>
|
|
<dd><p>Enable/Disable Performance extension 2
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m[no-]string-ext</code></dt>
|
|
<dd><p>Enable/Disable String extension
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m[no-]reduced-regs</code></dt>
|
|
<dd><p>Enable/Disable Reduced Register configuration (GPR16) option
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m[no-]audio-isa-ext</code></dt>
|
|
<dd><p>Enable/Disable AUDIO ISA extension
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m[no-]fpu-sp-ext</code></dt>
|
|
<dd><p>Enable/Disable FPU SP extension
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m[no-]fpu-dp-ext</code></dt>
|
|
<dd><p>Enable/Disable FPU DP extension
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m[no-]fpu-fma</code></dt>
|
|
<dd><p>Enable/Disable FPU fused-multiply-add instructions
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mall-ext</code></dt>
|
|
<dd><p>Turn on all extensions and instructions support
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="NDS32-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#NDS32-Options" accesskey="p" rel="previous">NDS32 Options</a>, Up: <a href="#NDS32_002dDependent" accesskey="u" rel="up">NDS32-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-23"></a>
|
|
<h4 class="subsection">9.30.2 Syntax</h4>
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#NDS32_002dChars" accesskey="1">NDS32-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#NDS32_002dRegs" accesskey="2">NDS32-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#NDS32_002dOps" accesskey="3">NDS32-Ops</a>:</td><td> </td><td align="left" valign="top">Pseudo Instructions
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="NDS32_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#NDS32_002dRegs" accesskey="n" rel="next">NDS32-Regs</a>, Up: <a href="#NDS32-Syntax" accesskey="u" rel="up">NDS32 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-23"></a>
|
|
<h4 class="subsubsection">9.30.2.1 Special Characters</h4>
|
|
|
|
<p>Use ‘<samp>#</samp>’ at column 1 and ‘<samp>!</samp>’ anywhere in the line except inside
|
|
quotes.
|
|
</p>
|
|
<p>Multiple instructions in a line are allowed though not recommended and
|
|
should be separated by ‘<samp>;</samp>’.
|
|
</p>
|
|
<p>Assembler is not case-sensitive in general except user defined label.
|
|
For example, ‘<samp>jral F1</samp>’ is different from ‘<samp>jral f1</samp>’ while it is
|
|
the same as ‘<samp>JRAL F1</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="NDS32_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#NDS32_002dOps" accesskey="n" rel="next">NDS32-Ops</a>, Previous: <a href="#NDS32_002dChars" accesskey="p" rel="previous">NDS32-Chars</a>, Up: <a href="#NDS32-Syntax" accesskey="u" rel="up">NDS32 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-13"></a>
|
|
<h4 class="subsubsection">9.30.2.2 Register Names</h4>
|
|
<dl compact="compact">
|
|
<dt><code>General purpose registers (GPR)</code></dt>
|
|
<dd><p>There are 32 32-bit general purpose registers $r0 to $r31.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Accumulators d0 and d1</code></dt>
|
|
<dd><p>64-bit accumulators: $d0.hi, $d0.lo, $d1.hi, and $d1.lo.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Assembler reserved register $ta</code></dt>
|
|
<dd><p>Register $ta ($r15) is reserved for assembler using.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Operating system reserved registers $p0 and $p1</code></dt>
|
|
<dd><p>Registers $p0 ($r26) and $p1 ($r27) are used by operating system as scratch
|
|
registers.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Frame pointer $fp</code></dt>
|
|
<dd><p>Register $r28 is regarded as the frame pointer.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Global pointer</code></dt>
|
|
<dd><p>Register $r29 is regarded as the global pointer.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Link pointer</code></dt>
|
|
<dd><p>Register $r30 is regarded as the link pointer.
|
|
</p>
|
|
</dd>
|
|
<dt><code>Stack pointer</code></dt>
|
|
<dd><p>Register $r31 is regarded as the stack pointer.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="NDS32_002dOps"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#NDS32_002dRegs" accesskey="p" rel="previous">NDS32-Regs</a>, Up: <a href="#NDS32-Syntax" accesskey="u" rel="up">NDS32 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Pseudo-Instructions-1"></a>
|
|
<h4 class="subsubsection">9.30.2.3 Pseudo Instructions</h4>
|
|
<dl compact="compact">
|
|
<dt><code>li rt5,imm32</code></dt>
|
|
<dd><p>load 32-bit integer into register rt5. ‘<samp>sethi rt5,hi20(imm32)</samp>’ and then
|
|
‘<samp>ori rt5,reg,lo12(imm32)</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>la rt5,var</code></dt>
|
|
<dd><p>Load 32-bit address of var into register rt5. ‘<samp>sethi rt5,hi20(var)</samp>’ and
|
|
then ‘<samp>ori reg,rt5,lo12(var)</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>l.[bhw] rt5,var</code></dt>
|
|
<dd><p>Load value of var into register rt5. ‘<samp>sethi $ta,hi20(var)</samp>’ and then
|
|
‘<samp>l[bhw]i rt5,[$ta+lo12(var)]</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>l.[bh]s rt5,var</code></dt>
|
|
<dd><p>Load value of var into register rt5. ‘<samp>sethi $ta,hi20(var)</samp>’ and then
|
|
‘<samp>l[bh]si rt5,[$ta+lo12(var)]</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>l.[bhw]p rt5,var,inc</code></dt>
|
|
<dd><p>Load value of var into register rt5 and increment $ta by amount inc.
|
|
‘<samp>la $ta,var</samp>’ and then ‘<samp>l[bhw]i.bi rt5,[$ta],inc</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>l.[bhw]pc rt5,inc</code></dt>
|
|
<dd><p>Continue loading value of var into register rt5 and increment $ta by amount inc.
|
|
‘<samp>l[bhw]i.bi rt5,[$ta],inc.</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>l.[bh]sp rt5,var,inc</code></dt>
|
|
<dd><p>Load value of var into register rt5 and increment $ta by amount inc.
|
|
‘<samp>la $ta,var</samp>’ and then ‘<samp>l[bh]si.bi rt5,[$ta],inc</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>l.[bh]spc rt5,inc</code></dt>
|
|
<dd><p>Continue loading value of var into register rt5 and increment $ta by amount inc.
|
|
‘<samp>l[bh]si.bi rt5,[$ta],inc.</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>s.[bhw] rt5,var</code></dt>
|
|
<dd><p>Store register rt5 to var.
|
|
‘<samp>sethi $ta,hi20(var)</samp>’ and then ‘<samp>s[bhw]i rt5,[$ta+lo12(var)]</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>s.[bhw]p rt5,var,inc</code></dt>
|
|
<dd><p>Store register rt5 to var and increment $ta by amount inc.
|
|
‘<samp>la $ta,var</samp>’ and then ‘<samp>s[bhw]i.bi rt5,[$ta],inc</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>s.[bhw]pc rt5,inc</code></dt>
|
|
<dd><p>Continue storing register rt5 to var and increment $ta by amount inc.
|
|
‘<samp>s[bhw]i.bi rt5,[$ta],inc.</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><code>not rt5,ra5</code></dt>
|
|
<dd><p>Alias of ‘<samp>nor rt5,ra5,ra5</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>neg rt5,ra5</code></dt>
|
|
<dd><p>Alias of ‘<samp>subri rt5,ra5,0</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>br rb5</code></dt>
|
|
<dd><p>Depending on how it is assembled, it is translated into ‘<samp>r5 rb5</samp>’
|
|
or ‘<samp>jr rb5</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>b label</code></dt>
|
|
<dd><p>Branch to label depending on how it is assembled, it is translated into
|
|
‘<samp>j8 label</samp>’, ‘<samp>j label</samp>’, or "‘<samp>la $ta,label</samp>’ ‘<samp>br $ta</samp>’".
|
|
</p>
|
|
</dd>
|
|
<dt><code>bral rb5</code></dt>
|
|
<dd><p>Alias of jral br5 depending on how it is assembled, it is translated
|
|
into ‘<samp>jral5 rb5</samp>’ or ‘<samp>jral rb5</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>bal fname</code></dt>
|
|
<dd><p>Alias of jal fname depending on how it is assembled, it is translated into
|
|
‘<samp>jal fname</samp>’ or "‘<samp>la $ta,fname</samp>’ ‘<samp>bral $ta</samp>’".
|
|
</p>
|
|
</dd>
|
|
<dt><code>call fname</code></dt>
|
|
<dd><p>Call function fname same as ‘<samp>jal fname</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>move rt5,ra5</code></dt>
|
|
<dd><p>For 16-bit, this is ‘<samp>mov55 rt5,ra5</samp>’.
|
|
For no 16-bit, this is ‘<samp>ori rt5,ra5,0</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>move rt5,var</code></dt>
|
|
<dd><p>This is the same as ‘<samp>l.w rt5,var</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>move rt5,imm32</code></dt>
|
|
<dd><p>This is the same as ‘<samp>li rt5,imm32</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>pushm ra5,rb5</code></dt>
|
|
<dd><p>Push contents of registers from ra5 to rb5 into stack.
|
|
</p>
|
|
</dd>
|
|
<dt><code>push ra5</code></dt>
|
|
<dd><p>Push content of register ra5 into stack. (same ‘<samp>pushm ra5,ra5</samp>’).
|
|
</p>
|
|
</dd>
|
|
<dt><code>push.d var</code></dt>
|
|
<dd><p>Push value of double-word variable var into stack.
|
|
</p>
|
|
</dd>
|
|
<dt><code>push.w var</code></dt>
|
|
<dd><p>Push value of word variable var into stack.
|
|
</p>
|
|
</dd>
|
|
<dt><code>push.h var</code></dt>
|
|
<dd><p>Push value of half-word variable var into stack.
|
|
</p>
|
|
</dd>
|
|
<dt><code>push.b var</code></dt>
|
|
<dd><p>Push value of byte variable var into stack.
|
|
</p>
|
|
</dd>
|
|
<dt><code>pusha var</code></dt>
|
|
<dd><p>Push 32-bit address of variable var into stack.
|
|
</p>
|
|
</dd>
|
|
<dt><code>pushi imm32</code></dt>
|
|
<dd><p>Push 32-bit immediate value into stack.
|
|
</p>
|
|
</dd>
|
|
<dt><code>popm ra5,rb5</code></dt>
|
|
<dd><p>Pop top of stack values into registers ra5 to rb5.
|
|
</p>
|
|
</dd>
|
|
<dt><code>pop rt5</code></dt>
|
|
<dd><p>Pop top of stack value into register. (same as ‘<samp>popm rt5,rt5</samp>’.)
|
|
</p>
|
|
</dd>
|
|
<dt><code>pop.d var,ra5</code></dt>
|
|
<dd><p>Pop value of double-word variable var from stack using register ra5
|
|
as 2nd scratch register. (1st is $ta)
|
|
</p>
|
|
</dd>
|
|
<dt><code>pop.w var,ra5</code></dt>
|
|
<dd><p>Pop value of word variable var from stack using register ra5.
|
|
</p>
|
|
</dd>
|
|
<dt><code>pop.h var,ra5</code></dt>
|
|
<dd><p>Pop value of half-word variable var from stack using register ra5.
|
|
</p>
|
|
</dd>
|
|
<dt><code>pop.b var,ra5</code></dt>
|
|
<dd><p>Pop value of byte variable var from stack using register ra5.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="NiosII_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#NS32K_002dDependent" accesskey="n" rel="next">NS32K-Dependent</a>, Previous: <a href="#NDS32_002dDependent" accesskey="p" rel="previous">NDS32-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Nios-II-Dependent-Features"></a>
|
|
<h3 class="section">9.31 Nios II Dependent Features</h3>
|
|
|
|
<a name="index-Altera-Nios-II-support"></a>
|
|
<a name="index-Nios-support"></a>
|
|
<a name="index-Nios-II-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Nios-II-Options" accesskey="1">Nios II Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Nios-II-Syntax" accesskey="2">Nios II Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Nios-II-Relocations" accesskey="3">Nios II Relocations</a>:</td><td> </td><td align="left" valign="top">Relocations
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Nios-II-Directives" accesskey="4">Nios II Directives</a>:</td><td> </td><td align="left" valign="top">Nios II Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Nios-II-Opcodes" accesskey="5">Nios II Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Nios-II-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Nios-II-Syntax" accesskey="n" rel="next">Nios II Syntax</a>, Up: <a href="#NiosII_002dDependent" accesskey="u" rel="up">NiosII-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-16"></a>
|
|
<h4 class="subsection">9.31.1 Options</h4>
|
|
<a name="index-Nios-II-options"></a>
|
|
<a name="index-options-for-Nios-II"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-relax_002dsection-command_002dline-option_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>-relax-section</code></dt>
|
|
<dd><p>Replace identified out-of-range branches with PC-relative <code>jmp</code>
|
|
sequences when possible. The generated code sequences are suitable
|
|
for use in position-independent code, but there is a practical limit
|
|
on the extended branch range because of the length of the sequences.
|
|
This option is the default.
|
|
</p>
|
|
<a name="index-relax_002dall-command_002dline-option_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>-relax-all</code></dt>
|
|
<dd><p>Replace branch instructions not determinable to be in range
|
|
and all call instructions with <code>jmp</code> and <code>callr</code> sequences
|
|
(respectively). This option generates absolute relocations against the
|
|
target symbols and is not appropriate for position-independent code.
|
|
</p>
|
|
<a name="index-no_002drelax-command_002dline-option_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>-no-relax</code></dt>
|
|
<dd><p>Do not replace any branches or calls.
|
|
</p>
|
|
<a name="index-EB-command_002dline-option_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>-EB</code></dt>
|
|
<dd><p>Generate big-endian output.
|
|
</p>
|
|
<a name="index-EL-command_002dline-option_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>-EL</code></dt>
|
|
<dd><p>Generate little-endian output. This is the default.
|
|
</p>
|
|
<a name="index-march-command_002dline-option_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>-march=<var>architecture</var></code></dt>
|
|
<dd><p>This option specifies the target architecture. The assembler issues
|
|
an error message if an attempt is made to assemble an instruction which
|
|
will not execute on the target architecture. The following architecture
|
|
names are recognized:
|
|
<code>r1</code>,
|
|
<code>r2</code>.
|
|
The default is <code>r1</code>.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Nios-II-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Nios-II-Relocations" accesskey="n" rel="next">Nios II Relocations</a>, Previous: <a href="#Nios-II-Options" accesskey="p" rel="previous">Nios II Options</a>, Up: <a href="#NiosII_002dDependent" accesskey="u" rel="up">NiosII-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-24"></a>
|
|
<h4 class="subsection">9.31.2 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Nios-II-Chars" accesskey="1">Nios II Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
|
|
<hr>
|
|
<a name="Nios-II-Chars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#Nios-II-Syntax" accesskey="u" rel="up">Nios II Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-24"></a>
|
|
<h4 class="subsubsection">9.31.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-Nios-II"></a>
|
|
<a name="index-Nios-II-line-comment-character"></a>
|
|
<a name="index-line-separator-character_002c-Nios-II"></a>
|
|
<a name="index-Nios-II-line-separator-character"></a>
|
|
<p>‘<samp>#</samp>’ is the line comment character.
|
|
‘<samp>;</samp>’ is the line separator character.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="Nios-II-Relocations"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Nios-II-Directives" accesskey="n" rel="next">Nios II Directives</a>, Previous: <a href="#Nios-II-Syntax" accesskey="p" rel="previous">Nios II Syntax</a>, Up: <a href="#NiosII_002dDependent" accesskey="u" rel="up">NiosII-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Nios-II-Machine-Relocations"></a>
|
|
<h4 class="subsection">9.31.3 Nios II Machine Relocations</h4>
|
|
|
|
<a name="index-machine-relocations_002c-Nios-II"></a>
|
|
<a name="index-Nios-II-machine-relocations"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd><a name="index-hiadj-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>%hiadj(<var>expression</var>)</code></dt>
|
|
<dd><p>Extract the upper 16 bits of <var>expression</var> and add
|
|
one if the 15th bit is set.
|
|
</p>
|
|
<p>The value of <code>%hiadj(<var>expression</var>)</code> is:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">((<var>expression</var> >> 16) & 0xffff) + ((<var>expression</var> >> 15) & 0x01)
|
|
</pre></div>
|
|
|
|
<p>The <code>%hiadj</code> relocation is intended to be used with
|
|
the <code>addi</code>, <code>ld</code> or <code>st</code> instructions
|
|
along with a <code>%lo</code>, in order to load a 32-bit constant.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">movhi r2, %hiadj(symbol)
|
|
addi r2, r2, %lo(symbol)
|
|
</pre></div>
|
|
|
|
<a name="index-hi-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>%hi(<var>expression</var>)</code></dt>
|
|
<dd><p>Extract the upper 16 bits of <var>expression</var>.
|
|
</p>
|
|
<a name="index-lo-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>%lo(<var>expression</var>)</code></dt>
|
|
<dd><p>Extract the lower 16 bits of <var>expression</var>.
|
|
</p>
|
|
<a name="index-gprel-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>%gprel(<var>expression</var>)</code></dt>
|
|
<dd><p>Subtract the value of the symbol <code>_gp</code> from
|
|
<var>expression</var>.
|
|
</p>
|
|
<p>The intention of the <code>%gprel</code> relocation is
|
|
to have a fast small area of memory which only
|
|
takes a 16-bit immediate to access.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .section .sdata
|
|
fastint:
|
|
.int 123
|
|
.section .text
|
|
ldw r4, %gprel(fastint)(gp)
|
|
</pre></div>
|
|
|
|
<a name="index-call-directive_002c-Nios-II"></a>
|
|
<a name="index-call_005flo-directive_002c-Nios-II"></a>
|
|
<a name="index-call_005fhiadj-directive_002c-Nios-II"></a>
|
|
<a name="index-got-directive_002c-Nios-II"></a>
|
|
<a name="index-got_005flo-directive_002c-Nios-II"></a>
|
|
<a name="index-got_005fhiadj-directive_002c-Nios-II"></a>
|
|
<a name="index-gotoff-directive_002c-Nios-II"></a>
|
|
<a name="index-gotoff_005flo-directive_002c-Nios-II"></a>
|
|
<a name="index-gotoff_005fhiadj-directive_002c-Nios-II"></a>
|
|
<a name="index-tls_005fgd-directive_002c-Nios-II"></a>
|
|
<a name="index-tls_005fie-directive_002c-Nios-II"></a>
|
|
<a name="index-tls_005fle-directive_002c-Nios-II"></a>
|
|
<a name="index-tls_005fldm-directive_002c-Nios-II"></a>
|
|
<a name="index-tls_005fldo-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>%call(<var>expression</var>)</code></dt>
|
|
<dt><code>%call_lo(<var>expression</var>)</code></dt>
|
|
<dt><code>%call_hiadj(<var>expression</var>)</code></dt>
|
|
<dt><code>%got(<var>expression</var>)</code></dt>
|
|
<dt><code>%got_lo(<var>expression</var>)</code></dt>
|
|
<dt><code>%got_hiadj(<var>expression</var>)</code></dt>
|
|
<dt><code>%gotoff(<var>expression</var>)</code></dt>
|
|
<dt><code>%gotoff_lo(<var>expression</var>)</code></dt>
|
|
<dt><code>%gotoff_hiadj(<var>expression</var>)</code></dt>
|
|
<dt><code>%tls_gd(<var>expression</var>)</code></dt>
|
|
<dt><code>%tls_ie(<var>expression</var>)</code></dt>
|
|
<dt><code>%tls_le(<var>expression</var>)</code></dt>
|
|
<dt><code>%tls_ldm(<var>expression</var>)</code></dt>
|
|
<dt><code>%tls_ldo(<var>expression</var>)</code></dt>
|
|
<dd>
|
|
<p>These relocations support the ABI for Linux Systems documented in the
|
|
<cite>Nios II Processor Reference Handbook</cite>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<hr>
|
|
<a name="Nios-II-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Nios-II-Opcodes" accesskey="n" rel="next">Nios II Opcodes</a>, Previous: <a href="#Nios-II-Relocations" accesskey="p" rel="previous">Nios II Relocations</a>, Up: <a href="#NiosII_002dDependent" accesskey="u" rel="up">NiosII-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Nios-II-Machine-Directives"></a>
|
|
<h4 class="subsection">9.31.4 Nios II Machine Directives</h4>
|
|
|
|
<a name="index-machine-directives_002c-Nios-II"></a>
|
|
<a name="index-Nios-II-machine-directives"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-align-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.align <var>expression</var> [, <var>expression</var>]</code></dt>
|
|
<dd><p>This is the generic <code>.align</code> directive, however
|
|
this aligns to a power of two.
|
|
</p>
|
|
<a name="index-half-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.half <var>expression</var></code></dt>
|
|
<dd><p>Create an aligned constant 2 bytes in size.
|
|
</p>
|
|
<a name="index-word-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.word <var>expression</var></code></dt>
|
|
<dd><p>Create an aligned constant 4 bytes in size.
|
|
</p>
|
|
<a name="index-dword-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.dword <var>expression</var></code></dt>
|
|
<dd><p>Create an aligned constant 8 bytes in size.
|
|
</p>
|
|
<a name="index-2byte-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.2byte <var>expression</var></code></dt>
|
|
<dd><p>Create an unaligned constant 2 bytes in size.
|
|
</p>
|
|
<a name="index-4byte-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.4byte <var>expression</var></code></dt>
|
|
<dd><p>Create an unaligned constant 4 bytes in size.
|
|
</p>
|
|
<a name="index-8byte-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.8byte <var>expression</var></code></dt>
|
|
<dd><p>Create an unaligned constant 8 bytes in size.
|
|
</p>
|
|
<a name="index-16byte-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.16byte <var>expression</var></code></dt>
|
|
<dd><p>Create an unaligned constant 16 bytes in size.
|
|
</p>
|
|
<a name="index-set-noat-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.set noat</code></dt>
|
|
<dd><p>Allows assembly code to use <code>at</code> register without
|
|
warning. Macro or relaxation expansions
|
|
generate warnings.
|
|
</p>
|
|
<a name="index-set-at-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.set at</code></dt>
|
|
<dd><p>Assembly code using <code>at</code> register generates
|
|
warnings, and macro expansion and relaxation are
|
|
enabled.
|
|
</p>
|
|
<a name="index-set-nobreak-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.set nobreak</code></dt>
|
|
<dd><p>Allows assembly code to use <code>ba</code> and <code>bt</code>
|
|
registers without warning.
|
|
</p>
|
|
<a name="index-set-break-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.set break</code></dt>
|
|
<dd><p>Turns warnings back on for using <code>ba</code> and <code>bt</code>
|
|
registers.
|
|
</p>
|
|
<a name="index-set-norelax-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.set norelax</code></dt>
|
|
<dd><p>Do not replace any branches or calls.
|
|
</p>
|
|
<a name="index-set-relaxsection-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.set relaxsection</code></dt>
|
|
<dd><p>Replace identified out-of-range branches with
|
|
<code>jmp</code> sequences (default).
|
|
</p>
|
|
<a name="index-set-relaxall-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.set relaxsection</code></dt>
|
|
<dd><p>Replace all branch and call instructions with
|
|
<code>jmp</code> and <code>callr</code> sequences.
|
|
</p>
|
|
<a name="index-set-directive_002c-Nios-II"></a>
|
|
</dd>
|
|
<dt><code>.set …</code></dt>
|
|
<dd><p>All other <code>.set</code> are the normal use.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Nios-II-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Nios-II-Directives" accesskey="p" rel="previous">Nios II Directives</a>, Up: <a href="#NiosII_002dDependent" accesskey="u" rel="up">NiosII-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-15"></a>
|
|
<h4 class="subsection">9.31.5 Opcodes</h4>
|
|
|
|
<a name="index-Nios-II-opcodes"></a>
|
|
<a name="index-opcodes-for-Nios-II"></a>
|
|
<p><code>as</code> implements all the standard Nios II opcodes documented in the
|
|
<cite>Nios II Processor Reference Handbook</cite>, including the assembler
|
|
pseudo-instructions.
|
|
</p>
|
|
|
|
|
|
<hr>
|
|
<a name="NS32K_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#OpenRISC_002dDependent" accesskey="n" rel="next">OpenRISC-Dependent</a>, Previous: <a href="#NiosII_002dDependent" accesskey="p" rel="previous">NiosII-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="NS32K-Dependent-Features"></a>
|
|
<h3 class="section">9.32 NS32K Dependent Features</h3>
|
|
|
|
|
|
<a name="index-N32K-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#NS32K-Syntax" accesskey="1">NS32K Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
|
|
<hr>
|
|
<a name="NS32K-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#NS32K_002dDependent" accesskey="u" rel="up">NS32K-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-25"></a>
|
|
<h4 class="subsection">9.32.1 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#NS32K_002dChars" accesskey="1">NS32K-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="NS32K_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#NS32K-Syntax" accesskey="u" rel="up">NS32K Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-25"></a>
|
|
<h4 class="subsubsection">9.32.1.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-NS32K"></a>
|
|
<a name="index-NS32K-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>#</samp>’ appearing anywhere on a line indicates the
|
|
start of a comment that extends to the end of that line.
|
|
</p>
|
|
<p>If a ‘<samp>#</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 (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<p>If Sequent compatibility has been configured into the assembler then
|
|
the ‘<samp>|</samp>’ character appearing as the first character on a line will
|
|
also indicate the start of a line comment.
|
|
</p>
|
|
<a name="index-line-separator_002c-NS32K"></a>
|
|
<a name="index-statement-separator_002c-NS32K"></a>
|
|
<a name="index-NS32K-line-separator"></a>
|
|
<p>The ‘<samp>;</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
<hr>
|
|
<a name="OpenRISC_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PDP_002d11_002dDependent" accesskey="n" rel="next">PDP-11-Dependent</a>, Previous: <a href="#NS32K_002dDependent" accesskey="p" rel="previous">NS32K-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="OPENRISC-Dependent-Features"></a>
|
|
<h3 class="section">9.33 OPENRISC Dependent Features</h3>
|
|
|
|
<a name="index-OPENRISC-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#OpenRISC_002dSyntax" accesskey="1">OpenRISC-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#OpenRISC_002dFloat" accesskey="2">OpenRISC-Float</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#OpenRISC_002dDirectives" accesskey="3">OpenRISC-Directives</a>:</td><td> </td><td align="left" valign="top">OpenRISC Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#OpenRISC_002dOpcodes" accesskey="4">OpenRISC-Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<a name="index-OPENRISC-syntax"></a>
|
|
<a name="index-syntax_002c-OPENRISC"></a>
|
|
<hr>
|
|
<a name="OpenRISC_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#OpenRISC_002dFloat" accesskey="n" rel="next">OpenRISC-Float</a>, Up: <a href="#OpenRISC_002dDependent" accesskey="u" rel="up">OpenRISC-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="OpenRISC-Syntax"></a>
|
|
<h4 class="subsection">9.33.1 OpenRISC Syntax</h4>
|
|
<p>The assembler syntax follows the OpenRISC 1000 Architecture Manual.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#OpenRISC_002dChars" accesskey="1">OpenRISC-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#OpenRISC_002dRegs" accesskey="2">OpenRISC-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#OpenRISC_002dRelocs" accesskey="3">OpenRISC-Relocs</a>:</td><td> </td><td align="left" valign="top">Relocations
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="OpenRISC_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#OpenRISC_002dRegs" accesskey="n" rel="next">OpenRISC-Regs</a>, Up: <a href="#OpenRISC_002dSyntax" accesskey="u" rel="up">OpenRISC-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-26"></a>
|
|
<h4 class="subsubsection">9.33.1.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-OpenRISC"></a>
|
|
<a name="index-OpenRISC-line-comment-character"></a>
|
|
<p>A ‘<samp>#</samp>’ character appearing anywhere on a line indicates the start
|
|
of a comment that extends to the end of that line.
|
|
</p>
|
|
<a name="index-line-separator_002c-OpenRISC"></a>
|
|
<a name="index-statement-separator_002c-OpenRISC"></a>
|
|
<a name="index-OpenRISC-line-separator"></a>
|
|
<p>‘<samp>;</samp>’ can be used instead of a newline to separate statements.
|
|
</p>
|
|
<hr>
|
|
<a name="OpenRISC_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#OpenRISC_002dRelocs" accesskey="n" rel="next">OpenRISC-Relocs</a>, Previous: <a href="#OpenRISC_002dChars" accesskey="p" rel="previous">OpenRISC-Chars</a>, Up: <a href="#OpenRISC_002dSyntax" accesskey="u" rel="up">OpenRISC-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-14"></a>
|
|
<h4 class="subsubsection">9.33.1.2 Register Names</h4>
|
|
<a name="index-OpenRISC-registers"></a>
|
|
<a name="index-register-names_002c-OpenRISC"></a>
|
|
|
|
<p>The OpenRISC register file contains 32 general pupose registers.
|
|
</p>
|
|
<ul>
|
|
<li> The 32 general purpose registers are referred to as ‘<samp>r<var>n</var></samp>’.
|
|
|
|
</li><li> The stack pointer register ‘<samp>r1</samp>’ can be referenced using the alias
|
|
‘<samp>sp</samp>’.
|
|
|
|
</li><li> The frame pointer register ‘<samp>r2</samp>’ can be referenced using the alias
|
|
‘<samp>fp</samp>’.
|
|
|
|
</li><li> The link register ‘<samp>r9</samp>’ can be referenced using the alias ‘<samp>lr</samp>’.
|
|
</li></ul>
|
|
|
|
<p>Floating point operations use the same general purpose registers. The
|
|
instructions <code>lf.itof.s</code> (single precision) and <code>lf.itof.d</code> (double
|
|
precision) can be used to convert integer values to floating point.
|
|
Likewise, instructions <code>lf.ftoi.s</code> (single precision) and
|
|
<code>lf.ftoi.d</code> (double precision) can be used to convert floating point to
|
|
integer.
|
|
</p>
|
|
<p>OpenRISC also contains privileged special purpose registers (SPRs). The
|
|
SPRs are accessed using the <code>l.mfspr</code> and <code>l.mtspr</code> instructions.
|
|
</p>
|
|
<hr>
|
|
<a name="OpenRISC_002dRelocs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#OpenRISC_002dRegs" accesskey="p" rel="previous">OpenRISC-Regs</a>, Up: <a href="#OpenRISC_002dSyntax" accesskey="u" rel="up">OpenRISC-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Relocations-3"></a>
|
|
<h4 class="subsubsection">9.33.1.3 Relocations</h4>
|
|
<a name="index-OpenRISC-relocations"></a>
|
|
<a name="index-relocations_002c-OpenRISC"></a>
|
|
|
|
<p>ELF relocations are available as defined in the OpenRISC architecture
|
|
specification.
|
|
</p>
|
|
<p><code>R_OR1K_HI_16_IN_INSN</code> is obtained using ‘<samp>hi</samp>’ and
|
|
<code>R_OR1K_LO_16_IN_INSN</code> and <code>R_OR1K_SLO16</code> are obtained using
|
|
‘<samp>lo</samp>’. For signed offsets <code>R_OR1K_AHI16</code> is obtained from
|
|
‘<samp>ha</samp>’. For example:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">l.movhi r5, hi(symbol)
|
|
l.ori r5, r5, lo(symbol)
|
|
|
|
l.movhi r5, ha(symbol)
|
|
l.addi r5, r5, lo(symbol)
|
|
</pre></div>
|
|
|
|
<p>These “high” mnemonics extract bits 31:16 of their operand,
|
|
and the “low” mnemonics extract bits 15:0 of their operand.
|
|
</p>
|
|
<p>The PC relative relocation <code>R_OR1K_GOTPC_HI16</code> can be obtained by
|
|
enclosing an operand inside of ‘<samp>gotpchi</samp>’. Likewise, the
|
|
<code>R_OR1K_GOTPC_LO16</code> relocation can be obtained using ‘<samp>gotpclo</samp>’.
|
|
These are mostly used when assembling PIC code. For example, the
|
|
standard PIC sequence on OpenRISC to get the base of the global offset
|
|
table, PC relative, into a register, can be performed as:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">l.jal 0x8
|
|
l.movhi r17, gotpchi(_GLOBAL_OFFSET_TABLE_-4)
|
|
l.ori r17, r17, gotpclo(_GLOBAL_OFFSET_TABLE_+0)
|
|
l.add r17, r17, r9
|
|
</pre></div>
|
|
|
|
<p>Several relocations exist to allow the link editor to perform GOT data
|
|
references. The <code>R_OR1K_GOT16</code> relocation can obtained by enclosing an
|
|
operand inside of ‘<samp>got</samp>’. For example, assuming the GOT base is in
|
|
register <code>r17</code>.
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">l.lwz r19, got(a)(r17)
|
|
l.lwz r21, 0(r19)
|
|
</pre></div>
|
|
|
|
<p>Also, several relocations exist for local GOT references. The
|
|
<code>R_OR1K_GOTOFF_AHI16</code> relocation can obtained by enclosing an operand
|
|
inside of ‘<samp>gotoffha</samp>’. Likewise, <code>R_OR1K_GOTOFF_LO16</code> and
|
|
<code>R_OR1K_GOTOFF_SLO16</code> can be obtained by enclosing an operand inside of
|
|
‘<samp>gotofflo</samp>’. For example, assuming the GOT base is in register
|
|
<code>rl7</code>:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">l.movhi r19, gotoffha(symbol)
|
|
l.add r19, r19, r17
|
|
l.lwz r19, gotofflo(symbol)(r19)
|
|
</pre></div>
|
|
|
|
<p>The above PC relative relocations use a <code>l.jal</code> (jump) instruction
|
|
and reading of the link register to load the PC. OpenRISC also supports
|
|
page offset PC relative locations without a jump instruction using the
|
|
<code>l.adrp</code> instruction. By default the <code>l.adrp</code> instruction will
|
|
create an <code>R_OR1K_PCREL_PG21</code> relocation.
|
|
Likewise, <code>BFD_RELOC_OR1K_LO13</code> and <code>BFD_RELOC_OR1K_SLO13</code> can
|
|
be obtained by enclosing an operand inside of ‘<samp>po</samp>’. For example:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">l.adrp r3, symbol
|
|
l.ori r4, r3, po(symbol)
|
|
l.lbz r5, po(symbol)(r3)
|
|
l.sb po(symbol)(r3), r6
|
|
</pre></div>
|
|
|
|
<p>Likewise the page offset relocations can be used with GOT references. The
|
|
relocation <code>R_OR1K_GOT_PG21</code> can be obtained by enclosing an
|
|
<code>l.adrp</code> immediate operand inside of ‘<samp>got</samp>’. Likewise,
|
|
<code>R_OR1K_GOT_LO13</code> can be obtained by enclosing an operand inside of
|
|
‘<samp>gotpo</samp>’. For example to load the value of a GOT symbol into register
|
|
‘<samp>r5</samp>’ we can do:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">l.adrp r17, got(_GLOBAL_OFFSET_TABLE_)
|
|
l.lwz r5, gotpo(symbol)(r17)
|
|
</pre></div>
|
|
|
|
<p>There are many relocations that can be requested for access to
|
|
thread local storage variables. All of the OpenRISC TLS mnemonics
|
|
are supported:
|
|
</p>
|
|
<ul>
|
|
<li> <code>R_OR1K_TLS_GD_HI16</code> is requested using ‘<samp>tlsgdhi</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_GD_LO16</code> is requested using ‘<samp>tlsgdlo</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_GD_PG21</code> is requested using ‘<samp>tldgd</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_GD_LO13</code> is requested using ‘<samp>tlsgdpo</samp>’.
|
|
|
|
</li><li> <code>R_OR1K_TLS_LDM_HI16</code> is requested using ‘<samp>tlsldmhi</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_LDM_LO16</code> is requested using ‘<samp>tlsldmlo</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_LDM_PG21</code> is requested using ‘<samp>tldldm</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_LDM_LO13</code> is requested using ‘<samp>tlsldmpo</samp>’.
|
|
|
|
</li><li> <code>R_OR1K_TLS_LDO_HI16</code> is requested using ‘<samp>dtpoffhi</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_LDO_LO16</code> is requested using ‘<samp>dtpofflo</samp>’.
|
|
|
|
</li><li> <code>R_OR1K_TLS_IE_HI16</code> is requested using ‘<samp>gottpoffhi</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_IE_AHI16</code> is requested using ‘<samp>gottpoffha</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_IE_LO16</code> is requested using ‘<samp>gottpofflo</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_IE_PG21</code> is requested using ‘<samp>gottp</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_IE_LO13</code> is requested using ‘<samp>gottppo</samp>’.
|
|
|
|
</li><li> <code>R_OR1K_TLS_LE_HI16</code> is requested using ‘<samp>tpoffhi</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_LE_AHI16</code> is requested using ‘<samp>tpoffha</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_LE_LO16</code> is requested using ‘<samp>tpofflo</samp>’.
|
|
</li><li> <code>R_OR1K_TLS_LE_SLO16</code> also is requested using ‘<samp>tpofflo</samp>’
|
|
depending on the instruction format.
|
|
</li></ul>
|
|
|
|
<p>Here are some example TLS model sequences.
|
|
</p>
|
|
<p>First, General Dynamic:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">l.movhi r17, tlsgdhi(symbol)
|
|
l.ori r17, r17, tlsgdlo(symbol)
|
|
l.add r17, r17, r16
|
|
l.or r3, r17, r17
|
|
l.jal plt(__tls_get_addr)
|
|
l.nop
|
|
</pre></div>
|
|
|
|
<p>Initial Exec:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">l.movhi r17, gottpoffhi(symbol)
|
|
l.add r17, r17, r16
|
|
l.lwz r17, gottpofflo(symbol)(r17)
|
|
l.add r17, r17, r10
|
|
l.lbs r17, 0(r17)
|
|
</pre></div>
|
|
|
|
<p>And finally, Local Exec:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">l.movhi r17, tpoffha(symbol)
|
|
l.add r17, r17, r10
|
|
l.addi r17, r17, tpofflo(symbol)
|
|
l.lbs r17, 0(r17)
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="OpenRISC_002dFloat"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#OpenRISC_002dDirectives" accesskey="n" rel="next">OpenRISC-Directives</a>, Previous: <a href="#OpenRISC_002dSyntax" accesskey="p" rel="previous">OpenRISC-Syntax</a>, Up: <a href="#OpenRISC_002dDependent" accesskey="u" rel="up">OpenRISC-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-11"></a>
|
|
<h4 class="subsection">9.33.2 Floating Point</h4>
|
|
|
|
<a name="index-floating-point_002c-OPENRISC-_0028IEEE_0029"></a>
|
|
<a name="index-OPENRISC-floating-point-_0028IEEE_0029"></a>
|
|
<p>OpenRISC uses <small>IEEE</small> floating-point numbers.
|
|
</p>
|
|
<hr>
|
|
<a name="OpenRISC_002dDirectives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#OpenRISC_002dOpcodes" accesskey="n" rel="next">OpenRISC-Opcodes</a>, Previous: <a href="#OpenRISC_002dFloat" accesskey="p" rel="previous">OpenRISC-Float</a>, Up: <a href="#OpenRISC_002dDependent" accesskey="u" rel="up">OpenRISC-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="OpenRISC-Machine-Directives"></a>
|
|
<h4 class="subsection">9.33.3 OpenRISC Machine Directives</h4>
|
|
|
|
<a name="index-OPENRISC-machine-directives"></a>
|
|
<a name="index-machine-directives_002c-OPENRISC"></a>
|
|
<p>The OpenRISC version of <code>as</code> supports the following additional
|
|
machine directives:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-align-directive_002c-OpenRISC"></a>
|
|
</dd>
|
|
<dt><code>.align</code></dt>
|
|
<dd><p>This must be followed by the desired alignment in bytes.
|
|
</p>
|
|
<a name="index-word-directive_002c-OpenRISC"></a>
|
|
</dd>
|
|
<dt><code>.word</code></dt>
|
|
<dd><p>On the OpenRISC, the <code>.word</code> directive produces a 32 bit value.
|
|
</p>
|
|
<a name="index-nodelay-directive_002c-OpenRISC"></a>
|
|
</dd>
|
|
<dt><code>.nodelay</code></dt>
|
|
<dd><p>On the OpenRISC, the <code>.nodelay</code> directive sets a flag in elf binaries
|
|
indicating that the binary is generated catering for no delay slots.
|
|
</p>
|
|
<a name="index-proc-directive_002c-OpenRISC"></a>
|
|
</dd>
|
|
<dt><code>.proc</code></dt>
|
|
<dd><p>This directive is ignored. Any text following it on the same
|
|
line is also ignored.
|
|
</p>
|
|
<a name="index-endproc-directive_002c-OpenRISC"></a>
|
|
</dd>
|
|
<dt><code>.endproc</code></dt>
|
|
<dd><p>This directive is ignored. Any text following it on the same
|
|
line is also ignored.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="OpenRISC_002dOpcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#OpenRISC_002dDirectives" accesskey="p" rel="previous">OpenRISC-Directives</a>, Up: <a href="#OpenRISC_002dDependent" accesskey="u" rel="up">OpenRISC-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-16"></a>
|
|
<h4 class="subsection">9.33.4 Opcodes</h4>
|
|
|
|
<a name="index-OpenRISC-opcode-summary"></a>
|
|
<a name="index-opcode-summary_002c-OpenRISC"></a>
|
|
<a name="index-mnemonics_002c-OpenRISC"></a>
|
|
<a name="index-instruction-summary_002c-LM32-1"></a>
|
|
<p>For detailed information on the OpenRISC machine instruction set, see
|
|
<a href="http://www.openrisc.io/architecture/">http://www.openrisc.io/architecture/</a>.
|
|
</p>
|
|
<p><code>as</code> implements all the standard OpenRISC opcodes.
|
|
</p>
|
|
<hr>
|
|
<a name="PDP_002d11_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PJ_002dDependent" accesskey="n" rel="next">PJ-Dependent</a>, Previous: <a href="#OpenRISC_002dDependent" accesskey="p" rel="previous">OpenRISC-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="PDP_002d11-Dependent-Features"></a>
|
|
<h3 class="section">9.34 PDP-11 Dependent Features</h3>
|
|
|
|
<a name="index-PDP_002d11-support"></a>
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#PDP_002d11_002dOptions" accesskey="1">PDP-11-Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PDP_002d11_002dPseudos" accesskey="2">PDP-11-Pseudos</a>:</td><td> </td><td align="left" valign="top">Assembler Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PDP_002d11_002dSyntax" accesskey="3">PDP-11-Syntax</a>:</td><td> </td><td align="left" valign="top">DEC Syntax versus BSD Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PDP_002d11_002dMnemonics" accesskey="4">PDP-11-Mnemonics</a>:</td><td> </td><td align="left" valign="top">Instruction Naming
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PDP_002d11_002dSynthetic" accesskey="5">PDP-11-Synthetic</a>:</td><td> </td><td align="left" valign="top">Synthetic Instructions
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="PDP_002d11_002dOptions"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PDP_002d11_002dPseudos" accesskey="n" rel="next">PDP-11-Pseudos</a>, Up: <a href="#PDP_002d11_002dDependent" accesskey="u" rel="up">PDP-11-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-17"></a>
|
|
<h4 class="subsection">9.34.1 Options</h4>
|
|
|
|
<a name="index-options-for-PDP_002d11"></a>
|
|
|
|
<p>The PDP-11 version of <code>as</code> has a rich set of machine
|
|
dependent options.
|
|
</p>
|
|
<a name="Code-Generation-Options"></a>
|
|
<h4 class="subsubsection">9.34.1.1 Code Generation Options</h4>
|
|
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dmpic"></a>
|
|
<a name="index-_002dmno_002dpic"></a>
|
|
</dd>
|
|
<dt><code>-mpic | -mno-pic</code></dt>
|
|
<dd><p>Generate position-independent (or position-dependent) code.
|
|
</p>
|
|
<p>The default is to generate position-independent code.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Instruction-Set-Extension-Options"></a>
|
|
<h4 class="subsubsection">9.34.1.2 Instruction Set Extension Options</h4>
|
|
|
|
<p>These options enables or disables the use of extensions over the base
|
|
line instruction set as introduced by the first PDP-11 CPU: the KA11.
|
|
Most options come in two variants: a <code>-m</code><var>extension</var> that
|
|
enables <var>extension</var>, and a <code>-mno-</code><var>extension</var> that disables
|
|
<var>extension</var>.
|
|
</p>
|
|
<p>The default is to enable all extensions.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dmall"></a>
|
|
<a name="index-_002dmall_002dextensions"></a>
|
|
</dd>
|
|
<dt><code>-mall | -mall-extensions</code></dt>
|
|
<dd><p>Enable all instruction set extensions.
|
|
</p>
|
|
<a name="index-_002dmno_002dextensions"></a>
|
|
</dd>
|
|
<dt><code>-mno-extensions</code></dt>
|
|
<dd><p>Disable all instruction set extensions.
|
|
</p>
|
|
<a name="index-_002dmcis"></a>
|
|
<a name="index-_002dmno_002dcis"></a>
|
|
</dd>
|
|
<dt><code>-mcis | -mno-cis</code></dt>
|
|
<dd><p>Enable (or disable) the use of the commercial instruction set, which
|
|
consists of these instructions: <code>ADDNI</code>, <code>ADDN</code>, <code>ADDPI</code>,
|
|
<code>ADDP</code>, <code>ASHNI</code>, <code>ASHN</code>, <code>ASHPI</code>, <code>ASHP</code>,
|
|
<code>CMPCI</code>, <code>CMPC</code>, <code>CMPNI</code>, <code>CMPN</code>, <code>CMPPI</code>,
|
|
<code>CMPP</code>, <code>CVTLNI</code>, <code>CVTLN</code>, <code>CVTLPI</code>, <code>CVTLP</code>,
|
|
<code>CVTNLI</code>, <code>CVTNL</code>, <code>CVTNPI</code>, <code>CVTNP</code>, <code>CVTPLI</code>,
|
|
<code>CVTPL</code>, <code>CVTPNI</code>, <code>CVTPN</code>, <code>DIVPI</code>, <code>DIVP</code>,
|
|
<code>L2DR</code>, <code>L3DR</code>, <code>LOCCI</code>, <code>LOCC</code>, <code>MATCI</code>,
|
|
<code>MATC</code>, <code>MOVCI</code>, <code>MOVC</code>, <code>MOVRCI</code>, <code>MOVRC</code>,
|
|
<code>MOVTCI</code>, <code>MOVTC</code>, <code>MULPI</code>, <code>MULP</code>, <code>SCANCI</code>,
|
|
<code>SCANC</code>, <code>SKPCI</code>, <code>SKPC</code>, <code>SPANCI</code>, <code>SPANC</code>,
|
|
<code>SUBNI</code>, <code>SUBN</code>, <code>SUBPI</code>, and <code>SUBP</code>.
|
|
</p>
|
|
<a name="index-_002dmcsm"></a>
|
|
<a name="index-_002dmno_002dcsm"></a>
|
|
</dd>
|
|
<dt><code>-mcsm | -mno-csm</code></dt>
|
|
<dd><p>Enable (or disable) the use of the <code>CSM</code> instruction.
|
|
</p>
|
|
<a name="index-_002dmeis"></a>
|
|
<a name="index-_002dmno_002deis"></a>
|
|
</dd>
|
|
<dt><code>-meis | -mno-eis</code></dt>
|
|
<dd><p>Enable (or disable) the use of the extended instruction set, which
|
|
consists of these instructions: <code>ASHC</code>, <code>ASH</code>, <code>DIV</code>,
|
|
<code>MARK</code>, <code>MUL</code>, <code>RTT</code>, <code>SOB</code> <code>SXT</code>, and
|
|
<code>XOR</code>.
|
|
</p>
|
|
<a name="index-_002dmfis"></a>
|
|
<a name="index-_002dmno_002dfis"></a>
|
|
<a name="index-_002dmkev11"></a>
|
|
<a name="index-_002dmkev11-1"></a>
|
|
<a name="index-_002dmno_002dkev11"></a>
|
|
</dd>
|
|
<dt><code>-mfis | -mkev11</code></dt>
|
|
<dt><code>-mno-fis | -mno-kev11</code></dt>
|
|
<dd><p>Enable (or disable) the use of the KEV11 floating-point instructions:
|
|
<code>FADD</code>, <code>FDIV</code>, <code>FMUL</code>, and <code>FSUB</code>.
|
|
</p>
|
|
<a name="index-_002dmfpp"></a>
|
|
<a name="index-_002dmno_002dfpp"></a>
|
|
<a name="index-_002dmfpu"></a>
|
|
<a name="index-_002dmno_002dfpu"></a>
|
|
<a name="index-_002dmfp_002d11"></a>
|
|
<a name="index-_002dmno_002dfp_002d11"></a>
|
|
</dd>
|
|
<dt><code>-mfpp | -mfpu | -mfp-11</code></dt>
|
|
<dt><code>-mno-fpp | -mno-fpu | -mno-fp-11</code></dt>
|
|
<dd><p>Enable (or disable) the use of FP-11 floating-point instructions:
|
|
<code>ABSF</code>, <code>ADDF</code>, <code>CFCC</code>, <code>CLRF</code>, <code>CMPF</code>,
|
|
<code>DIVF</code>, <code>LDCFF</code>, <code>LDCIF</code>, <code>LDEXP</code>, <code>LDF</code>,
|
|
<code>LDFPS</code>, <code>MODF</code>, <code>MULF</code>, <code>NEGF</code>, <code>SETD</code>,
|
|
<code>SETF</code>, <code>SETI</code>, <code>SETL</code>, <code>STCFF</code>, <code>STCFI</code>,
|
|
<code>STEXP</code>, <code>STF</code>, <code>STFPS</code>, <code>STST</code>, <code>SUBF</code>, and
|
|
<code>TSTF</code>.
|
|
</p>
|
|
<a name="index-_002dmlimited_002deis"></a>
|
|
<a name="index-_002dmno_002dlimited_002deis"></a>
|
|
</dd>
|
|
<dt><code>-mlimited-eis | -mno-limited-eis</code></dt>
|
|
<dd><p>Enable (or disable) the use of the limited extended instruction set:
|
|
<code>MARK</code>, <code>RTT</code>, <code>SOB</code>, <code>SXT</code>, and <code>XOR</code>.
|
|
</p>
|
|
<p>The -mno-limited-eis options also implies -mno-eis.
|
|
</p>
|
|
<a name="index-_002dmmfpt"></a>
|
|
<a name="index-_002dmno_002dmfpt"></a>
|
|
</dd>
|
|
<dt><code>-mmfpt | -mno-mfpt</code></dt>
|
|
<dd><p>Enable (or disable) the use of the <code>MFPT</code> instruction.
|
|
</p>
|
|
<a name="index-_002dmmutiproc"></a>
|
|
<a name="index-_002dmno_002dmutiproc"></a>
|
|
</dd>
|
|
<dt><code>-mmultiproc | -mno-multiproc</code></dt>
|
|
<dd><p>Enable (or disable) the use of multiprocessor instructions: <code>TSTSET</code> and
|
|
<code>WRTLCK</code>.
|
|
</p>
|
|
<a name="index-_002dmmxps"></a>
|
|
<a name="index-_002dmno_002dmxps"></a>
|
|
</dd>
|
|
<dt><code>-mmxps | -mno-mxps</code></dt>
|
|
<dd><p>Enable (or disable) the use of the <code>MFPS</code> and <code>MTPS</code> instructions.
|
|
</p>
|
|
<a name="index-_002dmspl"></a>
|
|
<a name="index-_002dmno_002dspl"></a>
|
|
</dd>
|
|
<dt><code>-mspl | -mno-spl</code></dt>
|
|
<dd><p>Enable (or disable) the use of the <code>SPL</code> instruction.
|
|
</p>
|
|
<a name="index-_002dmmicrocode"></a>
|
|
<a name="index-_002dmno_002dmicrocode"></a>
|
|
<p>Enable (or disable) the use of the microcode instructions: <code>LDUB</code>,
|
|
<code>MED</code>, and <code>XFC</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="CPU-Model-Options"></a>
|
|
<h4 class="subsubsection">9.34.1.3 CPU Model Options</h4>
|
|
|
|
<p>These options enable the instruction set extensions supported by a
|
|
particular CPU, and disables all other extensions.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dmka11"></a>
|
|
</dd>
|
|
<dt><code>-mka11</code></dt>
|
|
<dd><p>KA11 CPU. Base line instruction set only.
|
|
</p>
|
|
<a name="index-_002dmkb11"></a>
|
|
</dd>
|
|
<dt><code>-mkb11</code></dt>
|
|
<dd><p>KB11 CPU. Enable extended instruction set and <code>SPL</code>.
|
|
</p>
|
|
<a name="index-_002dmkd11a"></a>
|
|
</dd>
|
|
<dt><code>-mkd11a</code></dt>
|
|
<dd><p>KD11-A CPU. Enable limited extended instruction set.
|
|
</p>
|
|
<a name="index-_002dmkd11b"></a>
|
|
</dd>
|
|
<dt><code>-mkd11b</code></dt>
|
|
<dd><p>KD11-B CPU. Base line instruction set only.
|
|
</p>
|
|
<a name="index-_002dmkd11d"></a>
|
|
</dd>
|
|
<dt><code>-mkd11d</code></dt>
|
|
<dd><p>KD11-D CPU. Base line instruction set only.
|
|
</p>
|
|
<a name="index-_002dmkd11e"></a>
|
|
</dd>
|
|
<dt><code>-mkd11e</code></dt>
|
|
<dd><p>KD11-E CPU. Enable extended instruction set, <code>MFPS</code>, and <code>MTPS</code>.
|
|
</p>
|
|
<a name="index-_002dmkd11f"></a>
|
|
<a name="index-_002dmkd11h"></a>
|
|
<a name="index-_002dmkd11q"></a>
|
|
</dd>
|
|
<dt><code>-mkd11f | -mkd11h | -mkd11q</code></dt>
|
|
<dd><p>KD11-F, KD11-H, or KD11-Q CPU. Enable limited extended instruction set,
|
|
<code>MFPS</code>, and <code>MTPS</code>.
|
|
</p>
|
|
<a name="index-_002dmkd11k"></a>
|
|
</dd>
|
|
<dt><code>-mkd11k</code></dt>
|
|
<dd><p>KD11-K CPU. Enable extended instruction set, <code>LDUB</code>, <code>MED</code>,
|
|
<code>MFPS</code>, <code>MFPT</code>, <code>MTPS</code>, and <code>XFC</code>.
|
|
</p>
|
|
<a name="index-_002dmkd11z"></a>
|
|
</dd>
|
|
<dt><code>-mkd11z</code></dt>
|
|
<dd><p>KD11-Z CPU. Enable extended instruction set, <code>CSM</code>, <code>MFPS</code>,
|
|
<code>MFPT</code>, <code>MTPS</code>, and <code>SPL</code>.
|
|
</p>
|
|
<a name="index-_002dmf11"></a>
|
|
</dd>
|
|
<dt><code>-mf11</code></dt>
|
|
<dd><p>F11 CPU. Enable extended instruction set, <code>MFPS</code>, <code>MFPT</code>, and
|
|
<code>MTPS</code>.
|
|
</p>
|
|
<a name="index-_002dmj11"></a>
|
|
</dd>
|
|
<dt><code>-mj11</code></dt>
|
|
<dd><p>J11 CPU. Enable extended instruction set, <code>CSM</code>, <code>MFPS</code>,
|
|
<code>MFPT</code>, <code>MTPS</code>, <code>SPL</code>, <code>TSTSET</code>, and <code>WRTLCK</code>.
|
|
</p>
|
|
<a name="index-_002dmt11"></a>
|
|
</dd>
|
|
<dt><code>-mt11</code></dt>
|
|
<dd><p>T11 CPU. Enable limited extended instruction set, <code>MFPS</code>, and
|
|
<code>MTPS</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Machine-Model-Options"></a>
|
|
<h4 class="subsubsection">9.34.1.4 Machine Model Options</h4>
|
|
|
|
<p>These options enable the instruction set extensions supported by a
|
|
particular machine model, and disables all other extensions.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dm11_002f03"></a>
|
|
</dd>
|
|
<dt><code>-m11/03</code></dt>
|
|
<dd><p>Same as <code>-mkd11f</code>.
|
|
</p>
|
|
<a name="index-_002dm11_002f04"></a>
|
|
</dd>
|
|
<dt><code>-m11/04</code></dt>
|
|
<dd><p>Same as <code>-mkd11d</code>.
|
|
</p>
|
|
<a name="index-_002dm11_002f05"></a>
|
|
<a name="index-_002dm11_002f10"></a>
|
|
</dd>
|
|
<dt><code>-m11/05 | -m11/10</code></dt>
|
|
<dd><p>Same as <code>-mkd11b</code>.
|
|
</p>
|
|
<a name="index-_002dm11_002f15"></a>
|
|
<a name="index-_002dm11_002f20"></a>
|
|
</dd>
|
|
<dt><code>-m11/15 | -m11/20</code></dt>
|
|
<dd><p>Same as <code>-mka11</code>.
|
|
</p>
|
|
<a name="index-_002dm11_002f21"></a>
|
|
</dd>
|
|
<dt><code>-m11/21</code></dt>
|
|
<dd><p>Same as <code>-mt11</code>.
|
|
</p>
|
|
<a name="index-_002dm11_002f23"></a>
|
|
<a name="index-_002dm11_002f24"></a>
|
|
</dd>
|
|
<dt><code>-m11/23 | -m11/24</code></dt>
|
|
<dd><p>Same as <code>-mf11</code>.
|
|
</p>
|
|
<a name="index-_002dm11_002f34"></a>
|
|
</dd>
|
|
<dt><code>-m11/34</code></dt>
|
|
<dd><p>Same as <code>-mkd11e</code>.
|
|
</p>
|
|
<a name="index-_002dm11_002f34a"></a>
|
|
</dd>
|
|
<dt><code>-m11/34a</code></dt>
|
|
<dd><p>Ame as <code>-mkd11e</code> <code>-mfpp</code>.
|
|
</p>
|
|
<a name="index-_002dm11_002f35"></a>
|
|
<a name="index-_002dm11_002f40"></a>
|
|
</dd>
|
|
<dt><code>-m11/35 | -m11/40</code></dt>
|
|
<dd><p>Same as <code>-mkd11a</code>.
|
|
</p>
|
|
<a name="index-_002dm11_002f44"></a>
|
|
</dd>
|
|
<dt><code>-m11/44</code></dt>
|
|
<dd><p>Same as <code>-mkd11z</code>.
|
|
</p>
|
|
<a name="index-_002dm11_002f45"></a>
|
|
<a name="index-_002dm11_002f50"></a>
|
|
<a name="index-_002dm11_002f55"></a>
|
|
<a name="index-_002dm11_002f70"></a>
|
|
</dd>
|
|
<dt><code>-m11/45 | -m11/50 | -m11/55 | -m11/70</code></dt>
|
|
<dd><p>Same as <code>-mkb11</code>.
|
|
</p>
|
|
<a name="index-_002dm11_002f53"></a>
|
|
<a name="index-_002dm11_002f73"></a>
|
|
<a name="index-_002dm11_002f83"></a>
|
|
<a name="index-_002dm11_002f84"></a>
|
|
<a name="index-_002dm11_002f93"></a>
|
|
<a name="index-_002dm11_002f94"></a>
|
|
</dd>
|
|
<dt><code>-m11/53 | -m11/73 | -m11/83 | -m11/84 | -m11/93 | -m11/94</code></dt>
|
|
<dd><p>Same as <code>-mj11</code>.
|
|
</p>
|
|
<a name="index-_002dm11_002f60"></a>
|
|
</dd>
|
|
<dt><code>-m11/60</code></dt>
|
|
<dd><p>Same as <code>-mkd11k</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="PDP_002d11_002dPseudos"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PDP_002d11_002dSyntax" accesskey="n" rel="next">PDP-11-Syntax</a>, Previous: <a href="#PDP_002d11_002dOptions" accesskey="p" rel="previous">PDP-11-Options</a>, Up: <a href="#PDP_002d11_002dDependent" accesskey="u" rel="up">PDP-11-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-Directives-4"></a>
|
|
<h4 class="subsection">9.34.2 Assembler Directives</h4>
|
|
|
|
<p>The PDP-11 version of <code>as</code> has a few machine
|
|
dependent assembler directives.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>.bss</code></dt>
|
|
<dd><p>Switch to the <code>bss</code> section.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.even</code></dt>
|
|
<dd><p>Align the location counter to an even number.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="PDP_002d11_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PDP_002d11_002dMnemonics" accesskey="n" rel="next">PDP-11-Mnemonics</a>, Previous: <a href="#PDP_002d11_002dPseudos" accesskey="p" rel="previous">PDP-11-Pseudos</a>, Up: <a href="#PDP_002d11_002dDependent" accesskey="u" rel="up">PDP-11-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="PDP_002d11-Assembly-Language-Syntax"></a>
|
|
<h4 class="subsection">9.34.3 PDP-11 Assembly Language Syntax</h4>
|
|
|
|
<a name="index-PDP_002d11-syntax"></a>
|
|
|
|
<a name="index-DEC-syntax"></a>
|
|
<a name="index-BSD-syntax"></a>
|
|
<p><code>as</code> supports both DEC syntax and BSD syntax. The only
|
|
difference is that in DEC syntax, a <code>#</code> character is used to denote
|
|
an immediate constants, while in BSD syntax the character for this
|
|
purpose is <code>$</code>.
|
|
</p>
|
|
<a name="index-PDP_002d11-general_002dpurpose-register-syntax"></a>
|
|
<p>general-purpose registers are named <code>r0</code> through <code>r7</code>.
|
|
Mnemonic alternatives for <code>r6</code> and <code>r7</code> are <code>sp</code> and
|
|
<code>pc</code>, respectively.
|
|
</p>
|
|
<a name="index-PDP_002d11-floating_002dpoint-register-syntax"></a>
|
|
<p>Floating-point registers are named <code>ac0</code> through <code>ac3</code>, or
|
|
alternatively <code>fr0</code> through <code>fr3</code>.
|
|
</p>
|
|
<a name="index-PDP_002d11-comments"></a>
|
|
<p>Comments are started with a <code>#</code> or a <code>/</code> character, and extend
|
|
to the end of the line. (FIXME: clash with immediates?)
|
|
</p>
|
|
<a name="index-PDP_002d11-line-separator"></a>
|
|
<p>Multiple statements on the same line can be separated by the ‘<samp>;</samp>’ character.
|
|
</p>
|
|
<hr>
|
|
<a name="PDP_002d11_002dMnemonics"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PDP_002d11_002dSynthetic" accesskey="n" rel="next">PDP-11-Synthetic</a>, Previous: <a href="#PDP_002d11_002dSyntax" accesskey="p" rel="previous">PDP-11-Syntax</a>, Up: <a href="#PDP_002d11_002dDependent" accesskey="u" rel="up">PDP-11-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Instruction-Naming-1"></a>
|
|
<h4 class="subsection">9.34.4 Instruction Naming</h4>
|
|
|
|
<a name="index-PDP_002d11-instruction-naming"></a>
|
|
|
|
<p>Some instructions have alternative names.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>BCC</code></dt>
|
|
<dd><p><code>BHIS</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>BCS</code></dt>
|
|
<dd><p><code>BLO</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>L2DR</code></dt>
|
|
<dd><p><code>L2D</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>L3DR</code></dt>
|
|
<dd><p><code>L3D</code>
|
|
</p>
|
|
</dd>
|
|
<dt><code>SYS</code></dt>
|
|
<dd><p><code>TRAP</code>
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="PDP_002d11_002dSynthetic"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#PDP_002d11_002dMnemonics" accesskey="p" rel="previous">PDP-11-Mnemonics</a>, Up: <a href="#PDP_002d11_002dDependent" accesskey="u" rel="up">PDP-11-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Synthetic-Instructions"></a>
|
|
<h4 class="subsection">9.34.5 Synthetic Instructions</h4>
|
|
|
|
<p>The <code>JBR</code> and <code>J</code><var>CC</var> synthetic instructions are not
|
|
supported yet.
|
|
</p>
|
|
<hr>
|
|
<a name="PJ_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PPC_002dDependent" accesskey="n" rel="next">PPC-Dependent</a>, Previous: <a href="#PDP_002d11_002dDependent" accesskey="p" rel="previous">PDP-11-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="picoJava-Dependent-Features"></a>
|
|
<h3 class="section">9.35 picoJava Dependent Features</h3>
|
|
|
|
<a name="index-PJ-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#PJ-Options" accesskey="1">PJ Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PJ-Syntax" accesskey="2">PJ Syntax</a>:</td><td> </td><td align="left" valign="top">PJ Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="PJ-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PJ-Syntax" accesskey="n" rel="next">PJ Syntax</a>, Up: <a href="#PJ_002dDependent" accesskey="u" rel="up">PJ-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-18"></a>
|
|
<h4 class="subsection">9.35.1 Options</h4>
|
|
|
|
<a name="index-PJ-options"></a>
|
|
<a name="index-options_002c-PJ"></a>
|
|
<p><code>as</code> has two additional command-line options for the picoJava
|
|
architecture.
|
|
</p><dl compact="compact">
|
|
<dt><code>-ml</code></dt>
|
|
<dd><p>This option selects little endian data output.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mb</code></dt>
|
|
<dd><p>This option selects big endian data output.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="PJ-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#PJ-Options" accesskey="p" rel="previous">PJ Options</a>, Up: <a href="#PJ_002dDependent" accesskey="u" rel="up">PJ-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="PJ-Syntax-1"></a>
|
|
<h4 class="subsection">9.35.2 PJ Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#PJ_002dChars" accesskey="1">PJ-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="PJ_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#PJ-Syntax" accesskey="u" rel="up">PJ Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-27"></a>
|
|
<h4 class="subsubsection">9.35.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-PJ"></a>
|
|
<a name="index-PJ-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>!</samp>’ or ‘<samp>/</samp>’ on a line indicates the start
|
|
of a comment that extends to the end of the current line.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line then the whole
|
|
line is treated as a comment, but in this case the line could also be
|
|
a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-PJ"></a>
|
|
<a name="index-statement-separator_002c-PJ"></a>
|
|
<a name="index-PJ-line-separator"></a>
|
|
<p>The ‘<samp>;</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
<hr>
|
|
<a name="PPC_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PRU_002dDependent" accesskey="n" rel="next">PRU-Dependent</a>, Previous: <a href="#PJ_002dDependent" accesskey="p" rel="previous">PJ-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="PowerPC-Dependent-Features"></a>
|
|
<h3 class="section">9.36 PowerPC Dependent Features</h3>
|
|
|
|
<a name="index-PowerPC-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#PowerPC_002dOpts" accesskey="1">PowerPC-Opts</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PowerPC_002dPseudo" accesskey="2">PowerPC-Pseudo</a>:</td><td> </td><td align="left" valign="top">PowerPC Assembler Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PowerPC_002dSyntax" accesskey="3">PowerPC-Syntax</a>:</td><td> </td><td align="left" valign="top">PowerPC Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="PowerPC_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PowerPC_002dPseudo" accesskey="n" rel="next">PowerPC-Pseudo</a>, Up: <a href="#PPC_002dDependent" accesskey="u" rel="up">PPC-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-19"></a>
|
|
<h4 class="subsection">9.36.1 Options</h4>
|
|
|
|
<a name="index-options-for-PowerPC"></a>
|
|
<a name="index-PowerPC-options"></a>
|
|
<a name="index-architectures_002c-PowerPC"></a>
|
|
<a name="index-PowerPC-architectures"></a>
|
|
<p>The PowerPC chip family includes several successive levels, using the same
|
|
core instruction set, but including a few additional instructions at
|
|
each level. There are exceptions to this however. For details on what
|
|
instructions each variant supports, please see the chip’s architecture
|
|
reference manual.
|
|
</p>
|
|
<p>The following table lists all available PowerPC options.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-a32</code></dt>
|
|
<dd><p>Generate ELF32 or XCOFF32.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-a64</code></dt>
|
|
<dd><p>Generate ELF64 or XCOFF64.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-K PIC</code></dt>
|
|
<dd><p>Set EF_PPC_RELOCATABLE_LIB in ELF flags.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mpwrx | -mpwr2</code></dt>
|
|
<dd><p>Generate code for POWER/2 (RIOS2).
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mpwr</code></dt>
|
|
<dd><p>Generate code for POWER (RIOS1)
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m601</code></dt>
|
|
<dd><p>Generate code for PowerPC 601.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mppc, -mppc32, -m603, -m604</code></dt>
|
|
<dd><p>Generate code for PowerPC 603/604.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m403, -m405</code></dt>
|
|
<dd><p>Generate code for PowerPC 403/405.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m440</code></dt>
|
|
<dd><p>Generate code for PowerPC 440. BookE and some 405 instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m464</code></dt>
|
|
<dd><p>Generate code for PowerPC 464.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m476</code></dt>
|
|
<dd><p>Generate code for PowerPC 476.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m7400, -m7410, -m7450, -m7455</code></dt>
|
|
<dd><p>Generate code for PowerPC 7400/7410/7450/7455.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m750cl, -mgekko, -mbroadway</code></dt>
|
|
<dd><p>Generate code for PowerPC 750CL/Gekko/Broadway.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-m821, -m850, -m860</code></dt>
|
|
<dd><p>Generate code for PowerPC 821/850/860.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mppc64, -m620</code></dt>
|
|
<dd><p>Generate code for PowerPC 620/625/630.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-me500, -me500x2</code></dt>
|
|
<dd><p>Generate code for Motorola e500 core complex.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-me500mc</code></dt>
|
|
<dd><p>Generate code for Freescale e500mc core complex.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-me500mc64</code></dt>
|
|
<dd><p>Generate code for Freescale e500mc64 core complex.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-me5500</code></dt>
|
|
<dd><p>Generate code for Freescale e5500 core complex.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-me6500</code></dt>
|
|
<dd><p>Generate code for Freescale e6500 core complex.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mspe</code></dt>
|
|
<dd><p>Generate code for Motorola SPE instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mspe2</code></dt>
|
|
<dd><p>Generate code for Freescale SPE2 instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mtitan</code></dt>
|
|
<dd><p>Generate code for AppliedMicro Titan core complex.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mppc64bridge</code></dt>
|
|
<dd><p>Generate code for PowerPC 64, including bridge insns.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mbooke</code></dt>
|
|
<dd><p>Generate code for 32-bit BookE.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-ma2</code></dt>
|
|
<dd><p>Generate code for A2 architecture.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-me300</code></dt>
|
|
<dd><p>Generate code for PowerPC e300 family.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-maltivec</code></dt>
|
|
<dd><p>Generate code for processors with AltiVec instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mvle</code></dt>
|
|
<dd><p>Generate code for Freescale PowerPC VLE instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mvsx</code></dt>
|
|
<dd><p>Generate code for processors with Vector-Scalar (VSX) instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mhtm</code></dt>
|
|
<dd><p>Generate code for processors with Hardware Transactional Memory instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mpower4, -mpwr4</code></dt>
|
|
<dd><p>Generate code for Power4 architecture.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mpower5, -mpwr5, -mpwr5x</code></dt>
|
|
<dd><p>Generate code for Power5 architecture.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mpower6, -mpwr6</code></dt>
|
|
<dd><p>Generate code for Power6 architecture.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mpower7, -mpwr7</code></dt>
|
|
<dd><p>Generate code for Power7 architecture.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mpower8, -mpwr8</code></dt>
|
|
<dd><p>Generate code for Power8 architecture.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mpower9, -mpwr9</code></dt>
|
|
<dd><p>Generate code for Power9 architecture.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mpower10, -mpwr10</code></dt>
|
|
<dd><p>Generate code for Power10 architecture.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mcell</code></dt>
|
|
<dt><code>-mcell</code></dt>
|
|
<dd><p>Generate code for Cell Broadband Engine architecture.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mcom</code></dt>
|
|
<dd><p>Generate code Power/PowerPC common instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-many</code></dt>
|
|
<dd><p>Generate code for any architecture (PWR/PWRX/PPC).
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mregnames</code></dt>
|
|
<dd><p>Allow symbolic names for registers.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mno-regnames</code></dt>
|
|
<dd><p>Do not allow symbolic names for registers.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mrelocatable</code></dt>
|
|
<dd><p>Support for GCC’s -mrelocatable option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mrelocatable-lib</code></dt>
|
|
<dd><p>Support for GCC’s -mrelocatable-lib option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-memb</code></dt>
|
|
<dd><p>Set PPC_EMB bit in ELF flags.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mlittle, -mlittle-endian, -le</code></dt>
|
|
<dd><p>Generate code for a little endian machine.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mbig, -mbig-endian, -be</code></dt>
|
|
<dd><p>Generate code for a big endian machine.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-msolaris</code></dt>
|
|
<dd><p>Generate code for Solaris.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-mno-solaris</code></dt>
|
|
<dd><p>Do not generate code for Solaris.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-nops=<var>count</var></code></dt>
|
|
<dd><p>If an alignment directive inserts more than <var>count</var> nops, put a
|
|
branch at the beginning to skip execution of the nops.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<hr>
|
|
<a name="PowerPC_002dPseudo"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PowerPC_002dSyntax" accesskey="n" rel="next">PowerPC-Syntax</a>, Previous: <a href="#PowerPC_002dOpts" accesskey="p" rel="previous">PowerPC-Opts</a>, Up: <a href="#PPC_002dDependent" accesskey="u" rel="up">PPC-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="PowerPC-Assembler-Directives"></a>
|
|
<h4 class="subsection">9.36.2 PowerPC Assembler Directives</h4>
|
|
|
|
<a name="index-directives-for-PowerPC"></a>
|
|
<a name="index-PowerPC-directives"></a>
|
|
<p>A number of assembler directives are available for PowerPC. The
|
|
following table is far from complete.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>.machine "string"</code></dt>
|
|
<dd><p>This directive allows you to change the machine for which code is
|
|
generated. <code>"string"</code> may be any of the -m cpu selection options
|
|
(without the -m) enclosed in double quotes, <code>"push"</code>, or
|
|
<code>"pop"</code>. <code>.machine "push"</code> saves the currently selected
|
|
cpu, which may be restored with <code>.machine "pop"</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="PowerPC_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#PowerPC_002dPseudo" accesskey="p" rel="previous">PowerPC-Pseudo</a>, Up: <a href="#PPC_002dDependent" accesskey="u" rel="up">PPC-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="PowerPC-Syntax"></a>
|
|
<h4 class="subsection">9.36.3 PowerPC Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#PowerPC_002dChars" accesskey="1">PowerPC-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="PowerPC_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#PowerPC_002dSyntax" accesskey="u" rel="up">PowerPC-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-28"></a>
|
|
<h4 class="subsubsection">9.36.3.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-PowerPC"></a>
|
|
<a name="index-PowerPC-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>#</samp>’ on a line indicates the start of a comment
|
|
that extends to the end of the current line.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line then the whole
|
|
line is treated as a comment, but in this case the line could also be
|
|
a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<p>If the assembler has been configured for the ppc-*-solaris* target
|
|
then the ‘<samp>!</samp>’ character also acts as a line comment character.
|
|
This can be disabled via the <samp>-mno-solaris</samp> command-line
|
|
option.
|
|
</p>
|
|
<a name="index-line-separator_002c-PowerPC"></a>
|
|
<a name="index-statement-separator_002c-PowerPC"></a>
|
|
<a name="index-PowerPC-line-separator"></a>
|
|
<p>The ‘<samp>;</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
<hr>
|
|
<a name="PRU_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RISC_002dV_002dDependent" accesskey="n" rel="next">RISC-V-Dependent</a>, Previous: <a href="#PPC_002dDependent" accesskey="p" rel="previous">PPC-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="PRU-Dependent-Features"></a>
|
|
<h3 class="section">9.37 PRU Dependent Features</h3>
|
|
|
|
<a name="index-PRU-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#PRU-Options" accesskey="1">PRU Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PRU-Syntax" accesskey="2">PRU Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PRU-Relocations" accesskey="3">PRU Relocations</a>:</td><td> </td><td align="left" valign="top">Relocations
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PRU-Directives" accesskey="4">PRU Directives</a>:</td><td> </td><td align="left" valign="top">PRU Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#PRU-Opcodes" accesskey="5">PRU Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="PRU-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PRU-Syntax" accesskey="n" rel="next">PRU Syntax</a>, Up: <a href="#PRU_002dDependent" accesskey="u" rel="up">PRU-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-20"></a>
|
|
<h4 class="subsection">9.37.1 Options</h4>
|
|
<a name="index-PRU-options"></a>
|
|
<a name="index-options-for-PRU"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-mlink_002drelax-command_002dline-option_002c-PRU"></a>
|
|
</dd>
|
|
<dt><code>-mlink-relax</code></dt>
|
|
<dd><p>Assume that LD would optimize LDI32 instructions by checking the upper
|
|
16 bits of the <var>expression</var>. If they are all zeros, then LD would
|
|
shorten the LDI32 instruction to a single LDI. In such case <code>as</code>
|
|
will output DIFF relocations for diff expressions.
|
|
</p>
|
|
<a name="index-mno_002dlink_002drelax-command_002dline-option_002c-PRU"></a>
|
|
</dd>
|
|
<dt><code>-mno-link-relax</code></dt>
|
|
<dd><p>Assume that LD would not optimize LDI32 instructions. As a consequence,
|
|
DIFF relocations will not be emitted.
|
|
</p>
|
|
<a name="index-mno_002dwarn_002dregname_002dlabel-command_002dline-option_002c-PRU"></a>
|
|
</dd>
|
|
<dt><code>-mno-warn-regname-label</code></dt>
|
|
<dd><p>Do not warn if a label name matches a register name. Usually assembler
|
|
programmers will want this warning to be emitted. C compilers may want
|
|
to turn this off.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="PRU-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PRU-Relocations" accesskey="n" rel="next">PRU Relocations</a>, Previous: <a href="#PRU-Options" accesskey="p" rel="previous">PRU Options</a>, Up: <a href="#PRU_002dDependent" accesskey="u" rel="up">PRU-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-26"></a>
|
|
<h4 class="subsection">9.37.2 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#PRU-Chars" accesskey="1">PRU Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
|
|
<hr>
|
|
<a name="PRU-Chars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#PRU-Syntax" accesskey="u" rel="up">PRU Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-29"></a>
|
|
<h4 class="subsubsection">9.37.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-PRU"></a>
|
|
<a name="index-PRU-line-comment-character"></a>
|
|
<p>‘<samp>#</samp>’ and ‘<samp>;</samp>’ are the line comment characters.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="PRU-Relocations"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PRU-Directives" accesskey="n" rel="next">PRU Directives</a>, Previous: <a href="#PRU-Syntax" accesskey="p" rel="previous">PRU Syntax</a>, Up: <a href="#PRU_002dDependent" accesskey="u" rel="up">PRU-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="PRU-Machine-Relocations"></a>
|
|
<h4 class="subsection">9.37.3 PRU Machine Relocations</h4>
|
|
|
|
<a name="index-machine-relocations_002c-PRU"></a>
|
|
<a name="index-PRU-machine-relocations"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-pmem-directive_002c-PRU"></a>
|
|
</dd>
|
|
<dt><code>%pmem(<var>expression</var>)</code></dt>
|
|
<dd><p>Convert <var>expression</var> from byte-address to a
|
|
word-address. In other words, shift right by two.
|
|
</p>
|
|
</dd>
|
|
<dt><code>%label(<var>expression</var>)</code></dt>
|
|
<dd><p>Mark the given operand as a label. This is useful if you need to jump to
|
|
a label that matches a register name.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">r1:
|
|
jmp r1 ; Will jump to register R1
|
|
jmp %label(r1) ; Will jump to label r1
|
|
</pre></div>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
<hr>
|
|
<a name="PRU-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#PRU-Opcodes" accesskey="n" rel="next">PRU Opcodes</a>, Previous: <a href="#PRU-Relocations" accesskey="p" rel="previous">PRU Relocations</a>, Up: <a href="#PRU_002dDependent" accesskey="u" rel="up">PRU-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="PRU-Machine-Directives"></a>
|
|
<h4 class="subsection">9.37.4 PRU Machine Directives</h4>
|
|
|
|
<a name="index-machine-directives_002c-PRU"></a>
|
|
<a name="index-PRU-machine-directives"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-align-directive_002c-PRU"></a>
|
|
</dd>
|
|
<dt><code>.align <var>expression</var> [, <var>expression</var>]</code></dt>
|
|
<dd><p>This is the generic <code>.align</code> directive, however
|
|
this aligns to a power of two.
|
|
</p>
|
|
<a name="index-word-directive_002c-PRU"></a>
|
|
</dd>
|
|
<dt><code>.word <var>expression</var></code></dt>
|
|
<dd><p>Create an aligned constant 4 bytes in size.
|
|
</p>
|
|
<a name="index-dword-directive_002c-PRU"></a>
|
|
</dd>
|
|
<dt><code>.dword <var>expression</var></code></dt>
|
|
<dd><p>Create an aligned constant 8 bytes in size.
|
|
</p>
|
|
<a name="index-2byte-directive_002c-PRU"></a>
|
|
</dd>
|
|
<dt><code>.2byte <var>expression</var></code></dt>
|
|
<dd><p>Create an unaligned constant 2 bytes in size.
|
|
</p>
|
|
<a name="index-4byte-directive_002c-PRU"></a>
|
|
</dd>
|
|
<dt><code>.4byte <var>expression</var></code></dt>
|
|
<dd><p>Create an unaligned constant 4 bytes in size.
|
|
</p>
|
|
<a name="index-8byte-directive_002c-PRU"></a>
|
|
</dd>
|
|
<dt><code>.8byte <var>expression</var></code></dt>
|
|
<dd><p>Create an unaligned constant 8 bytes in size.
|
|
</p>
|
|
<a name="index-16byte-directive_002c-PRU"></a>
|
|
</dd>
|
|
<dt><code>.16byte <var>expression</var></code></dt>
|
|
<dd><p>Create an unaligned constant 16 bytes in size.
|
|
</p>
|
|
<a name="index-set-no_005fwarn_005fregname_005flabel-directive_002c-PRU"></a>
|
|
</dd>
|
|
<dt><code>.set no_warn_regname_label</code></dt>
|
|
<dd><p>Do not output warnings when a label name matches a register name. Equivalent
|
|
to passing the <code>-mno-warn-regname-label</code> command-line option.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="PRU-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#PRU-Directives" accesskey="p" rel="previous">PRU Directives</a>, Up: <a href="#PRU_002dDependent" accesskey="u" rel="up">PRU-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-17"></a>
|
|
<h4 class="subsection">9.37.5 Opcodes</h4>
|
|
|
|
<a name="index-PRU-opcodes"></a>
|
|
<a name="index-opcodes-for-PRU"></a>
|
|
<p><code>as</code> implements all the standard PRU core V3 opcodes in the
|
|
original pasm assembler. Older cores are not supported by <code>as</code>.
|
|
</p>
|
|
<p>GAS also implements the LDI32 pseudo instruction for loading a 32-bit
|
|
immediate value into a register.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> ldi32 sp, __stack_top
|
|
ldi32 r14, 0x12345678
|
|
</pre></div>
|
|
|
|
|
|
<hr>
|
|
<a name="RISC_002dV_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RL78_002dDependent" accesskey="n" rel="next">RL78-Dependent</a>, Previous: <a href="#PRU_002dDependent" accesskey="p" rel="previous">PRU-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="RISC_002dV-Dependent-Features"></a>
|
|
<h3 class="section">9.38 RISC-V Dependent Features</h3>
|
|
|
|
<a name="index-RISC_002dV-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#RISC_002dV_002dOptions" accesskey="1">RISC-V-Options</a>:</td><td> </td><td align="left" valign="top">RISC-V Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RISC_002dV_002dDirectives" accesskey="2">RISC-V-Directives</a>:</td><td> </td><td align="left" valign="top">RISC-V Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RISC_002dV_002dModifiers" accesskey="3">RISC-V-Modifiers</a>:</td><td> </td><td align="left" valign="top">RISC-V Assembler Modifiers
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RISC_002dV_002dFormats" accesskey="4">RISC-V-Formats</a>:</td><td> </td><td align="left" valign="top">RISC-V Instruction Formats
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RISC_002dV_002dATTRIBUTE" accesskey="5">RISC-V-ATTRIBUTE</a>:</td><td> </td><td align="left" valign="top">RISC-V Object Attribute
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="RISC_002dV_002dOptions"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RISC_002dV_002dDirectives" accesskey="n" rel="next">RISC-V-Directives</a>, Up: <a href="#RISC_002dV_002dDependent" accesskey="u" rel="up">RISC-V-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="RISC_002dV-Options"></a>
|
|
<h4 class="subsection">9.38.1 RISC-V Options</h4>
|
|
|
|
<p>The following table lists all available RISC-V specific options.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dfpic-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-fpic</code></dt>
|
|
<dt><code>-fPIC</code></dt>
|
|
<dd><p>Generate position-independent code
|
|
</p>
|
|
<a name="index-_002dfno_002dpic-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-fno-pic</code></dt>
|
|
<dd><p>Don’t generate position-independent code (default)
|
|
</p>
|
|
<a name="index-_002dmarch_003dISA-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-march=ISA</code></dt>
|
|
<dd><p>Select the base isa, as specified by ISA. For example -march=rv32ima.
|
|
If this option and the architecture attributes aren’t set, then assembler
|
|
will check the default configure setting –with-arch=ISA.
|
|
</p>
|
|
<a name="index-_002dmisa_002dspec_003dISAspec-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-misa-spec=ISAspec</code></dt>
|
|
<dd><p>Select the default isa spec version. If the version of ISA isn’t set
|
|
by -march, then assembler helps to set the version according to
|
|
the default chosen spec. If this option isn’t set, then assembler will
|
|
check the default configure setting –with-isa-spec=ISAspec.
|
|
</p>
|
|
<a name="index-_002dmpriv_002dspec_003dPRIVspec-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-mpriv-spec=PRIVspec</code></dt>
|
|
<dd><p>Select the privileged spec version. We can decide whether the CSR is valid or
|
|
not according to the chosen spec. If this option and the privilege attributes
|
|
aren’t set, then assembler will check the default configure setting
|
|
–with-priv-spec=PRIVspec.
|
|
</p>
|
|
<a name="index-_002dmabi_003dABI-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-mabi=ABI</code></dt>
|
|
<dd><p>Selects the ABI, which is either "ilp32" or "lp64", optionally followed
|
|
by "f", "d", or "q" to indicate single-precision, double-precision, or
|
|
quad-precision floating-point calling convention, or none to indicate
|
|
the soft-float calling convention. Also, "ilp32" can optionally be followed
|
|
by "e" to indicate the RVE ABI, which is always soft-float.
|
|
</p>
|
|
<a name="index-_002dmrelax-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-mrelax</code></dt>
|
|
<dd><p>Take advantage of linker relaxations to reduce the number of instructions
|
|
required to materialize symbol addresses. (default)
|
|
</p>
|
|
<a name="index-_002dmno_002drelax-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-mno-relax</code></dt>
|
|
<dd><p>Don’t do linker relaxations.
|
|
</p>
|
|
<a name="index-_002dmarch_002dattr-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-march-attr</code></dt>
|
|
<dd><p>Generate the default contents for the riscv elf attribute section if the
|
|
.attribute directives are not set. This section is used to record the
|
|
information that a linker or runtime loader needs to check compatibility.
|
|
This information includes ISA string, stack alignment requirement, unaligned
|
|
memory accesses, and the major, minor and revision version of privileged
|
|
specification.
|
|
</p>
|
|
<a name="index-_002dmno_002darch_002dattr-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-mno-arch-attr</code></dt>
|
|
<dd><p>Don’t generate the default riscv elf attribute section if the .attribute
|
|
directives are not set.
|
|
</p>
|
|
<a name="index-_002dmcsr_002dcheck-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-mcsr-check</code></dt>
|
|
<dd><p>Enable the CSR checking for the ISA-dependent CRS and the read-only CSR.
|
|
The ISA-dependent CSR are only valid when the specific ISA is set. The
|
|
read-only CSR can not be written by the CSR instructions.
|
|
</p>
|
|
<a name="index-_002dmno_002dcsr_002dcheck-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-mno-csr-check</code></dt>
|
|
<dd><p>Don’t do CSR checking.
|
|
</p>
|
|
<a name="index-_002dmlittle_002dendian-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-mlittle-endian</code></dt>
|
|
<dd><p>Generate code for a little endian machine.
|
|
</p>
|
|
<a name="index-_002dmbig_002dendian-option_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>-mbig-endian</code></dt>
|
|
<dd><p>Generate code for a big endian machine.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="RISC_002dV_002dDirectives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RISC_002dV_002dModifiers" accesskey="n" rel="next">RISC-V-Modifiers</a>, Previous: <a href="#RISC_002dV_002dOptions" accesskey="p" rel="previous">RISC-V-Options</a>, Up: <a href="#RISC_002dV_002dDependent" accesskey="u" rel="up">RISC-V-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="RISC_002dV-Directives"></a>
|
|
<h4 class="subsection">9.38.2 RISC-V Directives</h4>
|
|
<a name="index-machine-directives_002c-RISC_002dV"></a>
|
|
<a name="index-RISC_002dV-machine-directives"></a>
|
|
|
|
<p>The following table lists all available RISC-V specific directives.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-align-directive-1"></a>
|
|
</dd>
|
|
<dt><code>.align <var>size-log-2</var></code></dt>
|
|
<dd><p>Align to the given boundary, with the size given as log2 the number of bytes to
|
|
align to.
|
|
</p>
|
|
<a name="index-Data-directives"></a>
|
|
</dd>
|
|
<dt><code>.half <var>value</var></code></dt>
|
|
<dt><code>.word <var>value</var></code></dt>
|
|
<dt><code>.dword <var>value</var></code></dt>
|
|
<dd><p>Emits a half-word, word, or double-word value at the current position.
|
|
</p>
|
|
<a name="index-DTP_002drelative-data-directives"></a>
|
|
</dd>
|
|
<dt><code>.dtprelword <var>value</var></code></dt>
|
|
<dt><code>.dtpreldword <var>value</var></code></dt>
|
|
<dd><p>Emits a DTP-relative word (or double-word) at the current position. This is
|
|
meant to be used by the compiler in shared libraries for DWARF debug info for
|
|
thread local variables.
|
|
</p>
|
|
<a name="index-BSS-directive"></a>
|
|
</dd>
|
|
<dt><code>.bss</code></dt>
|
|
<dd><p>Sets the current section to the BSS section.
|
|
</p>
|
|
<a name="index-LEB128-directives"></a>
|
|
</dd>
|
|
<dt><code>.uleb128 <var>value</var></code></dt>
|
|
<dt><code>.sleb128 <var>value</var></code></dt>
|
|
<dd><p>Emits a signed or unsigned LEB128 value at the current position. This only
|
|
accepts constant expressions, because symbol addresses can change with
|
|
relaxation, and we don’t support relocations to modify LEB128 values at link
|
|
time.
|
|
</p>
|
|
<a name="index-Option-directive"></a>
|
|
<a name="index-option-directive"></a>
|
|
</dd>
|
|
<dt><code>.option <var>argument</var></code></dt>
|
|
<dd><p>Modifies RISC-V specific assembler options inline with the assembly code.
|
|
This is used when particular instruction sequences must be assembled with a
|
|
specific set of options. For example, since we relax addressing sequences to
|
|
shorter GP-relative sequences when possible the initial load of GP must not be
|
|
relaxed and should be emitted as something like
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .option push
|
|
.option norelax
|
|
la gp, __global_pointer$
|
|
.option pop
|
|
</pre></div>
|
|
|
|
<p>in order to produce after linker relaxation the expected
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> auipc gp, %pcrel_hi(__global_pointer$)
|
|
addi gp, gp, %pcrel_lo(__global_pointer$)
|
|
</pre></div>
|
|
|
|
<p>instead of just
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> addi gp, gp, 0
|
|
</pre></div>
|
|
|
|
<p>It’s not expected that options are changed in this manner during regular use,
|
|
but there are a handful of esoteric cases like the one above where users need
|
|
to disable particular features of the assembler for particular code sequences.
|
|
The complete list of option arguments is shown below:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>push</code></dt>
|
|
<dt><code>pop</code></dt>
|
|
<dd><p>Pushes or pops the current option stack. These should be used whenever
|
|
changing an option in line with assembly code in order to ensure the user’s
|
|
command-line options are respected for the bulk of the file being assembled.
|
|
</p>
|
|
</dd>
|
|
<dt><code>rvc</code></dt>
|
|
<dt><code>norvc</code></dt>
|
|
<dd><p>Enables or disables the generation of compressed instructions. Instructions
|
|
are opportunistically compressed by the RISC-V assembler when possible, but
|
|
sometimes this behavior is not desirable, especially when handling alignments.
|
|
</p>
|
|
</dd>
|
|
<dt><code>pic</code></dt>
|
|
<dt><code>nopic</code></dt>
|
|
<dd><p>Enables or disables position-independent code generation. Unless you really
|
|
know what you’re doing, this should only be at the top of a file.
|
|
</p>
|
|
</dd>
|
|
<dt><code>relax</code></dt>
|
|
<dt><code>norelax</code></dt>
|
|
<dd><p>Enables or disables relaxation. The RISC-V assembler and linker
|
|
opportunistically relax some code sequences, but sometimes this behavior is not
|
|
desirable.
|
|
</p>
|
|
</dd>
|
|
<dt><code>csr-check</code></dt>
|
|
<dt><code>no-csr-check</code></dt>
|
|
<dd><p>Enables or disables the CSR checking.
|
|
</p>
|
|
</dd>
|
|
<dt><code>arch, <var>+extension[version]</var> [,...,<var>+extension_n[version_n]</var>]</code></dt>
|
|
<dt><code>arch, <var>-extension</var> [,...,<var>-extension_n</var>]</code></dt>
|
|
<dt><code>arch, <var>=ISA</var></code></dt>
|
|
<dd><p>Enables or disables the extensions for specific code region. For example,
|
|
‘<samp>.option arch, +m2p0</samp>’ means add m extension with version 2.0, and
|
|
‘<samp>.option arch, -f, -d</samp>’ means remove extensions, f and d, from the
|
|
architecture string. Note that, ‘<samp>.option arch, +c, -c</samp>’ have the same
|
|
behavior as ‘<samp>.option rvc, norvc</samp>’. However, they are also undesirable
|
|
sometimes. Besides, ‘<samp>.option arch, -i</samp>’ is illegal, since we cannot
|
|
remove the base i extension anytime. If you want to reset the whole ISA
|
|
string, you can also use ‘<samp>.option arch, =rv32imac</samp>’ to overwrite the
|
|
previous settings.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="index-INSN-directives"></a>
|
|
</dd>
|
|
<dt><code>.insn <var>type</var>, <var>operand</var> [,...,<var>operand_n</var>]</code></dt>
|
|
<dt><code>.insn <var>insn_length</var>, <var>value</var></code></dt>
|
|
<dt><code>.insn <var>value</var></code></dt>
|
|
<dd><p>This directive permits the numeric representation of an instructions
|
|
and makes the assembler insert the operands according to one of the
|
|
instruction formats for ‘<samp>.insn</samp>’ (<a href="#RISC_002dV_002dFormats">RISC-V-Formats</a>).
|
|
For example, the instruction ‘<samp>add a0, a1, a2</samp>’ could be written as
|
|
‘<samp>.insn r 0x33, 0, 0, a0, a1, a2</samp>’. But in fact, the instruction
|
|
formats are difficult to use for some users, so most of them are using
|
|
‘<samp>.word</samp>’ to encode the instruction directly, rather than using
|
|
‘<samp>.insn</samp>’. It is fine for now, but will be wrong when the mapping
|
|
symbols are supported, since ‘<samp>.word</samp>’ will not be shown as an
|
|
instruction, it should be shown as data. Therefore, we also support
|
|
two more formats of the ‘<samp>.insn</samp>’, the instruction ‘<samp>add a0, a1, a2</samp>’
|
|
could also be written as ‘<samp>.insn 0x4, 0xc58533</samp>’ or ‘<samp>.insn 0xc58533</samp>’.
|
|
When the <var>insn_length</var> is set, then assembler will check if the
|
|
<var>value</var> is a valid <var>insn_length</var> bytes instruction.
|
|
</p>
|
|
<a name="index-_002eattribute-directive_002c-RISC_002dV"></a>
|
|
</dd>
|
|
<dt><code>.attribute <var>tag</var>, <var>value</var></code></dt>
|
|
<dd><p>Set the object attribute <var>tag</var> to <var>value</var>.
|
|
</p>
|
|
<p>The <var>tag</var> is either an attribute number, or one of the following:
|
|
<code>Tag_RISCV_arch</code>, <code>Tag_RISCV_stack_align</code>,
|
|
<code>Tag_RISCV_unaligned_access</code>, <code>Tag_RISCV_priv_spec</code>,
|
|
<code>Tag_RISCV_priv_spec_minor</code>, <code>Tag_RISCV_priv_spec_revision</code>.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="RISC_002dV_002dModifiers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RISC_002dV_002dFormats" accesskey="n" rel="next">RISC-V-Formats</a>, Previous: <a href="#RISC_002dV_002dDirectives" accesskey="p" rel="previous">RISC-V-Directives</a>, Up: <a href="#RISC_002dV_002dDependent" accesskey="u" rel="up">RISC-V-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="RISC_002dV-Assembler-Modifiers"></a>
|
|
<h4 class="subsection">9.38.3 RISC-V Assembler Modifiers</h4>
|
|
|
|
<p>The RISC-V assembler supports following modifiers for relocatable addresses
|
|
used in RISC-V instruction operands. However, we also support some pseudo
|
|
instructions that are easier to use than these modifiers.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>%lo(<var>symbol</var>)</code></dt>
|
|
<dd><p>The low 12 bits of absolute address for <var>symbol</var>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>%hi(<var>symbol</var>)</code></dt>
|
|
<dd><p>The high 20 bits of absolute address for <var>symbol</var>. This is usually
|
|
used with the %lo modifier to represent a 32-bit absolute address.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> lui a0, %hi(<var>symbol</var>) // R_RISCV_HI20
|
|
addi a0, a0, %lo(<var>symbol</var>) // R_RISCV_LO12_I
|
|
|
|
lui a0, %hi(<var>symbol</var>) // R_RISCV_HI20
|
|
load/store a0, %lo(<var>symbol</var>)(a0) // R_RISCV_LO12_I/S
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>%pcrel_lo(<var>label</var>)</code></dt>
|
|
<dd><p>The low 12 bits of relative address between pc and <var>symbol</var>.
|
|
The <var>symbol</var> is related to the high part instruction which is marked
|
|
by <var>label</var>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>%pcrel_hi(<var>symbol</var>)</code></dt>
|
|
<dd><p>The high 20 bits of relative address between pc and <var>symbol</var>.
|
|
This is usually used with the %pcrel_lo modifier to represent a +/-2GB
|
|
pc-relative range.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><var>label</var>:
|
|
auipc a0, %pcrel_hi(<var>symbol</var>) // R_RISCV_PCREL_HI20
|
|
addi a0, a0, %pcrel_lo(<var>label</var>) // R_RISCV_PCREL_LO12_I
|
|
|
|
<var>label</var>:
|
|
auipc a0, %pcrel_hi(<var>symbol</var>) // R_RISCV_PCREL_HI20
|
|
load/store a0, %pcrel_lo(<var>label</var>)(a0) // R_RISCV_PCREL_LO12_I/S
|
|
</pre></div>
|
|
|
|
<p>Or you can use the pseudo lla/lw/sw/... instruction to do this.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> lla a0, <var>symbol</var>
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>%got_pcrel_hi(<var>symbol</var>)</code></dt>
|
|
<dd><p>The high 20 bits of relative address between pc and the GOT entry of
|
|
<var>symbol</var>. This is usually used with the %pcrel_lo modifier to access
|
|
the GOT entry.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><var>label</var>:
|
|
auipc a0, %got_pcrel_hi(<var>symbol</var>) // R_RISCV_GOT_HI20
|
|
addi a0, a0, %pcrel_lo(<var>label</var>) // R_RISCV_PCREL_LO12_I
|
|
|
|
<var>label</var>:
|
|
auipc a0, %got_pcrel_hi(<var>symbol</var>) // R_RISCV_GOT_HI20
|
|
load/store a0, %pcrel_lo(<var>label</var>)(a0) // R_RISCV_PCREL_LO12_I/S
|
|
</pre></div>
|
|
|
|
<p>Also, the pseudo la instruction with PIC has similar behavior.
|
|
</p>
|
|
</dd>
|
|
<dt><code>%tprel_add(<var>symbol</var>)</code></dt>
|
|
<dd><p>This is used purely to associate the R_RISCV_TPREL_ADD relocation for
|
|
TLS relaxation. This one is only valid as the fourth operand to the normally
|
|
3 operand add instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>%tprel_lo(<var>symbol</var>)</code></dt>
|
|
<dd><p>The low 12 bits of relative address between tp and <var>symbol</var>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>%tprel_hi(<var>symbol</var>)</code></dt>
|
|
<dd><p>The high 20 bits of relative address between tp and <var>symbol</var>. This is
|
|
usually used with the %tprel_lo and %tprel_add modifiers to access the thread
|
|
local variable <var>symbol</var> in TLS Local Exec.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> lui a5, %tprel_hi(<var>symbol</var>) // R_RISCV_TPREL_HI20
|
|
add a5, a5, tp, %tprel_add(<var>symbol</var>) // R_RISCV_TPREL_ADD
|
|
load/store t0, %tprel_lo(<var>symbol</var>)(a5) // R_RISCV_TPREL_LO12_I/S
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>%tls_ie_pcrel_hi(<var>symbol</var>)</code></dt>
|
|
<dd><p>The high 20 bits of relative address between pc and GOT entry. It is
|
|
usually used with the %pcrel_lo modifier to access the thread local
|
|
variable <var>symbol</var> in TLS Initial Exec.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> la.tls.ie a5, <var>symbol</var>
|
|
add a5, a5, tp
|
|
load/store t0, 0(a5)
|
|
</pre></div>
|
|
|
|
<p>The pseudo la.tls.ie instruction can be expended to
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><var>label</var>:
|
|
auipc a5, %tls_ie_pcrel_hi(<var>symbol</var>) // R_RISCV_TLS_GOT_HI20
|
|
load a5, %pcrel_lo(<var>label</var>)(a5) // R_RISCV_PCREL_LO12_I
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>%tls_gd_pcrel_hi(<var>symbol</var>)</code></dt>
|
|
<dd><p>The high 20 bits of relative address between pc and GOT entry. It is
|
|
usually used with the %pcrel_lo modifier to access the thread local variable
|
|
<var>symbol</var> in TLS Global Dynamic.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> la.tls.gd a0, <var>symbol</var>
|
|
call __tls_get_addr@plt
|
|
mv a5, a0
|
|
load/store t0, 0(a5)
|
|
</pre></div>
|
|
|
|
<p>The pseudo la.tls.gd instruction can be expended to
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><var>label</var>:
|
|
auipc a0, %tls_gd_pcrel_hi(<var>symbol</var>) // R_RISCV_TLS_GD_HI20
|
|
addi a0, a0, %pcrel_lo(<var>label</var>) // R_RISCV_PCREL_LO12_I
|
|
</pre></div>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="RISC_002dV_002dFormats"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RISC_002dV_002dATTRIBUTE" accesskey="n" rel="next">RISC-V-ATTRIBUTE</a>, Previous: <a href="#RISC_002dV_002dModifiers" accesskey="p" rel="previous">RISC-V-Modifiers</a>, Up: <a href="#RISC_002dV_002dDependent" accesskey="u" rel="up">RISC-V-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="RISC_002dV-Instruction-Formats"></a>
|
|
<h4 class="subsection">9.38.4 RISC-V Instruction Formats</h4>
|
|
<a name="index-instruction-formats_002c-risc_002dv"></a>
|
|
<a name="index-RISC_002dV-instruction-formats"></a>
|
|
|
|
<p>The RISC-V Instruction Set Manual Volume I: User-Level ISA lists 15
|
|
instruction formats where some of the formats have multiple variants.
|
|
For the ‘<samp>.insn</samp>’ pseudo directive the assembler recognizes some
|
|
of the formats.
|
|
Typically, the most general variant of the instruction format is used
|
|
by the ‘<samp>.insn</samp>’ directive.
|
|
</p>
|
|
<p>The following table lists the abbreviations used in the table of
|
|
instruction formats:
|
|
</p>
|
|
<div class="display">
|
|
<table>
|
|
<tr><td width="15%"><pre class="display">opcode</pre></td><td width="40%"><pre class="display">Unsigned immediate or opcode name for 7-bits opcode.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">opcode2</pre></td><td width="40%"><pre class="display">Unsigned immediate or opcode name for 2-bits opcode.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">func7</pre></td><td width="40%"><pre class="display">Unsigned immediate for 7-bits function code.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">func6</pre></td><td width="40%"><pre class="display">Unsigned immediate for 6-bits function code.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">func4</pre></td><td width="40%"><pre class="display">Unsigned immediate for 4-bits function code.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">func3</pre></td><td width="40%"><pre class="display">Unsigned immediate for 3-bits function code.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">func2</pre></td><td width="40%"><pre class="display">Unsigned immediate for 2-bits function code.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">rd</pre></td><td width="40%"><pre class="display">Destination register number for operand x, can be GPR or FPR.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">rd’</pre></td><td width="40%"><pre class="display">Destination register number for operand x,
|
|
only accept s0-s1, a0-a5, fs0-fs1 and fa0-fa5.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">rs1</pre></td><td width="40%"><pre class="display">First source register number for operand x, can be GPR or FPR.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">rs1’</pre></td><td width="40%"><pre class="display">First source register number for operand x,
|
|
only accept s0-s1, a0-a5, fs0-fs1 and fa0-fa5.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">rs2</pre></td><td width="40%"><pre class="display">Second source register number for operand x, can be GPR or FPR.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">rs2’</pre></td><td width="40%"><pre class="display">Second source register number for operand x,
|
|
only accept s0-s1, a0-a5, fs0-fs1 and fa0-fa5.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">simm12</pre></td><td width="40%"><pre class="display">Sign-extended 12-bit immediate for operand x.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">simm20</pre></td><td width="40%"><pre class="display">Sign-extended 20-bit immediate for operand x.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">simm6</pre></td><td width="40%"><pre class="display">Sign-extended 6-bit immediate for operand x.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">uimm5</pre></td><td width="40%"><pre class="display">Unsigned 5-bit immediate for operand x.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">uimm6</pre></td><td width="40%"><pre class="display">Unsigned 6-bit immediate for operand x.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">uimm8</pre></td><td width="40%"><pre class="display">Unsigned 8-bit immediate for operand x.</pre></td></tr>
|
|
<tr><td width="15%"><pre class="display">symbol</pre></td><td width="40%"><pre class="display">Symbol or lable reference for operand x.</pre></td></tr>
|
|
</table>
|
|
</div>
|
|
|
|
<p>The following table lists all available opcode name:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>C0</code></dt>
|
|
<dt><code>C1</code></dt>
|
|
<dt><code>C2</code></dt>
|
|
<dd><p>Opcode space for compressed instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>LOAD</code></dt>
|
|
<dd><p>Opcode space for load instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>LOAD_FP</code></dt>
|
|
<dd><p>Opcode space for floating-point load instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>STORE</code></dt>
|
|
<dd><p>Opcode space for store instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>STORE_FP</code></dt>
|
|
<dd><p>Opcode space for floating-point store instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>AUIPC</code></dt>
|
|
<dd><p>Opcode space for auipc instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>LUI</code></dt>
|
|
<dd><p>Opcode space for lui instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>BRANCH</code></dt>
|
|
<dd><p>Opcode space for branch instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>JAL</code></dt>
|
|
<dd><p>Opcode space for jal instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>JALR</code></dt>
|
|
<dd><p>Opcode space for jalr instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>OP</code></dt>
|
|
<dd><p>Opcode space for ALU instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>OP_32</code></dt>
|
|
<dd><p>Opcode space for 32-bits ALU instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>OP_IMM</code></dt>
|
|
<dd><p>Opcode space for ALU with immediate instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>OP_IMM_32</code></dt>
|
|
<dd><p>Opcode space for 32-bits ALU with immediate instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>OP_FP</code></dt>
|
|
<dd><p>Opcode space for floating-point operation instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>MADD</code></dt>
|
|
<dd><p>Opcode space for madd instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>MSUB</code></dt>
|
|
<dd><p>Opcode space for msub instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>NMADD</code></dt>
|
|
<dd><p>Opcode space for nmadd instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>NMSUB</code></dt>
|
|
<dd><p>Opcode space for msub instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>AMO</code></dt>
|
|
<dd><p>Opcode space for atomic memory operation instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>MISC_MEM</code></dt>
|
|
<dd><p>Opcode space for misc instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>SYSTEM</code></dt>
|
|
<dd><p>Opcode space for system instructions.
|
|
</p>
|
|
</dd>
|
|
<dt><code>CUSTOM_0</code></dt>
|
|
<dt><code>CUSTOM_1</code></dt>
|
|
<dt><code>CUSTOM_2</code></dt>
|
|
<dt><code>CUSTOM_3</code></dt>
|
|
<dd><p>Opcode space for customize instructions.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>An instruction is two or four bytes in length and must be aligned
|
|
on a 2 byte boundary. The first two bits of the instruction specify the
|
|
length of the instruction, 00, 01 and 10 indicates a two byte instruction,
|
|
11 indicates a four byte instruction.
|
|
</p>
|
|
<p>The following table lists the RISC-V instruction formats that are available
|
|
with the ‘<samp>.insn</samp>’ pseudo directive:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>R type: .insn r opcode6, func3, func7, rd, rs1, rs2</code></dt>
|
|
<dd><pre class="verbatim">+-------+-----+-----+-------+----+---------+
|
|
| func7 | rs2 | rs1 | func3 | rd | opcode6 |
|
|
+-------+-----+-----+-------+----+---------+
|
|
31 25 20 15 12 7 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>R type with 4 register operands: .insn r opcode6, func3, func2, rd, rs1, rs2, rs3</code></dt>
|
|
<dt><code>R4 type: .insn r4 opcode6, func3, func2, rd, rs1, rs2, rs3</code></dt>
|
|
<dd><pre class="verbatim">+-----+-------+-----+-----+-------+----+---------+
|
|
| rs3 | func2 | rs2 | rs1 | func3 | rd | opcode6 |
|
|
+-----+-------+-----+-----+-------+----+---------+
|
|
31 27 25 20 15 12 7 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>I type: .insn i opcode6, func3, rd, rs1, simm12</code></dt>
|
|
<dt><code>I type: .insn i opcode6, func3, rd, simm12(rs1)</code></dt>
|
|
<dd><pre class="verbatim">+--------------+-----+-------+----+---------+
|
|
| simm12[11:0] | rs1 | func3 | rd | opcode6 |
|
|
+--------------+-----+-------+----+---------+
|
|
31 20 15 12 7 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>S type: .insn s opcode6, func3, rs2, simm12(rs1)</code></dt>
|
|
<dd><pre class="verbatim">+--------------+-----+-----+-------+-------------+---------+
|
|
| simm12[11:5] | rs2 | rs1 | func3 | simm12[4:0] | opcode6 |
|
|
+--------------+-----+-----+-------+-------------+---------+
|
|
31 25 20 15 12 7 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>B type: .insn s opcode6, func3, rs1, rs2, symbol</code></dt>
|
|
<dt><code>SB type: .insn sb opcode6, func3, rs1, rs2, symbol</code></dt>
|
|
<dd><pre class="verbatim">+-----------------+-----+-----+-------+----------------+---------+
|
|
| simm12[12|10:5] | rs2 | rs1 | func3 | simm12[4:1|11] | opcode6 |
|
|
+-----------------+-----+-----+-------+----------------+---------+
|
|
31 25 20 15 12 7 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>U type: .insn u opcode6, rd, simm20</code></dt>
|
|
<dd><pre class="verbatim">+--------------------------+----+---------+
|
|
| simm20[20|10:1|11|19:12] | rd | opcode6 |
|
|
+--------------------------+----+---------+
|
|
31 12 7 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>J type: .insn j opcode6, rd, symbol</code></dt>
|
|
<dt><code>UJ type: .insn uj opcode6, rd, symbol</code></dt>
|
|
<dd><pre class="verbatim">+------------+--------------+------------+---------------+----+---------+
|
|
| simm20[20] | simm20[10:1] | simm20[11] | simm20[19:12] | rd | opcode6 |
|
|
+------------+--------------+------------+---------------+----+---------+
|
|
31 30 21 20 12 7 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>CR type: .insn cr opcode2, func4, rd, rs2</code></dt>
|
|
<dd><pre class="verbatim">+-------+--------+-----+---------+
|
|
| func4 | rd/rs1 | rs2 | opcode2 |
|
|
+-------+--------+-----+---------+
|
|
15 12 7 2 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>CI type: .insn ci opcode2, func3, rd, simm6</code></dt>
|
|
<dd><pre class="verbatim">+-------+----------+--------+------------+---------+
|
|
| func3 | simm6[5] | rd/rs1 | simm6[4:0] | opcode2 |
|
|
+-------+----------+--------+------------+---------+
|
|
15 13 12 7 2 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>CIW type: .insn ciw opcode2, func3, rd', uimm8</code></dt>
|
|
<dd><pre class="verbatim">+-------+------------+-----+---------+
|
|
| func3 | uimm8[7:0] | rd' | opcode2 |
|
|
+-------+-------- ---+-----+---------+
|
|
15 13 5 2 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>CSS type: .insn css opcode2, func3, rd, uimm6</code></dt>
|
|
<dd><pre class="verbatim">+-------+------------+----+---------+
|
|
| func3 | uimm6[5:0] | rd | opcode2 |
|
|
+-------+------------+----+---------+
|
|
15 13 7 2 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>CL type: .insn cl opcode2, func3, rd', uimm5(rs1')</code></dt>
|
|
<dd><pre class="verbatim">+-------+------------+------+------------+------+---------+
|
|
| func3 | uimm5[4:2] | rs1' | uimm5[1:0] | rd' | opcode2 |
|
|
+-------+------------+------+------------+------+---------+
|
|
15 13 10 7 5 2 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>CS type: .insn cs opcode2, func3, rs2', uimm5(rs1')</code></dt>
|
|
<dd><pre class="verbatim">+-------+------------+------+------------+------+---------+
|
|
| func3 | uimm5[4:2] | rs1' | uimm5[1:0] | rs2' | opcode2 |
|
|
+-------+------------+------+------------+------+---------+
|
|
15 13 10 7 5 2 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>CA type: .insn ca opcode2, func6, func2, rd', rs2'</code></dt>
|
|
<dd><pre class="verbatim">+-- ----+----------+-------+------+---------+
|
|
| func6 | rd'/rs1' | func2 | rs2' | opcode2 |
|
|
+-------+----------+-------+------+---------+
|
|
15 10 7 5 2 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>CB type: .insn cb opcode2, func3, rs1', symbol</code></dt>
|
|
<dd><pre class="verbatim">+-------+--------------+------+------------------+---------+
|
|
| func3 | simm8[8|4:3] | rs1' | simm8[7:6|2:1|5] | opcode2 |
|
|
+-------+--------------+------+------------------+---------+
|
|
15 13 10 7 2 0
|
|
</pre>
|
|
</dd>
|
|
<dt><code>CJ type: .insn cj opcode2, symbol</code></dt>
|
|
<dd><pre class="verbatim">+-------+-------------------------------+---------+
|
|
| func3 | simm11[11|4|9:8|10|6|7|3:1|5] | opcode2 |
|
|
+-------+-------------------------------+---------+
|
|
15 13 2 0
|
|
</pre>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For the complete list of all instruction format variants see
|
|
The RISC-V Instruction Set Manual Volume I: User-Level ISA.
|
|
</p>
|
|
<hr>
|
|
<a name="RISC_002dV_002dATTRIBUTE"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#RISC_002dV_002dFormats" accesskey="p" rel="previous">RISC-V-Formats</a>, Up: <a href="#RISC_002dV_002dDependent" accesskey="u" rel="up">RISC-V-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="RISC_002dV-Object-Attribute"></a>
|
|
<h4 class="subsection">9.38.5 RISC-V Object Attribute</h4>
|
|
<a name="index-Object-Attribute_002c-RISC_002dV"></a>
|
|
|
|
<p>RISC-V attributes have a string value if the tag number is odd and an integer
|
|
value if the tag number is even.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><span class="roman">Tag_RISCV_stack_align (4)</span></dt>
|
|
<dd><p>Tag_RISCV_strict_align records the N-byte stack alignment for this object. The
|
|
default value is 16 for RV32I or RV64I, and 4 for RV32E.
|
|
</p>
|
|
<p>The smallest value will be used if object files with different
|
|
Tag_RISCV_stack_align values are merged.
|
|
</p>
|
|
</dd>
|
|
<dt><span class="roman">Tag_RISCV_arch (5)</span></dt>
|
|
<dd><p>Tag_RISCV_arch contains a string for the target architecture taken from the
|
|
option <samp>-march</samp>. Different architectures will be integrated into a
|
|
superset when object files are merged.
|
|
</p>
|
|
<p>Note that the version information of the target architecture must be presented
|
|
explicitly in the attribute and abbreviations must be expanded. The version
|
|
information, if not given by <samp>-march</samp>, must be in accordance with the
|
|
default specified by the tool. For example, the architecture <code>RV32I</code> has
|
|
to be recorded in the attribute as <code>RV32I2P0</code> in which <code>2P0</code> stands
|
|
for the default version of its base ISA. On the other hand, the architecture
|
|
<code>RV32G</code> has to be presented as <code>RV32I2P0_M2P0_A2P0_F2P0_D2P0</code> in
|
|
which the abbreviation <code>G</code> is expanded to the <code>IMAFD</code> combination
|
|
with default versions of the standard extensions.
|
|
</p>
|
|
</dd>
|
|
<dt><span class="roman">Tag_RISCV_unaligned_access (6)</span></dt>
|
|
<dd><p>Tag_RISCV_unaligned_access is 0 for files that do not allow any unaligned
|
|
memory accesses, and 1 for files that do allow unaligned memory accesses.
|
|
</p>
|
|
</dd>
|
|
<dt><span class="roman">Tag_RISCV_priv_spec (8)</span></dt>
|
|
<dt><span class="roman">Tag_RISCV_priv_spec_minor (10)</span></dt>
|
|
<dt><span class="roman">Tag_RISCV_priv_spec_revision (12)</span></dt>
|
|
<dd><p>Tag_RISCV_priv_spec contains the major/minor/revision version information of
|
|
the privileged specification. It will report errors if object files of
|
|
different privileged specification versions are merged.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="RL78_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RX_002dDependent" accesskey="n" rel="next">RX-Dependent</a>, Previous: <a href="#RISC_002dV_002dDependent" accesskey="p" rel="previous">RISC-V-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="RL78-Dependent-Features"></a>
|
|
<h3 class="section">9.39 RL78 Dependent Features</h3>
|
|
|
|
<a name="index-RL78-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#RL78_002dOpts" accesskey="1">RL78-Opts</a>:</td><td> </td><td align="left" valign="top">RL78 Assembler Command-line Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RL78_002dModifiers" accesskey="2">RL78-Modifiers</a>:</td><td> </td><td align="left" valign="top">Symbolic Operand Modifiers
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RL78_002dDirectives" accesskey="3">RL78-Directives</a>:</td><td> </td><td align="left" valign="top">Assembler Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RL78_002dSyntax" accesskey="4">RL78-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="RL78_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RL78_002dModifiers" accesskey="n" rel="next">RL78-Modifiers</a>, Up: <a href="#RL78_002dDependent" accesskey="u" rel="up">RL78-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="RL78-Options"></a>
|
|
<h4 class="subsection">9.39.1 RL78 Options</h4>
|
|
<a name="index-options_002c-RL78"></a>
|
|
<a name="index-RL78-options"></a>
|
|
|
|
<dl compact="compact">
|
|
<dt><code>relax</code></dt>
|
|
<dd><p>Enable support for link-time relaxation.
|
|
</p>
|
|
</dd>
|
|
<dt><code>norelax</code></dt>
|
|
<dd><p>Disable support for link-time relaxation (default).
|
|
</p>
|
|
</dd>
|
|
<dt><code>mg10</code></dt>
|
|
<dd><p>Mark the generated binary as targeting the G10 variant of the RL78
|
|
architecture.
|
|
</p>
|
|
</dd>
|
|
<dt><code>mg13</code></dt>
|
|
<dd><p>Mark the generated binary as targeting the G13 variant of the RL78
|
|
architecture.
|
|
</p>
|
|
</dd>
|
|
<dt><code>mg14</code></dt>
|
|
<dt><code>mrl78</code></dt>
|
|
<dd><p>Mark the generated binary as targeting the G14 variant of the RL78
|
|
architecture. This is the default.
|
|
</p>
|
|
</dd>
|
|
<dt><code>m32bit-doubles</code></dt>
|
|
<dd><p>Mark the generated binary as one that uses 32-bits to hold the
|
|
<code>double</code> floating point type. This is the default.
|
|
</p>
|
|
</dd>
|
|
<dt><code>m64bit-doubles</code></dt>
|
|
<dd><p>Mark the generated binary as one that uses 64-bits to hold the
|
|
<code>double</code> floating point type.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="RL78_002dModifiers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RL78_002dDirectives" accesskey="n" rel="next">RL78-Directives</a>, Previous: <a href="#RL78_002dOpts" accesskey="p" rel="previous">RL78-Opts</a>, Up: <a href="#RL78_002dDependent" accesskey="u" rel="up">RL78-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbolic-Operand-Modifiers-2"></a>
|
|
<h4 class="subsection">9.39.2 Symbolic Operand Modifiers</h4>
|
|
|
|
<a name="index-RL78-modifiers"></a>
|
|
<a name="index-syntax_002c-RL78"></a>
|
|
|
|
<p>The RL78 has three modifiers that adjust the relocations used by the
|
|
linker:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>%lo16()</code></dt>
|
|
<dd>
|
|
<p>When loading a 20-bit (or wider) address into registers, this modifier
|
|
selects the 16 least significant bits.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> movw ax,#%lo16(_sym)
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>%hi16()</code></dt>
|
|
<dd>
|
|
<p>When loading a 20-bit (or wider) address into registers, this modifier
|
|
selects the 16 most significant bits.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> movw ax,#%hi16(_sym)
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>%hi8()</code></dt>
|
|
<dd>
|
|
<p>When loading a 20-bit (or wider) address into registers, this modifier
|
|
selects the 8 bits that would go into CS or ES (i.e. bits 23..16).
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> mov es, #%hi8(_sym)
|
|
</pre></div>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="RL78_002dDirectives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RL78_002dSyntax" accesskey="n" rel="next">RL78-Syntax</a>, Previous: <a href="#RL78_002dModifiers" accesskey="p" rel="previous">RL78-Modifiers</a>, Up: <a href="#RL78_002dDependent" accesskey="u" rel="up">RL78-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-Directives-5"></a>
|
|
<h4 class="subsection">9.39.3 Assembler Directives</h4>
|
|
|
|
<a name="index-assembler-directives_002c-RL78"></a>
|
|
<a name="index-RL78-assembler-directives"></a>
|
|
|
|
<p>In addition to the common directives, the RL78 adds these:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>.double</code></dt>
|
|
<dd><p>Output a constant in “double” format, which is either a 32-bit
|
|
or a 64-bit floating point value, depending upon the setting of the
|
|
<samp>-m32bit-doubles</samp>|<samp>-m64bit-doubles</samp> command-line
|
|
option.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.bss</code></dt>
|
|
<dd><p>Select the BSS section.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.3byte</code></dt>
|
|
<dd><p>Output a constant value in a three byte format.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.int</code></dt>
|
|
<dt><code>.word</code></dt>
|
|
<dd><p>Output a constant value in a four byte format.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="RL78_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#RL78_002dDirectives" accesskey="p" rel="previous">RL78-Directives</a>, Up: <a href="#RL78_002dDependent" accesskey="u" rel="up">RL78-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-for-the-RL78"></a>
|
|
<h4 class="subsection">9.39.4 Syntax for the RL78</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#RL78_002dChars" accesskey="1">RL78-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="RL78_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#RL78_002dSyntax" accesskey="u" rel="up">RL78-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-30"></a>
|
|
<h4 class="subsubsection">9.39.4.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-RL78"></a>
|
|
<a name="index-RL78-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>;</samp>’ appearing anywhere on a line indicates the
|
|
start of a comment that extends to the end of that line.
|
|
</p>
|
|
<p>If a ‘<samp>#</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 (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-RL78"></a>
|
|
<a name="index-statement-separator_002c-RL78"></a>
|
|
<a name="index-RL78-line-separator"></a>
|
|
<p>The ‘<samp>|</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
<hr>
|
|
<a name="RX_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#S_002f390_002dDependent" accesskey="n" rel="next">S/390-Dependent</a>, Previous: <a href="#RL78_002dDependent" accesskey="p" rel="previous">RL78-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="RX-Dependent-Features"></a>
|
|
<h3 class="section">9.40 RX Dependent Features</h3>
|
|
|
|
<a name="index-RX-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#RX_002dOpts" accesskey="1">RX-Opts</a>:</td><td> </td><td align="left" valign="top">RX Assembler Command-line Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RX_002dModifiers" accesskey="2">RX-Modifiers</a>:</td><td> </td><td align="left" valign="top">Symbolic Operand Modifiers
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RX_002dDirectives" accesskey="3">RX-Directives</a>:</td><td> </td><td align="left" valign="top">Assembler Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RX_002dFloat" accesskey="4">RX-Float</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#RX_002dSyntax" accesskey="5">RX-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="RX_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RX_002dModifiers" accesskey="n" rel="next">RX-Modifiers</a>, Up: <a href="#RX_002dDependent" accesskey="u" rel="up">RX-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="RX-Options"></a>
|
|
<h4 class="subsection">9.40.1 RX Options</h4>
|
|
<a name="index-options_002c-RX"></a>
|
|
<a name="index-RX-options"></a>
|
|
|
|
<p>The Renesas RX port of <code>as</code> has a few target specific
|
|
command-line options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dm32bit_002ddoubles"></a>
|
|
</dd>
|
|
<dt><code>-m32bit-doubles</code></dt>
|
|
<dd><p>This option controls the ABI and indicates to use a 32-bit float ABI.
|
|
It has no effect on the assembled instructions, but it does influence
|
|
the behaviour of the ‘<samp>.double</samp>’ pseudo-op.
|
|
This is the default.
|
|
</p>
|
|
<a name="index-_002dm64bit_002ddoubles"></a>
|
|
</dd>
|
|
<dt><code>-m64bit-doubles</code></dt>
|
|
<dd><p>This option controls the ABI and indicates to use a 64-bit float ABI.
|
|
It has no effect on the assembled instructions, but it does influence
|
|
the behaviour of the ‘<samp>.double</samp>’ pseudo-op.
|
|
</p>
|
|
<a name="index-_002dmbig_002dendian"></a>
|
|
</dd>
|
|
<dt><code>-mbig-endian</code></dt>
|
|
<dd><p>This option controls the ABI and indicates to use a big-endian data
|
|
ABI. It has no effect on the assembled instructions, but it does
|
|
influence the behaviour of the ‘<samp>.short</samp>’, ‘<samp>.hword</samp>’, ‘<samp>.int</samp>’,
|
|
‘<samp>.word</samp>’, ‘<samp>.long</samp>’, ‘<samp>.quad</samp>’ and ‘<samp>.octa</samp>’ pseudo-ops.
|
|
</p>
|
|
<a name="index-_002dmlittle_002dendian"></a>
|
|
</dd>
|
|
<dt><code>-mlittle-endian</code></dt>
|
|
<dd><p>This option controls the ABI and indicates to use a little-endian data
|
|
ABI. It has no effect on the assembled instructions, but it does
|
|
influence the behaviour of the ‘<samp>.short</samp>’, ‘<samp>.hword</samp>’, ‘<samp>.int</samp>’,
|
|
‘<samp>.word</samp>’, ‘<samp>.long</samp>’, ‘<samp>.quad</samp>’ and ‘<samp>.octa</samp>’ pseudo-ops.
|
|
This is the default.
|
|
</p>
|
|
<a name="index-_002dmuse_002dconventional_002dsection_002dnames"></a>
|
|
</dd>
|
|
<dt><code>-muse-conventional-section-names</code></dt>
|
|
<dd><p>This option controls the default names given to the code (.text),
|
|
initialised data (.data) and uninitialised data sections (.bss).
|
|
</p>
|
|
<a name="index-_002dmuse_002drenesas_002dsection_002dnames"></a>
|
|
</dd>
|
|
<dt><code>-muse-renesas-section-names</code></dt>
|
|
<dd><p>This option controls the default names given to the code (P),
|
|
initialised data (D_1) and uninitialised data sections (B_1).
|
|
This is the default.
|
|
</p>
|
|
<a name="index-_002dmsmall_002ddata_002dlimit"></a>
|
|
</dd>
|
|
<dt><code>-msmall-data-limit</code></dt>
|
|
<dd><p>This option tells the assembler that the small data limit feature of
|
|
the RX port of GCC is being used. This results in the assembler
|
|
generating an undefined reference to a symbol called <code>__gp</code> for
|
|
use by the relocations that are needed to support the small data limit
|
|
feature. This option is not enabled by default as it would otherwise
|
|
pollute the symbol table.
|
|
</p>
|
|
<a name="index-_002dmpid"></a>
|
|
</dd>
|
|
<dt><code>-mpid</code></dt>
|
|
<dd><p>This option tells the assembler that the position independent data of the
|
|
RX port of GCC is being used. This results in the assembler
|
|
generating an undefined reference to a symbol called <code>__pid_base</code>,
|
|
and also setting the RX_PID flag bit in the e_flags field of the ELF
|
|
header of the object file.
|
|
</p>
|
|
<a name="index-_002dmint_002dregister"></a>
|
|
</dd>
|
|
<dt><code>-mint-register=<var>num</var></code></dt>
|
|
<dd><p>This option tells the assembler how many registers have been reserved
|
|
for use by interrupt handlers. This is needed in order to compute the
|
|
correct values for the <code>%gpreg</code> and <code>%pidreg</code> meta registers.
|
|
</p>
|
|
<a name="index-_002dmgcc_002dabi"></a>
|
|
</dd>
|
|
<dt><code>-mgcc-abi</code></dt>
|
|
<dd><p>This option tells the assembler that the old GCC ABI is being used by
|
|
the assembled code. With this version of the ABI function arguments
|
|
that are passed on the stack are aligned to a 32-bit boundary.
|
|
</p>
|
|
<a name="index-_002dmrx_002dabi"></a>
|
|
</dd>
|
|
<dt><code>-mrx-abi</code></dt>
|
|
<dd><p>This option tells the assembler that the official RX ABI is being used
|
|
by the assembled code. With this version of the ABI function
|
|
arguments that are passed on the stack are aligned to their natural
|
|
alignments. This option is the default.
|
|
</p>
|
|
<a name="index-_002dmcpu_003d"></a>
|
|
</dd>
|
|
<dt><code>-mcpu=<var>name</var></code></dt>
|
|
<dd><p>This option tells the assembler the target CPU type. Currently the
|
|
<code>rx100</code>, <code>rx200</code>, <code>rx600</code>, <code>rx610</code>, <code>rxv2</code>,
|
|
<code>rxv3</code> and <code>rxv3-dfpu</code> are recognised as valid cpu names.
|
|
Attempting to assemble an instructionnot supported by the indicated
|
|
cpu type will result in an error message being generated.
|
|
</p>
|
|
<a name="index-_002dmno_002dallow_002dstring_002dinsns"></a>
|
|
</dd>
|
|
<dt><code>-mno-allow-string-insns</code></dt>
|
|
<dd><p>This option tells the assembler to mark the object file that it is
|
|
building as one that does not use the string instructions
|
|
<code>SMOVF</code>, <code>SCMPU</code>, <code>SMOVB</code>, <code>SMOVU</code>, <code>SUNTIL</code>
|
|
<code>SWHILE</code> or the <code>RMPA</code> instruction. In addition the mark
|
|
tells the linker to complain if an attempt is made to link the binary
|
|
with another one that does use any of these instructions.
|
|
</p>
|
|
<p>Note - the inverse of this option, <code>-mallow-string-insns</code>, is
|
|
not needed. The assembler automatically detects the use of the
|
|
the instructions in the source code and labels the resulting
|
|
object file appropriately. If no string instructions are detected
|
|
then the object file is labelled as being one that can be linked with
|
|
either string-using or string-banned object files.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="RX_002dModifiers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RX_002dDirectives" accesskey="n" rel="next">RX-Directives</a>, Previous: <a href="#RX_002dOpts" accesskey="p" rel="previous">RX-Opts</a>, Up: <a href="#RX_002dDependent" accesskey="u" rel="up">RX-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbolic-Operand-Modifiers-3"></a>
|
|
<h4 class="subsection">9.40.2 Symbolic Operand Modifiers</h4>
|
|
|
|
<a name="index-RX-modifiers"></a>
|
|
<a name="index-syntax_002c-RX"></a>
|
|
<a name="index-_0025gp"></a>
|
|
|
|
<p>The assembler supports one modifier when using symbol addresses
|
|
in RX instruction operands. The general syntax is the following:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">%gp(symbol)
|
|
</pre></div>
|
|
|
|
<p>The modifier returns the offset from the <var>__gp</var> symbol to the
|
|
specified symbol as a 16-bit value. The intent is that this offset
|
|
should be used in a register+offset move instruction when generating
|
|
references to small data. Ie, like this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> mov.W %gp(_foo)[%gpreg], r1
|
|
</pre></div>
|
|
|
|
<p>The assembler also supports two meta register names which can be used
|
|
to refer to registers whose values may not be known to the
|
|
programmer. These meta register names are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_0025gpreg"></a>
|
|
</dd>
|
|
<dt><code>%gpreg</code></dt>
|
|
<dd><p>The small data address register.
|
|
</p>
|
|
<a name="index-_0025pidreg"></a>
|
|
</dd>
|
|
<dt><code>%pidreg</code></dt>
|
|
<dd><p>The PID base address register.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Both registers normally have the value r13, but this can change if
|
|
some registers have been reserved for use by interrupt handlers or if
|
|
both the small data limit and position independent data features are
|
|
being used at the same time.
|
|
</p>
|
|
<hr>
|
|
<a name="RX_002dDirectives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RX_002dFloat" accesskey="n" rel="next">RX-Float</a>, Previous: <a href="#RX_002dModifiers" accesskey="p" rel="previous">RX-Modifiers</a>, Up: <a href="#RX_002dDependent" accesskey="u" rel="up">RX-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-Directives-6"></a>
|
|
<h4 class="subsection">9.40.3 Assembler Directives</h4>
|
|
|
|
<a name="index-assembler-directives_002c-RX"></a>
|
|
<a name="index-RX-assembler-directives"></a>
|
|
|
|
<p>The RX version of <code>as</code> has the following specific
|
|
assembler directives:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>.3byte</code></dt>
|
|
<dd><a name="index-assembler-directive-_002e3byte_002c-RX"></a>
|
|
<a name="index-RX-assembler-directive-_002e3byte"></a>
|
|
<p>Inserts a 3-byte value into the output file at the current location.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.fetchalign</code></dt>
|
|
<dd><a name="index-assembler-directive-_002efetchalign_002c-RX"></a>
|
|
<a name="index-RX-assembler-directive-_002efetchalign"></a>
|
|
<p>If the next opcode following this directive spans a fetch line
|
|
boundary (8 byte boundary), the opcode is aligned to that boundary.
|
|
If the next opcode does not span a fetch line, this directive has no
|
|
effect. Note that one or more labels may be between this directive
|
|
and the opcode; those labels are aligned as well. Any inserted bytes
|
|
due to alignment will form a NOP opcode.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="RX_002dFloat"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#RX_002dSyntax" accesskey="n" rel="next">RX-Syntax</a>, Previous: <a href="#RX_002dDirectives" accesskey="p" rel="previous">RX-Directives</a>, Up: <a href="#RX_002dDependent" accesskey="u" rel="up">RX-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-12"></a>
|
|
<h4 class="subsection">9.40.4 Floating Point</h4>
|
|
|
|
<a name="index-floating-point_002c-RX"></a>
|
|
<a name="index-RX-floating-point"></a>
|
|
|
|
<p>The floating point formats generated by directives are these.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-float-directive_002c-RX"></a>
|
|
|
|
</dd>
|
|
<dt><code>.float</code></dt>
|
|
<dd><p><code>Single</code> precision (32-bit) floating point constants.
|
|
</p>
|
|
<a name="index-double-directive_002c-RX"></a>
|
|
</dd>
|
|
<dt><code>.double</code></dt>
|
|
<dd><p>If the <samp>-m64bit-doubles</samp> command-line option has been specified
|
|
then then <code>double</code> directive generates <code>double</code> precision
|
|
(64-bit) floating point constants, otherwise it generates
|
|
<code>single</code> precision (32-bit) floating point constants. To force
|
|
the generation of 64-bit floating point constants used the <code>dc.d</code>
|
|
directive instead.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="RX_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#RX_002dFloat" accesskey="p" rel="previous">RX-Float</a>, Up: <a href="#RX_002dDependent" accesskey="u" rel="up">RX-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-for-the-RX"></a>
|
|
<h4 class="subsection">9.40.5 Syntax for the RX</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#RX_002dChars" accesskey="1">RX-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="RX_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#RX_002dSyntax" accesskey="u" rel="up">RX-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-31"></a>
|
|
<h4 class="subsubsection">9.40.5.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-RX"></a>
|
|
<a name="index-RX-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>;</samp>’ appearing anywhere on a line indicates the
|
|
start of a comment that extends to the end of that line.
|
|
</p>
|
|
<p>If a ‘<samp>#</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 (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-RX"></a>
|
|
<a name="index-statement-separator_002c-RX"></a>
|
|
<a name="index-RX-line-separator"></a>
|
|
<p>The ‘<samp>!</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
<hr>
|
|
<a name="S_002f390_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#SCORE_002dDependent" accesskey="n" rel="next">SCORE-Dependent</a>, Previous: <a href="#RX_002dDependent" accesskey="p" rel="previous">RX-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="IBM-S_002f390-Dependent-Features"></a>
|
|
<h3 class="section">9.41 IBM S/390 Dependent Features</h3>
|
|
|
|
<a name="index-s390-support"></a>
|
|
|
|
<p>The s390 version of <code>as</code> supports two architectures modes
|
|
and eleven chip levels. The architecture modes are the Enterprise System
|
|
Architecture (ESA) and the newer z/Architecture mode. The chip levels
|
|
are g5 (or arch3), g6, z900 (or arch5), z990 (or arch6), z9-109, z9-ec
|
|
(or arch7), z10 (or arch8), z196 (or arch9), zEC12 (or arch10), z13
|
|
(or arch11), z14 (or arch12), z15 (or arch13), or z16 (or arch14).
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#s390-Options" accesskey="1">s390 Options</a>:</td><td> </td><td align="left" valign="top">Command-line Options.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#s390-Characters" accesskey="2">s390 Characters</a>:</td><td> </td><td align="left" valign="top">Special Characters.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#s390-Syntax" accesskey="3">s390 Syntax</a>:</td><td> </td><td align="left" valign="top">Assembler Instruction syntax.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#s390-Directives" accesskey="4">s390 Directives</a>:</td><td> </td><td align="left" valign="top">Assembler Directives.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#s390-Floating-Point" accesskey="5">s390 Floating Point</a>:</td><td> </td><td align="left" valign="top">Floating Point.
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="s390-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#s390-Characters" accesskey="n" rel="next">s390 Characters</a>, Up: <a href="#S_002f390_002dDependent" accesskey="u" rel="up">S/390-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-21"></a>
|
|
<h4 class="subsection">9.41.1 Options</h4>
|
|
<a name="index-options-for-s390"></a>
|
|
<a name="index-s390-options"></a>
|
|
|
|
<p>The following table lists all available s390 specific options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dm31-option_002c-s390"></a>
|
|
<a name="index-_002dm64-option_002c-s390"></a>
|
|
</dd>
|
|
<dt><code>-m31 | -m64</code></dt>
|
|
<dd><p>Select 31- or 64-bit ABI implying a word size of 32- or 64-bit.
|
|
</p>
|
|
<p>These options are only available with the ELF object file format, and
|
|
require that the necessary BFD support has been included (on a 31-bit
|
|
platform you must add –enable-64-bit-bfd on the call to the configure
|
|
script to enable 64-bit usage and use s390x as target platform).
|
|
</p>
|
|
<a name="index-_002dmesa-option_002c-s390"></a>
|
|
<a name="index-_002dmzarch-option_002c-s390"></a>
|
|
</dd>
|
|
<dt><code>-mesa | -mzarch</code></dt>
|
|
<dd><p>Select the architecture mode, either the Enterprise System Architecture
|
|
(esa) mode or the z/Architecture mode (zarch).
|
|
</p>
|
|
<p>The 64-bit instructions are only available with the z/Architecture mode.
|
|
The combination of ‘<samp>-m64</samp>’ and ‘<samp>-mesa</samp>’ results in a warning
|
|
message.
|
|
</p>
|
|
<a name="index-_002dmarch_003d-option_002c-s390"></a>
|
|
</dd>
|
|
<dt><code>-march=<var>CPU</var></code></dt>
|
|
<dd><p>This option specifies the target processor. The following processor names
|
|
are recognized:
|
|
<code>g5</code> (or <code>arch3</code>),
|
|
<code>g6</code>,
|
|
<code>z900</code> (or <code>arch5</code>),
|
|
<code>z990</code> (or <code>arch6</code>),
|
|
<code>z9-109</code>,
|
|
<code>z9-ec</code> (or <code>arch7</code>),
|
|
<code>z10</code> (or <code>arch8</code>),
|
|
<code>z196</code> (or <code>arch9</code>),
|
|
<code>zEC12</code> (or <code>arch10</code>),
|
|
<code>z13</code> (or <code>arch11</code>),
|
|
<code>z14</code> (or <code>arch12</code>),
|
|
<code>z15</code> (or <code>arch13</code>), and
|
|
<code>z16</code> (or <code>arch14</code>).
|
|
</p>
|
|
<p>Assembling an instruction that is not supported on the target
|
|
processor results in an error message.
|
|
</p>
|
|
<p>The processor names starting with <code>arch</code> refer to the edition
|
|
number in the Principle of Operations manual. They can be used as
|
|
alternate processor names and have been added for compatibility with
|
|
the IBM XL compiler.
|
|
</p>
|
|
<p><code>arch3</code>, <code>g5</code> and <code>g6</code> cannot be used with the
|
|
‘<samp>-mzarch</samp>’ option since the z/Architecture mode is not supported
|
|
on these processor levels.
|
|
</p>
|
|
<p>There is no <code>arch4</code> option supported. <code>arch4</code> matches
|
|
<code>-march=arch5 -mesa</code>.
|
|
</p>
|
|
<a name="index-_002dmregnames-option_002c-s390"></a>
|
|
</dd>
|
|
<dt><code>-mregnames</code></dt>
|
|
<dd><p>Allow symbolic names for registers.
|
|
</p>
|
|
<a name="index-_002dmno_002dregnames-option_002c-s390"></a>
|
|
</dd>
|
|
<dt><code>-mno-regnames</code></dt>
|
|
<dd><p>Do not allow symbolic names for registers.
|
|
</p>
|
|
<a name="index-_002dmwarn_002dareg_002dzero-option_002c-s390"></a>
|
|
</dd>
|
|
<dt><code>-mwarn-areg-zero</code></dt>
|
|
<dd><p>Warn whenever the operand for a base or index register has been specified
|
|
but evaluates to zero. This can indicate the misuse of general purpose
|
|
register 0 as an address register.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="s390-Characters"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#s390-Syntax" accesskey="n" rel="next">s390 Syntax</a>, Previous: <a href="#s390-Options" accesskey="p" rel="previous">s390 Options</a>, Up: <a href="#S_002f390_002dDependent" accesskey="u" rel="up">S/390-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-32"></a>
|
|
<h4 class="subsection">9.41.2 Special Characters</h4>
|
|
<a name="index-line-comment-character_002c-s390"></a>
|
|
<a name="index-s390-line-comment-character"></a>
|
|
|
|
<p>‘<samp>#</samp>’ is the line comment character.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line then the whole
|
|
line is treated as a comment, but in this case the line could also be
|
|
a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-s390"></a>
|
|
<a name="index-statement-separator_002c-s390"></a>
|
|
<a name="index-s390-line-separator"></a>
|
|
<p>The ‘<samp>;</samp>’ character can be used instead of a newline to separate
|
|
statements.
|
|
</p>
|
|
<hr>
|
|
<a name="s390-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#s390-Directives" accesskey="n" rel="next">s390 Directives</a>, Previous: <a href="#s390-Characters" accesskey="p" rel="previous">s390 Characters</a>, Up: <a href="#S_002f390_002dDependent" accesskey="u" rel="up">S/390-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Instruction-syntax"></a>
|
|
<h4 class="subsection">9.41.3 Instruction syntax</h4>
|
|
<a name="index-instruction-syntax_002c-s390"></a>
|
|
<a name="index-s390-instruction-syntax"></a>
|
|
|
|
<p>The assembler syntax closely follows the syntax outlined in
|
|
Enterprise Systems Architecture/390 Principles of Operation (SA22-7201)
|
|
and the z/Architecture Principles of Operation (SA22-7832).
|
|
</p>
|
|
<p>Each instruction has two major parts, the instruction mnemonic
|
|
and the instruction operands. The instruction format varies.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#s390-Register" accesskey="1">s390 Register</a>:</td><td> </td><td align="left" valign="top">Register Naming
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#s390-Mnemonics" accesskey="2">s390 Mnemonics</a>:</td><td> </td><td align="left" valign="top">Instruction Mnemonics
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#s390-Operands" accesskey="3">s390 Operands</a>:</td><td> </td><td align="left" valign="top">Instruction Operands
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#s390-Formats" accesskey="4">s390 Formats</a>:</td><td> </td><td align="left" valign="top">Instruction Formats
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#s390-Aliases" accesskey="5">s390 Aliases</a>:</td><td> </td><td align="left" valign="top">Instruction Aliases
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#s390-Operand-Modifier" accesskey="6">s390 Operand Modifier</a>:</td><td> </td><td align="left" valign="top">Instruction Operand Modifier
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#s390-Instruction-Marker" accesskey="7">s390 Instruction Marker</a>:</td><td> </td><td align="left" valign="top">Instruction Marker
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#s390-Literal-Pool-Entries" accesskey="8">s390 Literal Pool Entries</a>:</td><td> </td><td align="left" valign="top">Literal Pool Entries
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="s390-Register"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#s390-Mnemonics" accesskey="n" rel="next">s390 Mnemonics</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-naming"></a>
|
|
<h4 class="subsubsection">9.41.3.1 Register naming</h4>
|
|
<a name="index-register-naming_002c-s390"></a>
|
|
<a name="index-s390-register-naming"></a>
|
|
|
|
<p>The <code>as</code> recognizes a number of predefined symbols for the
|
|
various processor registers. A register specification in one of the
|
|
instruction formats is an unsigned integer between 0 and 15. The specific
|
|
instruction and the position of the register in the instruction format
|
|
denotes the type of the register. The register symbols are prefixed with
|
|
‘<samp>%</samp>’:
|
|
</p>
|
|
<div class="display">
|
|
<table>
|
|
<tr><td><pre class="display">%rN</pre></td><td><pre class="display">the 16 general purpose registers, 0 <= N <= 15</pre></td></tr>
|
|
<tr><td><pre class="display">%fN</pre></td><td><pre class="display">the 16 floating point registers, 0 <= N <= 15</pre></td></tr>
|
|
<tr><td><pre class="display">%aN</pre></td><td><pre class="display">the 16 access registers, 0 <= N <= 15</pre></td></tr>
|
|
<tr><td><pre class="display">%cN</pre></td><td><pre class="display">the 16 control registers, 0 <= N <= 15</pre></td></tr>
|
|
<tr><td><pre class="display">%lit</pre></td><td><pre class="display">an alias for the general purpose register %r13</pre></td></tr>
|
|
<tr><td><pre class="display">%sp</pre></td><td><pre class="display">an alias for the general purpose register %r15</pre></td></tr>
|
|
</table>
|
|
</div>
|
|
|
|
<hr>
|
|
<a name="s390-Mnemonics"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#s390-Operands" accesskey="n" rel="next">s390 Operands</a>, Previous: <a href="#s390-Register" accesskey="p" rel="previous">s390 Register</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Instruction-Mnemonics"></a>
|
|
<h4 class="subsubsection">9.41.3.2 Instruction Mnemonics</h4>
|
|
<a name="index-instruction-mnemonics_002c-s390"></a>
|
|
<a name="index-s390-instruction-mnemonics"></a>
|
|
|
|
<p>All instructions documented in the Principles of Operation are supported
|
|
with the mnemonic and order of operands as described.
|
|
The instruction mnemonic identifies the instruction format
|
|
(<a href="#s390-Formats">s390 Formats</a>) and the specific operation code for the instruction.
|
|
For example, the ‘<samp>lr</samp>’ mnemonic denotes the instruction format ‘<samp>RR</samp>’
|
|
with the operation code ‘<samp>0x18</samp>’.
|
|
</p>
|
|
<p>The definition of the various mnemonics follows a scheme, where the first
|
|
character usually hint at the type of the instruction:
|
|
</p>
|
|
<div class="display">
|
|
<table>
|
|
<tr><td><pre class="display">a</pre></td><td><pre class="display">add instruction, for example ‘<samp>al</samp>’ for add logical 32-bit</pre></td></tr>
|
|
<tr><td><pre class="display">b</pre></td><td><pre class="display">branch instruction, for example ‘<samp>bc</samp>’ for branch on condition</pre></td></tr>
|
|
<tr><td><pre class="display">c</pre></td><td><pre class="display">compare or convert instruction, for example ‘<samp>cr</samp>’ for compare
|
|
register 32-bit</pre></td></tr>
|
|
<tr><td><pre class="display">d</pre></td><td><pre class="display">divide instruction, for example ‘<samp>dlr</samp>’ devide logical register
|
|
64-bit to 32-bit</pre></td></tr>
|
|
<tr><td><pre class="display">i</pre></td><td><pre class="display">insert instruction, for example ‘<samp>ic</samp>’ insert character</pre></td></tr>
|
|
<tr><td><pre class="display">l</pre></td><td><pre class="display">load instruction, for example ‘<samp>ltr</samp>’ load and test register</pre></td></tr>
|
|
<tr><td><pre class="display">mv</pre></td><td><pre class="display">move instruction, for example ‘<samp>mvc</samp>’ move character</pre></td></tr>
|
|
<tr><td><pre class="display">m</pre></td><td><pre class="display">multiply instruction, for example ‘<samp>mh</samp>’ multiply halfword</pre></td></tr>
|
|
<tr><td><pre class="display">n</pre></td><td><pre class="display">and instruction, for example ‘<samp>ni</samp>’ and immediate</pre></td></tr>
|
|
<tr><td><pre class="display">o</pre></td><td><pre class="display">or instruction, for example ‘<samp>oc</samp>’ or character</pre></td></tr>
|
|
<tr><td><pre class="display">sla, sll</pre></td><td><pre class="display">shift left single instruction</pre></td></tr>
|
|
<tr><td><pre class="display">sra, srl</pre></td><td><pre class="display">shift right single instruction</pre></td></tr>
|
|
<tr><td><pre class="display">st</pre></td><td><pre class="display">store instruction, for example ‘<samp>stm</samp>’ store multiple</pre></td></tr>
|
|
<tr><td><pre class="display">s</pre></td><td><pre class="display">subtract instruction, for example ‘<samp>slr</samp>’ subtract
|
|
logical 32-bit</pre></td></tr>
|
|
<tr><td><pre class="display">t</pre></td><td><pre class="display">test or translate instruction, of example ‘<samp>tm</samp>’ test under mask</pre></td></tr>
|
|
<tr><td><pre class="display">x</pre></td><td><pre class="display">exclusive or instruction, for example ‘<samp>xc</samp>’ exclusive or
|
|
character</pre></td></tr>
|
|
</table>
|
|
</div>
|
|
|
|
<p>Certain characters at the end of the mnemonic may describe a property
|
|
of the instruction:
|
|
</p>
|
|
<div class="display">
|
|
<table>
|
|
<tr><td><pre class="display">c</pre></td><td><pre class="display">the instruction uses a 8-bit character operand</pre></td></tr>
|
|
<tr><td><pre class="display">f</pre></td><td><pre class="display">the instruction extends a 32-bit operand to 64 bit</pre></td></tr>
|
|
<tr><td><pre class="display">g</pre></td><td><pre class="display">the operands are treated as 64-bit values</pre></td></tr>
|
|
<tr><td><pre class="display">h</pre></td><td><pre class="display">the operand uses a 16-bit halfword operand</pre></td></tr>
|
|
<tr><td><pre class="display">i</pre></td><td><pre class="display">the instruction uses an immediate operand</pre></td></tr>
|
|
<tr><td><pre class="display">l</pre></td><td><pre class="display">the instruction uses unsigned, logical operands</pre></td></tr>
|
|
<tr><td><pre class="display">m</pre></td><td><pre class="display">the instruction uses a mask or operates on multiple values</pre></td></tr>
|
|
<tr><td><pre class="display">r</pre></td><td><pre class="display">if r is the last character, the instruction operates on registers</pre></td></tr>
|
|
<tr><td><pre class="display">y</pre></td><td><pre class="display">the instruction uses 20-bit displacements</pre></td></tr>
|
|
</table>
|
|
</div>
|
|
|
|
<p>There are many exceptions to the scheme outlined in the above lists, in
|
|
particular for the privileged instructions. For non-privileged
|
|
instruction it works quite well, for example the instruction ‘<samp>clgfr</samp>’
|
|
c: compare instruction, l: unsigned operands, g: 64-bit operands,
|
|
f: 32- to 64-bit extension, r: register operands. The instruction compares
|
|
an 64-bit value in a register with the zero extended 32-bit value from
|
|
a second register.
|
|
For a complete list of all mnemonics see appendix B in the Principles
|
|
of Operation.
|
|
</p>
|
|
<hr>
|
|
<a name="s390-Operands"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#s390-Formats" accesskey="n" rel="next">s390 Formats</a>, Previous: <a href="#s390-Mnemonics" accesskey="p" rel="previous">s390 Mnemonics</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Instruction-Operands"></a>
|
|
<h4 class="subsubsection">9.41.3.3 Instruction Operands</h4>
|
|
<a name="index-instruction-operands_002c-s390"></a>
|
|
<a name="index-s390-instruction-operands"></a>
|
|
|
|
<p>Instruction operands can be grouped into three classes, operands located
|
|
in registers, immediate operands, and operands in storage.
|
|
</p>
|
|
<p>A register operand can be located in general, floating-point, access,
|
|
or control register. The register is identified by a four-bit field.
|
|
The field containing the register operand is called the R field.
|
|
</p>
|
|
<p>Immediate operands are contained within the instruction and can have
|
|
8, 16 or 32 bits. The field containing the immediate operand is called
|
|
the I field. Dependent on the instruction the I field is either signed
|
|
or unsigned.
|
|
</p>
|
|
<p>A storage operand consists of an address and a length. The address of a
|
|
storage operands can be specified in any of these ways:
|
|
</p>
|
|
<ul>
|
|
<li> The content of a single general R
|
|
</li><li> The sum of the content of a general register called the base
|
|
register B plus the content of a displacement field D
|
|
</li><li> The sum of the contents of two general registers called the
|
|
index register X and the base register B plus the content of a
|
|
displacement field
|
|
</li><li> The sum of the current instruction address and a 32-bit signed
|
|
immediate field multiplied by two.
|
|
</li></ul>
|
|
|
|
<p>The length of a storage operand can be:
|
|
</p>
|
|
<ul>
|
|
<li> Implied by the instruction
|
|
</li><li> Specified by a bitmask
|
|
</li><li> Specified by a four-bit or eight-bit length field L
|
|
</li><li> Specified by the content of a general register
|
|
</li></ul>
|
|
|
|
<p>The notation for storage operand addresses formed from multiple fields is
|
|
as follows:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>Dn(Bn)</code></dt>
|
|
<dd><p>the address for operand number n is formed from the content of general
|
|
register Bn called the base register and the displacement field Dn.
|
|
</p></dd>
|
|
<dt><code>Dn(Xn,Bn)</code></dt>
|
|
<dd><p>the address for operand number n is formed from the content of general
|
|
register Xn called the index register, general register Bn called the
|
|
base register and the displacement field Dn.
|
|
</p></dd>
|
|
<dt><code>Dn(Ln,Bn)</code></dt>
|
|
<dd><p>the address for operand number n is formed from the content of general
|
|
register Bn called the base register and the displacement field Dn.
|
|
The length of the operand n is specified by the field Ln.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The base registers Bn and the index registers Xn of a storage operand can
|
|
be skipped. If Bn and Xn are skipped, a zero will be stored to the operand
|
|
field. The notation changes as follows:
|
|
</p>
|
|
<div class="display">
|
|
<table>
|
|
<thead><tr><th width="30%"><pre class="display">full notation</pre></th><th width="30%"><pre class="display">short notation</pre></th></tr></thead>
|
|
<tr><td width="30%"><pre class="display">Dn(0,Bn)</pre></td><td width="30%"><pre class="display">Dn(Bn)</pre></td></tr>
|
|
<tr><td width="30%"><pre class="display">Dn(0,0)</pre></td><td width="30%"><pre class="display">Dn</pre></td></tr>
|
|
<tr><td width="30%"><pre class="display">Dn(0)</pre></td><td width="30%"><pre class="display">Dn</pre></td></tr>
|
|
<tr><td width="30%"><pre class="display">Dn(Ln,0)</pre></td><td width="30%"><pre class="display">Dn(Ln)</pre></td></tr>
|
|
</table>
|
|
</div>
|
|
|
|
|
|
<hr>
|
|
<a name="s390-Formats"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#s390-Aliases" accesskey="n" rel="next">s390 Aliases</a>, Previous: <a href="#s390-Operands" accesskey="p" rel="previous">s390 Operands</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Instruction-Formats"></a>
|
|
<h4 class="subsubsection">9.41.3.4 Instruction Formats</h4>
|
|
<a name="index-instruction-formats_002c-s390"></a>
|
|
<a name="index-s390-instruction-formats"></a>
|
|
|
|
<p>The Principles of Operation manuals lists 35 instruction formats where
|
|
some of the formats have multiple variants. For the ‘<samp>.insn</samp>’
|
|
pseudo directive the assembler recognizes some of the formats.
|
|
Typically, the most general variant of the instruction format is used
|
|
by the ‘<samp>.insn</samp>’ directive.
|
|
</p>
|
|
<p>The following table lists the abbreviations used in the table of
|
|
instruction formats:
|
|
</p>
|
|
<div class="display">
|
|
<table>
|
|
<tr><td><pre class="display">OpCode / OpCd</pre></td><td><pre class="display">Part of the op code.</pre></td></tr>
|
|
<tr><td><pre class="display">Bx</pre></td><td><pre class="display">Base register number for operand x.</pre></td></tr>
|
|
<tr><td><pre class="display">Dx</pre></td><td><pre class="display">Displacement for operand x.</pre></td></tr>
|
|
<tr><td><pre class="display">DLx</pre></td><td><pre class="display">Displacement lower 12 bits for operand x.</pre></td></tr>
|
|
<tr><td><pre class="display">DHx</pre></td><td><pre class="display">Displacement higher 8-bits for operand x.</pre></td></tr>
|
|
<tr><td><pre class="display">Rx</pre></td><td><pre class="display">Register number for operand x.</pre></td></tr>
|
|
<tr><td><pre class="display">Xx</pre></td><td><pre class="display">Index register number for operand x.</pre></td></tr>
|
|
<tr><td><pre class="display">Ix</pre></td><td><pre class="display">Signed immediate for operand x.</pre></td></tr>
|
|
<tr><td><pre class="display">Ux</pre></td><td><pre class="display">Unsigned immediate for operand x.</pre></td></tr>
|
|
</table>
|
|
</div>
|
|
|
|
<p>An instruction is two, four, or six bytes in length and must be aligned
|
|
on a 2 byte boundary. The first two bits of the instruction specify the
|
|
length of the instruction, 00 indicates a two byte instruction, 01 and 10
|
|
indicates a four byte instruction, and 11 indicates a six byte instruction.
|
|
</p>
|
|
<p>The following table lists the s390 instruction formats that are available
|
|
with the ‘<samp>.insn</samp>’ pseudo directive:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>E format</code></dt>
|
|
<dd><pre class="verbatim">+-------------+
|
|
| OpCode |
|
|
+-------------+
|
|
0 15
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RI format: <insn> R1,I2</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+------------------+
|
|
| OpCode | R1 |OpCd| I2 |
|
|
+--------+----+----+------------------+
|
|
0 8 12 16 31
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RIE format: <insn> R1,R3,I2</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+------------------+--------+--------+
|
|
| OpCode | R1 | R3 | I2 |////////| OpCode |
|
|
+--------+----+----+------------------+--------+--------+
|
|
0 8 12 16 32 40 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RIL format: <insn> R1,I2</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+------------------------------------+
|
|
| OpCode | R1 |OpCd| I2 |
|
|
+--------+----+----+------------------------------------+
|
|
0 8 12 16 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RILU format: <insn> R1,U2</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+------------------------------------+
|
|
| OpCode | R1 |OpCd| U2 |
|
|
+--------+----+----+------------------------------------+
|
|
0 8 12 16 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RIS format: <insn> R1,I2,M3,D4(B4)</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+--------+--------+
|
|
| OpCode | R1 | M3 | B4 | D4 | I2 | Opcode |
|
|
+--------+----+----+----+-------------+--------+--------+
|
|
0 8 12 16 20 32 36 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RR format: <insn> R1,R2</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+
|
|
| OpCode | R1 | R2 |
|
|
+--------+----+----+
|
|
0 8 12 15
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RRE format: <insn> R1,R2</code></dt>
|
|
<dd><pre class="verbatim">+------------------+--------+----+----+
|
|
| OpCode |////////| R1 | R2 |
|
|
+------------------+--------+----+----+
|
|
0 16 24 28 31
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RRF format: <insn> R1,R2,R3,M4</code></dt>
|
|
<dd><pre class="verbatim">+------------------+----+----+----+----+
|
|
| OpCode | R3 | M4 | R1 | R2 |
|
|
+------------------+----+----+----+----+
|
|
0 16 20 24 28 31
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RRS format: <insn> R1,R2,M3,D4(B4)</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+----+----+--------+
|
|
| OpCode | R1 | R3 | B4 | D4 | M3 |////| OpCode |
|
|
+--------+----+----+----+-------------+----+----+--------+
|
|
0 8 12 16 20 32 36 40 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RS format: <insn> R1,R3,D2(B2)</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+
|
|
| OpCode | R1 | R3 | B2 | D2 |
|
|
+--------+----+----+----+-------------+
|
|
0 8 12 16 20 31
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RSE format: <insn> R1,R3,D2(B2)</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+--------+--------+
|
|
| OpCode | R1 | R3 | B2 | D2 |////////| OpCode |
|
|
+--------+----+----+----+-------------+--------+--------+
|
|
0 8 12 16 20 32 40 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RSI format: <insn> R1,R3,I2</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+------------------------------------+
|
|
| OpCode | R1 | R3 | I2 |
|
|
+--------+----+----+------------------------------------+
|
|
0 8 12 16 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RSY format: <insn> R1,R3,D2(B2)</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+--------+--------+
|
|
| OpCode | R1 | R3 | B2 | DL2 | DH2 | OpCode |
|
|
+--------+----+----+----+-------------+--------+--------+
|
|
0 8 12 16 20 32 40 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RX format: <insn> R1,D2(X2,B2)</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+
|
|
| OpCode | R1 | X2 | B2 | D2 |
|
|
+--------+----+----+----+-------------+
|
|
0 8 12 16 20 31
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RXE format: <insn> R1,D2(X2,B2)</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+--------+--------+
|
|
| OpCode | R1 | X2 | B2 | D2 |////////| OpCode |
|
|
+--------+----+----+----+-------------+--------+--------+
|
|
0 8 12 16 20 32 40 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RXF format: <insn> R1,R3,D2(X2,B2)</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+----+---+--------+
|
|
| OpCode | R3 | X2 | B2 | D2 | R1 |///| OpCode |
|
|
+--------+----+----+----+-------------+----+---+--------+
|
|
0 8 12 16 20 32 36 40 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>RXY format: <insn> R1,D2(X2,B2)</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+--------+--------+
|
|
| OpCode | R1 | X2 | B2 | DL2 | DH2 | OpCode |
|
|
+--------+----+----+----+-------------+--------+--------+
|
|
0 8 12 16 20 32 36 40 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>S format: <insn> D2(B2)</code></dt>
|
|
<dd><pre class="verbatim">+------------------+----+-------------+
|
|
| OpCode | B2 | D2 |
|
|
+------------------+----+-------------+
|
|
0 16 20 31
|
|
</pre>
|
|
</dd>
|
|
<dt><code>SI format: <insn> D1(B1),I2</code></dt>
|
|
<dd><pre class="verbatim">+--------+---------+----+-------------+
|
|
| OpCode | I2 | B1 | D1 |
|
|
+--------+---------+----+-------------+
|
|
0 8 16 20 31
|
|
</pre>
|
|
</dd>
|
|
<dt><code>SIY format: <insn> D1(B1),U2</code></dt>
|
|
<dd><pre class="verbatim">+--------+---------+----+-------------+--------+--------+
|
|
| OpCode | I2 | B1 | DL1 | DH1 | OpCode |
|
|
+--------+---------+----+-------------+--------+--------+
|
|
0 8 16 20 32 36 40 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>SIL format: <insn> D1(B1),I2</code></dt>
|
|
<dd><pre class="verbatim">+------------------+----+-------------+-----------------+
|
|
| OpCode | B1 | D1 | I2 |
|
|
+------------------+----+-------------+-----------------+
|
|
0 16 20 32 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>SS format: <insn> D1(R1,B1),D2(B3),R3</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+----+------------+
|
|
| OpCode | R1 | R3 | B1 | D1 | B2 | D2 |
|
|
+--------+----+----+----+-------------+----+------------+
|
|
0 8 12 16 20 32 36 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>SSE format: <insn> D1(B1),D2(B2)</code></dt>
|
|
<dd><pre class="verbatim">+------------------+----+-------------+----+------------+
|
|
| OpCode | B1 | D1 | B2 | D2 |
|
|
+------------------+----+-------------+----+------------+
|
|
0 8 12 16 20 32 36 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>SSF format: <insn> D1(B1),D2(B2),R3</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+----+------------+
|
|
| OpCode | R3 |OpCd| B1 | D1 | B2 | D2 |
|
|
+--------+----+----+----+-------------+----+------------+
|
|
0 8 12 16 20 32 36 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>VRV format: <insn> V1,D2(V2,B2),M3</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+----+------------+
|
|
| OpCode | V1 | V2 | B2 | D2 | M3 | Opcode |
|
|
+--------+----+----+----+-------------+----+------------+
|
|
0 8 12 16 20 32 36 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>VRI format: <insn> V1,V2,I3,M4,M5</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+-------------+----+----+------------+
|
|
| OpCode | V1 | V2 | I3 | M5 | M4 | Opcode |
|
|
+--------+----+----+-------------+----+----+------------+
|
|
0 8 12 16 28 32 36 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>VRX format: <insn> V1,D2(R2,B2),M3</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+----+------------+
|
|
| OpCode | V1 | R2 | B2 | D2 | M3 | Opcode |
|
|
+--------+----+----+----+-------------+----+------------+
|
|
0 8 12 16 20 32 36 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>VRS format: <insn> R1,V3,D2(B2),M4</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+-------------+----+------------+
|
|
| OpCode | R1 | V3 | B2 | D2 | M4 | Opcode |
|
|
+--------+----+----+----+-------------+----+------------+
|
|
0 8 12 16 20 32 36 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>VRR format: <insn> V1,V2,V3,M4,M5,M6</code></dt>
|
|
<dd><pre class="verbatim">+--------+----+----+----+---+----+----+----+------------+
|
|
| OpCode | V1 | V2 | V3 |///| M6 | M5 | M4 | Opcode |
|
|
+--------+----+----+----+---+----+----+----+------------+
|
|
0 8 12 16 24 28 32 36 47
|
|
</pre>
|
|
</dd>
|
|
<dt><code>VSI format: <insn> V1,D2(B2),I3</code></dt>
|
|
<dd><pre class="verbatim">+--------+---------+----+-------------+----+------------+
|
|
| OpCode | I3 | B2 | D2 | V1 | Opcode |
|
|
+--------+---------+----+-------------+----+------------+
|
|
0 8 16 20 32 36 47
|
|
</pre>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For the complete list of all instruction format variants see the
|
|
Principles of Operation manuals.
|
|
</p>
|
|
<hr>
|
|
<a name="s390-Aliases"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#s390-Operand-Modifier" accesskey="n" rel="next">s390 Operand Modifier</a>, Previous: <a href="#s390-Formats" accesskey="p" rel="previous">s390 Formats</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Instruction-Aliases"></a>
|
|
<h4 class="subsubsection">9.41.3.5 Instruction Aliases</h4>
|
|
<a name="index-instruction-aliases_002c-s390"></a>
|
|
<a name="index-s390-instruction-aliases"></a>
|
|
|
|
<p>A specific bit pattern can have multiple mnemonics, for example
|
|
the bit pattern ‘<samp>0xa7000000</samp>’ has the mnemonics ‘<samp>tmh</samp>’ and
|
|
‘<samp>tmlh</samp>’. In addition, there are a number of mnemonics recognized by
|
|
<code>as</code> that are not present in the Principles of Operation.
|
|
These are the short forms of the branch instructions, where the condition
|
|
code mask operand is encoded in the mnemonic. This is relevant for the
|
|
branch instructions, the compare and branch instructions, and the
|
|
compare and trap instructions.
|
|
</p>
|
|
<p>For the branch instructions there are 20 condition code strings that can
|
|
be used as part of the mnemonic in place of a mask operand in the instruction
|
|
format:
|
|
</p>
|
|
<div class="display">
|
|
<table>
|
|
<thead><tr><th width="30%"><pre class="display">instruction</pre></th><th width="30%"><pre class="display">short form</pre></th></tr></thead>
|
|
<tr><td width="30%"><pre class="display">bcr M1,R2</pre></td><td width="30%"><pre class="display">b<m>r R2</pre></td></tr>
|
|
<tr><td width="30%"><pre class="display">bc M1,D2(X2,B2)</pre></td><td width="30%"><pre class="display">b<m> D2(X2,B2)</pre></td></tr>
|
|
<tr><td width="30%"><pre class="display">brc M1,I2</pre></td><td width="30%"><pre class="display">j<m> I2</pre></td></tr>
|
|
<tr><td width="30%"><pre class="display">brcl M1,I2</pre></td><td width="30%"><pre class="display">jg<m> I2</pre></td></tr>
|
|
</table>
|
|
</div>
|
|
|
|
<p>In the mnemonic for a branch instruction the condition code string <m>
|
|
can be any of the following:
|
|
</p>
|
|
<div class="display">
|
|
<table>
|
|
<tr><td><pre class="display">o</pre></td><td><pre class="display">jump on overflow / if ones</pre></td></tr>
|
|
<tr><td><pre class="display">h</pre></td><td><pre class="display">jump on A high</pre></td></tr>
|
|
<tr><td><pre class="display">p</pre></td><td><pre class="display">jump on plus</pre></td></tr>
|
|
<tr><td><pre class="display">nle</pre></td><td><pre class="display">jump on not low or equal</pre></td></tr>
|
|
<tr><td><pre class="display">l</pre></td><td><pre class="display">jump on A low</pre></td></tr>
|
|
<tr><td><pre class="display">m</pre></td><td><pre class="display">jump on minus</pre></td></tr>
|
|
<tr><td><pre class="display">nhe</pre></td><td><pre class="display">jump on not high or equal</pre></td></tr>
|
|
<tr><td><pre class="display">lh</pre></td><td><pre class="display">jump on low or high</pre></td></tr>
|
|
<tr><td><pre class="display">ne</pre></td><td><pre class="display">jump on A not equal B</pre></td></tr>
|
|
<tr><td><pre class="display">nz</pre></td><td><pre class="display">jump on not zero / if not zeros</pre></td></tr>
|
|
<tr><td><pre class="display">e</pre></td><td><pre class="display">jump on A equal B</pre></td></tr>
|
|
<tr><td><pre class="display">z</pre></td><td><pre class="display">jump on zero / if zeroes</pre></td></tr>
|
|
<tr><td><pre class="display">nlh</pre></td><td><pre class="display">jump on not low or high</pre></td></tr>
|
|
<tr><td><pre class="display">he</pre></td><td><pre class="display">jump on high or equal</pre></td></tr>
|
|
<tr><td><pre class="display">nl</pre></td><td><pre class="display">jump on A not low</pre></td></tr>
|
|
<tr><td><pre class="display">nm</pre></td><td><pre class="display">jump on not minus / if not mixed</pre></td></tr>
|
|
<tr><td><pre class="display">le</pre></td><td><pre class="display">jump on low or equal</pre></td></tr>
|
|
<tr><td><pre class="display">nh</pre></td><td><pre class="display">jump on A not high</pre></td></tr>
|
|
<tr><td><pre class="display">np</pre></td><td><pre class="display">jump on not plus</pre></td></tr>
|
|
<tr><td><pre class="display">no</pre></td><td><pre class="display">jump on not overflow / if not ones</pre></td></tr>
|
|
</table>
|
|
</div>
|
|
|
|
<p>For the compare and branch, and compare and trap instructions there
|
|
are 12 condition code strings that can be used as part of the mnemonic in
|
|
place of a mask operand in the instruction format:
|
|
</p>
|
|
<div class="display">
|
|
<table>
|
|
<thead><tr><th width="40%"><pre class="display">instruction</pre></th><th width="40%"><pre class="display">short form</pre></th></tr></thead>
|
|
<tr><td width="40%"><pre class="display">crb R1,R2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">crb<m> R1,R2,D4(B4)</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">cgrb R1,R2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">cgrb<m> R1,R2,D4(B4)</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">crj R1,R2,M3,I4</pre></td><td width="40%"><pre class="display">crj<m> R1,R2,I4</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">cgrj R1,R2,M3,I4</pre></td><td width="40%"><pre class="display">cgrj<m> R1,R2,I4</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">cib R1,I2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">cib<m> R1,I2,D4(B4)</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">cgib R1,I2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">cgib<m> R1,I2,D4(B4)</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">cij R1,I2,M3,I4</pre></td><td width="40%"><pre class="display">cij<m> R1,I2,I4</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">cgij R1,I2,M3,I4</pre></td><td width="40%"><pre class="display">cgij<m> R1,I2,I4</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">crt R1,R2,M3</pre></td><td width="40%"><pre class="display">crt<m> R1,R2</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">cgrt R1,R2,M3</pre></td><td width="40%"><pre class="display">cgrt<m> R1,R2</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">cit R1,I2,M3</pre></td><td width="40%"><pre class="display">cit<m> R1,I2</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">cgit R1,I2,M3</pre></td><td width="40%"><pre class="display">cgit<m> R1,I2</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">clrb R1,R2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">clrb<m> R1,R2,D4(B4)</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">clgrb R1,R2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">clgrb<m> R1,R2,D4(B4)</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">clrj R1,R2,M3,I4</pre></td><td width="40%"><pre class="display">clrj<m> R1,R2,I4</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">clgrj R1,R2,M3,I4</pre></td><td width="40%"><pre class="display">clgrj<m> R1,R2,I4</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">clib R1,I2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">clib<m> R1,I2,D4(B4)</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">clgib R1,I2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">clgib<m> R1,I2,D4(B4)</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">clij R1,I2,M3,I4</pre></td><td width="40%"><pre class="display">clij<m> R1,I2,I4</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">clgij R1,I2,M3,I4</pre></td><td width="40%"><pre class="display">clgij<m> R1,I2,I4</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">clrt R1,R2,M3</pre></td><td width="40%"><pre class="display">clrt<m> R1,R2</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">clgrt R1,R2,M3</pre></td><td width="40%"><pre class="display">clgrt<m> R1,R2</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">clfit R1,I2,M3</pre></td><td width="40%"><pre class="display">clfit<m> R1,I2</pre></td></tr>
|
|
<tr><td width="40%"><pre class="display">clgit R1,I2,M3</pre></td><td width="40%"><pre class="display">clgit<m> R1,I2</pre></td></tr>
|
|
</table>
|
|
</div>
|
|
|
|
<p>In the mnemonic for a compare and branch and compare and trap instruction
|
|
the condition code string <m> can be any of the following:
|
|
</p>
|
|
<div class="display">
|
|
<table>
|
|
<tr><td><pre class="display">h</pre></td><td><pre class="display">jump on A high</pre></td></tr>
|
|
<tr><td><pre class="display">nle</pre></td><td><pre class="display">jump on not low or equal</pre></td></tr>
|
|
<tr><td><pre class="display">l</pre></td><td><pre class="display">jump on A low</pre></td></tr>
|
|
<tr><td><pre class="display">nhe</pre></td><td><pre class="display">jump on not high or equal</pre></td></tr>
|
|
<tr><td><pre class="display">ne</pre></td><td><pre class="display">jump on A not equal B</pre></td></tr>
|
|
<tr><td><pre class="display">lh</pre></td><td><pre class="display">jump on low or high</pre></td></tr>
|
|
<tr><td><pre class="display">e</pre></td><td><pre class="display">jump on A equal B</pre></td></tr>
|
|
<tr><td><pre class="display">nlh</pre></td><td><pre class="display">jump on not low or high</pre></td></tr>
|
|
<tr><td><pre class="display">nl</pre></td><td><pre class="display">jump on A not low</pre></td></tr>
|
|
<tr><td><pre class="display">he</pre></td><td><pre class="display">jump on high or equal</pre></td></tr>
|
|
<tr><td><pre class="display">nh</pre></td><td><pre class="display">jump on A not high</pre></td></tr>
|
|
<tr><td><pre class="display">le</pre></td><td><pre class="display">jump on low or equal</pre></td></tr>
|
|
</table>
|
|
</div>
|
|
|
|
<hr>
|
|
<a name="s390-Operand-Modifier"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#s390-Instruction-Marker" accesskey="n" rel="next">s390 Instruction Marker</a>, Previous: <a href="#s390-Aliases" accesskey="p" rel="previous">s390 Aliases</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Instruction-Operand-Modifier"></a>
|
|
<h4 class="subsubsection">9.41.3.6 Instruction Operand Modifier</h4>
|
|
<a name="index-instruction-operand-modifier_002c-s390"></a>
|
|
<a name="index-s390-instruction-operand-modifier"></a>
|
|
|
|
<p>If a symbol modifier is attached to a symbol in an expression for an
|
|
instruction operand field, the symbol term is replaced with a reference
|
|
to an object in the global offset table (GOT) or the procedure linkage
|
|
table (PLT). The following expressions are allowed:
|
|
‘<samp>symbol@modifier + constant</samp>’,
|
|
‘<samp>symbol@modifier + label + constant</samp>’, and
|
|
‘<samp>symbol@modifier - label + constant</samp>’.
|
|
The term ‘<samp>symbol</samp>’ is the symbol that will be entered into the GOT or
|
|
PLT, ‘<samp>label</samp>’ is a local label, and ‘<samp>constant</samp>’ is an arbitrary
|
|
expression that the assembler can evaluate to a constant value.
|
|
</p>
|
|
<p>The term ‘<samp>(symbol + constant1)@modifier +/- label + constant2</samp>’
|
|
is also accepted but a warning message is printed and the term is
|
|
converted to ‘<samp>symbol@modifier +/- label + constant1 + constant2</samp>’.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>@got</code></dt>
|
|
<dt><code>@got12</code></dt>
|
|
<dd><p>The @got modifier can be used for displacement fields, 16-bit immediate
|
|
fields and 32-bit pc-relative immediate fields. The @got12 modifier is
|
|
synonym to @got. The symbol is added to the GOT. For displacement
|
|
fields and 16-bit immediate fields the symbol term is replaced with
|
|
the offset from the start of the GOT to the GOT slot for the symbol.
|
|
For a 32-bit pc-relative field the pc-relative offset to the GOT
|
|
slot from the current instruction address is used.
|
|
</p></dd>
|
|
<dt><code>@gotent</code></dt>
|
|
<dd><p>The @gotent modifier can be used for 32-bit pc-relative immediate fields.
|
|
The symbol is added to the GOT and the symbol term is replaced with
|
|
the pc-relative offset from the current instruction to the GOT slot for the
|
|
symbol.
|
|
</p></dd>
|
|
<dt><code>@gotoff</code></dt>
|
|
<dd><p>The @gotoff modifier can be used for 16-bit immediate fields. The symbol
|
|
term is replaced with the offset from the start of the GOT to the
|
|
address of the symbol.
|
|
</p></dd>
|
|
<dt><code>@gotplt</code></dt>
|
|
<dd><p>The @gotplt modifier can be used for displacement fields, 16-bit immediate
|
|
fields, and 32-bit pc-relative immediate fields. A procedure linkage
|
|
table entry is generated for the symbol and a jump slot for the symbol
|
|
is added to the GOT. For displacement fields and 16-bit immediate
|
|
fields the symbol term is replaced with the offset from the start of the
|
|
GOT to the jump slot for the symbol. For a 32-bit pc-relative field
|
|
the pc-relative offset to the jump slot from the current instruction
|
|
address is used.
|
|
</p></dd>
|
|
<dt><code>@plt</code></dt>
|
|
<dd><p>The @plt modifier can be used for 16-bit and 32-bit pc-relative immediate
|
|
fields. A procedure linkage table entry is generated for the symbol.
|
|
The symbol term is replaced with the relative offset from the current
|
|
instruction to the PLT entry for the symbol.
|
|
</p></dd>
|
|
<dt><code>@pltoff</code></dt>
|
|
<dd><p>The @pltoff modifier can be used for 16-bit immediate fields. The symbol
|
|
term is replaced with the offset from the start of the PLT to the address
|
|
of the symbol.
|
|
</p></dd>
|
|
<dt><code>@gotntpoff</code></dt>
|
|
<dd><p>The @gotntpoff modifier can be used for displacement fields. The symbol
|
|
is added to the static TLS block and the negated offset to the symbol
|
|
in the static TLS block is added to the GOT. The symbol term is replaced
|
|
with the offset to the GOT slot from the start of the GOT.
|
|
</p></dd>
|
|
<dt><code>@indntpoff</code></dt>
|
|
<dd><p>The @indntpoff modifier can be used for 32-bit pc-relative immediate
|
|
fields. The symbol is added to the static TLS block and the negated offset
|
|
to the symbol in the static TLS block is added to the GOT. The symbol term
|
|
is replaced with the pc-relative offset to the GOT slot from the current
|
|
instruction address.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For more information about the thread local storage modifiers
|
|
‘<samp>gotntpoff</samp>’ and ‘<samp>indntpoff</samp>’ see the ELF extension documentation
|
|
‘<samp>ELF Handling For Thread-Local Storage</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="s390-Instruction-Marker"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#s390-Literal-Pool-Entries" accesskey="n" rel="next">s390 Literal Pool Entries</a>, Previous: <a href="#s390-Operand-Modifier" accesskey="p" rel="previous">s390 Operand Modifier</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Instruction-Marker"></a>
|
|
<h4 class="subsubsection">9.41.3.7 Instruction Marker</h4>
|
|
<a name="index-instruction-marker_002c-s390"></a>
|
|
<a name="index-s390-instruction-marker"></a>
|
|
|
|
<p>The thread local storage instruction markers are used by the linker to
|
|
perform code optimization.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>:tls_load</code></dt>
|
|
<dd><p>The :tls_load marker is used to flag the load instruction in the initial
|
|
exec TLS model that retrieves the offset from the thread pointer to a
|
|
thread local storage variable from the GOT.
|
|
</p></dd>
|
|
<dt><code>:tls_gdcall</code></dt>
|
|
<dd><p>The :tls_gdcall marker is used to flag the branch-and-save instruction to
|
|
the __tls_get_offset function in the global dynamic TLS model.
|
|
</p></dd>
|
|
<dt><code>:tls_ldcall</code></dt>
|
|
<dd><p>The :tls_ldcall marker is used to flag the branch-and-save instruction to
|
|
the __tls_get_offset function in the local dynamic TLS model.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For more information about the thread local storage instruction marker
|
|
and the linker optimizations see the ELF extension documentation
|
|
‘<samp>ELF Handling For Thread-Local Storage</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="s390-Literal-Pool-Entries"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#s390-Instruction-Marker" accesskey="p" rel="previous">s390 Instruction Marker</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Literal-Pool-Entries"></a>
|
|
<h4 class="subsubsection">9.41.3.8 Literal Pool Entries</h4>
|
|
<a name="index-literal-pool-entries_002c-s390"></a>
|
|
<a name="index-s390-literal-pool-entries"></a>
|
|
|
|
<p>A literal pool is a collection of values. To access the values a pointer
|
|
to the literal pool is loaded to a register, the literal pool register.
|
|
Usually, register %r13 is used as the literal pool register
|
|
(<a href="#s390-Register">s390 Register</a>). Literal pool entries are created by adding the
|
|
suffix :lit1, :lit2, :lit4, or :lit8 to the end of an expression for an
|
|
instruction operand. The expression is added to the literal pool and the
|
|
operand is replaced with the offset to the literal in the literal pool.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>:lit1</code></dt>
|
|
<dd><p>The literal pool entry is created as an 8-bit value. An operand modifier
|
|
must not be used for the original expression.
|
|
</p></dd>
|
|
<dt><code>:lit2</code></dt>
|
|
<dd><p>The literal pool entry is created as a 16 bit value. The operand modifier
|
|
@got may be used in the original expression. The term ‘<samp>x@got:lit2</samp>’
|
|
will put the got offset for the global symbol x to the literal pool as
|
|
16 bit value.
|
|
</p></dd>
|
|
<dt><code>:lit4</code></dt>
|
|
<dd><p>The literal pool entry is created as a 32-bit value. The operand modifier
|
|
@got and @plt may be used in the original expression. The term
|
|
‘<samp>x@got:lit4</samp>’ will put the got offset for the global symbol x to the
|
|
literal pool as a 32-bit value. The term ‘<samp>x@plt:lit4</samp>’ will put the
|
|
plt offset for the global symbol x to the literal pool as a 32-bit value.
|
|
</p></dd>
|
|
<dt><code>:lit8</code></dt>
|
|
<dd><p>The literal pool entry is created as a 64-bit value. The operand modifier
|
|
@got and @plt may be used in the original expression. The term
|
|
‘<samp>x@got:lit8</samp>’ will put the got offset for the global symbol x to the
|
|
literal pool as a 64-bit value. The term ‘<samp>x@plt:lit8</samp>’ will put the
|
|
plt offset for the global symbol x to the literal pool as a 64-bit value.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The assembler directive ‘<samp>.ltorg</samp>’ is used to emit all literal pool
|
|
entries to the current position.
|
|
</p>
|
|
<hr>
|
|
<a name="s390-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#s390-Floating-Point" accesskey="n" rel="next">s390 Floating Point</a>, Previous: <a href="#s390-Syntax" accesskey="p" rel="previous">s390 Syntax</a>, Up: <a href="#S_002f390_002dDependent" accesskey="u" rel="up">S/390-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-Directives-7"></a>
|
|
<h4 class="subsection">9.41.4 Assembler Directives</h4>
|
|
|
|
<p><code>as</code> for s390 supports all of the standard ELF
|
|
assembler directives as outlined in the main part of this document.
|
|
Some directives have been extended and there are some additional
|
|
directives, which are only available for the s390 <code>as</code>.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002einsn-directive_002c-s390"></a>
|
|
</dd>
|
|
<dt><code>.insn</code></dt>
|
|
<dd><p>This directive permits the numeric representation of an instructions
|
|
and makes the assembler insert the operands according to one of the
|
|
instructions formats for ‘<samp>.insn</samp>’ (<a href="#s390-Formats">s390 Formats</a>).
|
|
For example, the instruction ‘<samp>l %r1,24(%r15)</samp>’ could be written as
|
|
‘<samp>.insn rx,0x58000000,%r1,24(%r15)</samp>’.
|
|
<a name="index-_002eshort-directive_002c-s390"></a>
|
|
<a name="index-_002elong-directive_002c-s390"></a>
|
|
<a name="index-_002equad-directive_002c-s390"></a>
|
|
</p></dd>
|
|
<dt><code>.short</code></dt>
|
|
<dt><code>.long</code></dt>
|
|
<dt><code>.quad</code></dt>
|
|
<dd><p>This directive places one or more 16-bit (.short), 32-bit (.long), or
|
|
64-bit (.quad) values into the current section. If an ELF or TLS modifier
|
|
is used only the following expressions are allowed:
|
|
‘<samp>symbol@modifier + constant</samp>’,
|
|
‘<samp>symbol@modifier + label + constant</samp>’, and
|
|
‘<samp>symbol@modifier - label + constant</samp>’.
|
|
The following modifiers are available:
|
|
</p><dl compact="compact">
|
|
<dt><code>@got</code></dt>
|
|
<dt><code>@got12</code></dt>
|
|
<dd><p>The @got modifier can be used for .short, .long and .quad. The @got12
|
|
modifier is synonym to @got. The symbol is added to the GOT. The symbol
|
|
term is replaced with offset from the start of the GOT to the GOT slot for
|
|
the symbol.
|
|
</p></dd>
|
|
<dt><code>@gotoff</code></dt>
|
|
<dd><p>The @gotoff modifier can be used for .short, .long and .quad. The symbol
|
|
term is replaced with the offset from the start of the GOT to the address
|
|
of the symbol.
|
|
</p></dd>
|
|
<dt><code>@gotplt</code></dt>
|
|
<dd><p>The @gotplt modifier can be used for .long and .quad. A procedure linkage
|
|
table entry is generated for the symbol and a jump slot for the symbol
|
|
is added to the GOT. The symbol term is replaced with the offset from the
|
|
start of the GOT to the jump slot for the symbol.
|
|
</p></dd>
|
|
<dt><code>@plt</code></dt>
|
|
<dd><p>The @plt modifier can be used for .long and .quad. A procedure linkage
|
|
table entry us generated for the symbol. The symbol term is replaced with
|
|
the address of the PLT entry for the symbol.
|
|
</p></dd>
|
|
<dt><code>@pltoff</code></dt>
|
|
<dd><p>The @pltoff modifier can be used for .short, .long and .quad. The symbol
|
|
term is replaced with the offset from the start of the PLT to the address
|
|
of the symbol.
|
|
</p></dd>
|
|
<dt><code>@tlsgd</code></dt>
|
|
<dt><code>@tlsldm</code></dt>
|
|
<dd><p>The @tlsgd and @tlsldm modifier can be used for .long and .quad. A
|
|
tls_index structure for the symbol is added to the GOT. The symbol term is
|
|
replaced with the offset from the start of the GOT to the tls_index structure.
|
|
</p></dd>
|
|
<dt><code>@gotntpoff</code></dt>
|
|
<dt><code>@indntpoff</code></dt>
|
|
<dd><p>The @gotntpoff and @indntpoff modifier can be used for .long and .quad.
|
|
The symbol is added to the static TLS block and the negated offset to the
|
|
symbol in the static TLS block is added to the GOT. For @gotntpoff the
|
|
symbol term is replaced with the offset from the start of the GOT to the
|
|
GOT slot, for @indntpoff the symbol term is replaced with the address
|
|
of the GOT slot.
|
|
</p></dd>
|
|
<dt><code>@dtpoff</code></dt>
|
|
<dd><p>The @dtpoff modifier can be used for .long and .quad. The symbol term
|
|
is replaced with the offset of the symbol relative to the start of the
|
|
TLS block it is contained in.
|
|
</p></dd>
|
|
<dt><code>@ntpoff</code></dt>
|
|
<dd><p>The @ntpoff modifier can be used for .long and .quad. The symbol term
|
|
is replaced with the offset of the symbol relative to the TCB pointer.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For more information about the thread local storage modifiers see the
|
|
ELF extension documentation ‘<samp>ELF Handling For Thread-Local Storage</samp>’.
|
|
</p>
|
|
<a name="index-_002eltorg-directive_002c-s390"></a>
|
|
</dd>
|
|
<dt><code>.ltorg</code></dt>
|
|
<dd><p>This directive causes the current contents of the literal pool to be
|
|
dumped to the current location (<a href="#s390-Literal-Pool-Entries">s390 Literal Pool Entries</a>).
|
|
</p>
|
|
<a name="index-_002emachine-directive_002c-s390"></a>
|
|
</dd>
|
|
<dt><code>.machine <var>STRING</var>[+<var>EXTENSION</var>]…</code></dt>
|
|
<dd>
|
|
<p>This directive allows changing the machine for which code is
|
|
generated. <code>string</code> may be any of the <code>-march=</code>
|
|
selection options, or <code>push</code>, or <code>pop</code>. <code>.machine
|
|
push</code> saves the currently selected cpu, which may be restored with
|
|
<code>.machine pop</code>. Be aware that the cpu string has to be put
|
|
into double quotes in case it contains characters not appropriate
|
|
for identifiers. So you have to write <code>"z9-109"</code> instead of
|
|
just <code>z9-109</code>. Extensions can be specified after the cpu
|
|
name, separated by plus characters. Valid extensions are:
|
|
<code>htm</code>,
|
|
<code>nohtm</code>,
|
|
<code>vx</code>,
|
|
<code>novx</code>.
|
|
They extend the basic instruction set with features from a higher
|
|
cpu level, or remove support for a feature from the given cpu
|
|
level.
|
|
</p>
|
|
<p>Example: <code>z13+nohtm</code> allows all instructions of the z13 cpu
|
|
except instructions from the HTM facility.
|
|
</p>
|
|
<a name="index-_002emachinemode-directive_002c-s390"></a>
|
|
</dd>
|
|
<dt><code>.machinemode string</code></dt>
|
|
<dd><p>This directive allows one to change the architecture mode for which code
|
|
is being generated. <code>string</code> may be <code>esa</code>, <code>zarch</code>,
|
|
<code>zarch_nohighgprs</code>, <code>push</code>, or <code>pop</code>.
|
|
<code>.machinemode zarch_nohighgprs</code> can be used to prevent the
|
|
<code>highgprs</code> flag from being set in the ELF header of the output
|
|
file. This is useful in situations where the code is gated with a
|
|
runtime check which makes sure that the code is only executed on
|
|
kernels providing the <code>highgprs</code> feature.
|
|
<code>.machinemode push</code> saves the currently selected mode, which may
|
|
be restored with <code>.machinemode pop</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="s390-Floating-Point"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#s390-Directives" accesskey="p" rel="previous">s390 Directives</a>, Up: <a href="#S_002f390_002dDependent" accesskey="u" rel="up">S/390-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-13"></a>
|
|
<h4 class="subsection">9.41.5 Floating Point</h4>
|
|
<a name="index-floating-point_002c-s390"></a>
|
|
<a name="index-s390-floating-point"></a>
|
|
|
|
<p>The assembler recognizes both the <small>IEEE</small> floating-point instruction and
|
|
the hexadecimal floating-point instructions. The floating-point constructors
|
|
‘<samp>.float</samp>’, ‘<samp>.single</samp>’, and ‘<samp>.double</samp>’ always emit the
|
|
<small>IEEE</small> format. To assemble hexadecimal floating-point constants the
|
|
‘<samp>.long</samp>’ and ‘<samp>.quad</samp>’ directives must be used.
|
|
</p>
|
|
<hr>
|
|
<a name="SCORE_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#SH_002dDependent" accesskey="n" rel="next">SH-Dependent</a>, Previous: <a href="#S_002f390_002dDependent" accesskey="p" rel="previous">S/390-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="SCORE-Dependent-Features"></a>
|
|
<h3 class="section">9.42 SCORE Dependent Features</h3>
|
|
|
|
<a name="index-SCORE-processor"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#SCORE_002dOpts" accesskey="1">SCORE-Opts</a>:</td><td> </td><td align="left" valign="top">Assembler options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#SCORE_002dPseudo" accesskey="2">SCORE-Pseudo</a>:</td><td> </td><td align="left" valign="top">SCORE Assembler Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#SCORE_002dSyntax" accesskey="3">SCORE-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="SCORE_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#SCORE_002dPseudo" accesskey="n" rel="next">SCORE-Pseudo</a>, Up: <a href="#SCORE_002dDependent" accesskey="u" rel="up">SCORE-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-22"></a>
|
|
<h4 class="subsection">9.42.1 Options</h4>
|
|
|
|
<a name="index-options-for-SCORE"></a>
|
|
<a name="index-SCORE-options"></a>
|
|
<a name="index-architectures_002c-SCORE"></a>
|
|
<a name="index-SCORE-architectures"></a>
|
|
|
|
<p>The following table lists all available SCORE options.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>-G <var>num</var></code></dt>
|
|
<dd><p>This option sets the largest size of an object that can be referenced
|
|
implicitly with the <code>gp</code> register. The default value is 8.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-EB</code></dt>
|
|
<dd><p>Assemble code for a big-endian cpu
|
|
</p>
|
|
</dd>
|
|
<dt><code>-EL</code></dt>
|
|
<dd><p>Assemble code for a little-endian cpu
|
|
</p>
|
|
</dd>
|
|
<dt><code>-FIXDD</code></dt>
|
|
<dd><p>Assemble code for fix data dependency
|
|
</p>
|
|
</dd>
|
|
<dt><code>-NWARN</code></dt>
|
|
<dd><p>Assemble code for no warning message for fix data dependency
|
|
</p>
|
|
</dd>
|
|
<dt><code>-SCORE5</code></dt>
|
|
<dd><p>Assemble code for target is SCORE5
|
|
</p>
|
|
</dd>
|
|
<dt><code>-SCORE5U</code></dt>
|
|
<dd><p>Assemble code for target is SCORE5U
|
|
</p>
|
|
</dd>
|
|
<dt><code>-SCORE7</code></dt>
|
|
<dd><p>Assemble code for target is SCORE7, this is default setting
|
|
</p>
|
|
</dd>
|
|
<dt><code>-SCORE3</code></dt>
|
|
<dd><p>Assemble code for target is SCORE3
|
|
</p>
|
|
</dd>
|
|
<dt><code>-march=score7</code></dt>
|
|
<dd><p>Assemble code for target is SCORE7, this is default setting
|
|
</p>
|
|
</dd>
|
|
<dt><code>-march=score3</code></dt>
|
|
<dd><p>Assemble code for target is SCORE3
|
|
</p>
|
|
</dd>
|
|
<dt><code>-USE_R1</code></dt>
|
|
<dd><p>Assemble code for no warning message when using temp register r1
|
|
</p>
|
|
</dd>
|
|
<dt><code>-KPIC</code></dt>
|
|
<dd><p>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.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-O0</code></dt>
|
|
<dd><p>Assembler will not perform any optimizations
|
|
</p>
|
|
</dd>
|
|
<dt><code>-V</code></dt>
|
|
<dd><p>Sunplus release version
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="SCORE_002dPseudo"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#SCORE_002dSyntax" accesskey="n" rel="next">SCORE-Syntax</a>, Previous: <a href="#SCORE_002dOpts" accesskey="p" rel="previous">SCORE-Opts</a>, Up: <a href="#SCORE_002dDependent" accesskey="u" rel="up">SCORE-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="SCORE-Assembler-Directives"></a>
|
|
<h4 class="subsection">9.42.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 "frame-register", "offset", "return-pc-register"</code></dt>
|
|
<dd><p>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".
|
|
</p>
|
|
</dd>
|
|
<dt><code>.mask "bitmask", "frameoffset"</code></dt>
|
|
<dd><p>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.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.ent "proc-name"</code></dt>
|
|
<dd><p>Set the beginning of the procedure "proc_name". 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>
|
|
<a name="SCORE_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#SCORE_002dPseudo" accesskey="p" rel="previous">SCORE-Pseudo</a>, Up: <a href="#SCORE_002dDependent" accesskey="u" rel="up">SCORE-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="SCORE-Syntax"></a>
|
|
<h4 class="subsection">9.42.3 SCORE Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#SCORE_002dChars" accesskey="1">SCORE-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="SCORE_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#SCORE_002dSyntax" accesskey="u" rel="up">SCORE-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-33"></a>
|
|
<h4 class="subsubsection">9.42.3.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-SCORE"></a>
|
|
<a name="index-SCORE-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>#</samp>’ appearing anywhere on a line indicates the
|
|
start of a comment that extends to the end of that line.
|
|
</p>
|
|
<p>If a ‘<samp>#</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 (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-SCORE"></a>
|
|
<a name="index-statement-separator_002c-SCORE"></a>
|
|
<a name="index-SCORE-line-separator"></a>
|
|
<p>The ‘<samp>;</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
<hr>
|
|
<a name="SH_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Sparc_002dDependent" accesskey="n" rel="next">Sparc-Dependent</a>, Previous: <a href="#SCORE_002dDependent" accesskey="p" rel="previous">SCORE-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Renesas-_002f-SuperH-SH-Dependent-Features"></a>
|
|
<h3 class="section">9.43 Renesas / SuperH SH Dependent Features</h3>
|
|
|
|
<a name="index-SH-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#SH-Options" accesskey="1">SH Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#SH-Syntax" accesskey="2">SH Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#SH-Floating-Point" accesskey="3">SH Floating Point</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#SH-Directives" accesskey="4">SH Directives</a>:</td><td> </td><td align="left" valign="top">SH Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#SH-Opcodes" accesskey="5">SH Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="SH-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#SH-Syntax" accesskey="n" rel="next">SH Syntax</a>, Up: <a href="#SH_002dDependent" accesskey="u" rel="up">SH-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-23"></a>
|
|
<h4 class="subsection">9.43.1 Options</h4>
|
|
|
|
<a name="index-SH-options"></a>
|
|
<a name="index-options_002c-SH"></a>
|
|
<p><code>as</code> has following command-line options for the Renesas
|
|
(formerly Hitachi) / SuperH SH family.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002d_002dlittle"></a>
|
|
<a name="index-_002d_002dbig"></a>
|
|
<a name="index-_002d_002drelax"></a>
|
|
<a name="index-_002d_002dsmall"></a>
|
|
<a name="index-_002d_002ddsp"></a>
|
|
<a name="index-_002d_002drenesas"></a>
|
|
<a name="index-_002d_002dallow_002dreg_002dprefix"></a>
|
|
|
|
</dd>
|
|
<dt><code>--little</code></dt>
|
|
<dd><p>Generate little endian code.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--big</code></dt>
|
|
<dd><p>Generate big endian code.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--relax</code></dt>
|
|
<dd><p>Alter jump instructions for long displacements.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--small</code></dt>
|
|
<dd><p>Align sections to 4 byte boundaries, not 16.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--dsp</code></dt>
|
|
<dd><p>Enable sh-dsp insns, and disable sh3e / sh4 insns.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--renesas</code></dt>
|
|
<dd><p>Disable optimization with section symbol for compatibility with
|
|
Renesas assembler.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--allow-reg-prefix</code></dt>
|
|
<dd><p>Allow ’$’ as a register name prefix.
|
|
</p>
|
|
<a name="index-_002d_002dfdpic"></a>
|
|
</dd>
|
|
<dt><code>--fdpic</code></dt>
|
|
<dd><p>Generate an FDPIC object file.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--isa=sh4 | sh4a</code></dt>
|
|
<dd><p>Specify the sh4 or sh4a instruction set.
|
|
</p></dd>
|
|
<dt><code>--isa=dsp</code></dt>
|
|
<dd><p>Enable sh-dsp insns, and disable sh3e / sh4 insns.
|
|
</p></dd>
|
|
<dt><code>--isa=fp</code></dt>
|
|
<dd><p>Enable sh2e, sh3e, sh4, and sh4a insn sets.
|
|
</p></dd>
|
|
<dt><code>--isa=all</code></dt>
|
|
<dd><p>Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-h-tick-hex</code></dt>
|
|
<dd><p>Support H’00 style hex constants in addition to 0x00 style.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="SH-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#SH-Floating-Point" accesskey="n" rel="next">SH Floating Point</a>, Previous: <a href="#SH-Options" accesskey="p" rel="previous">SH Options</a>, Up: <a href="#SH_002dDependent" accesskey="u" rel="up">SH-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-27"></a>
|
|
<h4 class="subsection">9.43.2 Syntax</h4>
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#SH_002dChars" accesskey="1">SH-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#SH_002dRegs" accesskey="2">SH-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#SH_002dAddressing" accesskey="3">SH-Addressing</a>:</td><td> </td><td align="left" valign="top">Addressing Modes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="SH_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#SH_002dRegs" accesskey="n" rel="next">SH-Regs</a>, Up: <a href="#SH-Syntax" accesskey="u" rel="up">SH Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-34"></a>
|
|
<h4 class="subsubsection">9.43.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-SH"></a>
|
|
<a name="index-SH-line-comment-character"></a>
|
|
<p>‘<samp>!</samp>’ is the line comment character.
|
|
</p>
|
|
<a name="index-line-separator_002c-SH"></a>
|
|
<a name="index-statement-separator_002c-SH"></a>
|
|
<a name="index-SH-line-separator"></a>
|
|
<p>You can use ‘<samp>;</samp>’ instead of a newline to separate statements.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line then the whole
|
|
line is treated as a comment, but in this case the line could also be
|
|
a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-symbol-names_002c-_0024-in-3"></a>
|
|
<a name="index-_0024-in-symbol-names-3"></a>
|
|
<p>Since ‘<samp>$</samp>’ has no special meaning, you may use it in symbol names.
|
|
</p>
|
|
<hr>
|
|
<a name="SH_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#SH_002dAddressing" accesskey="n" rel="next">SH-Addressing</a>, Previous: <a href="#SH_002dChars" accesskey="p" rel="previous">SH-Chars</a>, Up: <a href="#SH-Syntax" accesskey="u" rel="up">SH Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-15"></a>
|
|
<h4 class="subsubsection">9.43.2.2 Register Names</h4>
|
|
|
|
<a name="index-SH-registers"></a>
|
|
<a name="index-registers_002c-SH"></a>
|
|
<p>You can use the predefined symbols ‘<samp>r0</samp>’, ‘<samp>r1</samp>’, ‘<samp>r2</samp>’,
|
|
‘<samp>r3</samp>’, ‘<samp>r4</samp>’, ‘<samp>r5</samp>’, ‘<samp>r6</samp>’, ‘<samp>r7</samp>’, ‘<samp>r8</samp>’,
|
|
‘<samp>r9</samp>’, ‘<samp>r10</samp>’, ‘<samp>r11</samp>’, ‘<samp>r12</samp>’, ‘<samp>r13</samp>’, ‘<samp>r14</samp>’,
|
|
and ‘<samp>r15</samp>’ to refer to the SH registers.
|
|
</p>
|
|
<p>The SH also has these control registers:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>pr</code></dt>
|
|
<dd><p>procedure register (holds return address)
|
|
</p>
|
|
</dd>
|
|
<dt><code>pc</code></dt>
|
|
<dd><p>program counter
|
|
</p>
|
|
</dd>
|
|
<dt><code>mach</code></dt>
|
|
<dt><code>macl</code></dt>
|
|
<dd><p>high and low multiply accumulator registers
|
|
</p>
|
|
</dd>
|
|
<dt><code>sr</code></dt>
|
|
<dd><p>status register
|
|
</p>
|
|
</dd>
|
|
<dt><code>gbr</code></dt>
|
|
<dd><p>global base register
|
|
</p>
|
|
</dd>
|
|
<dt><code>vbr</code></dt>
|
|
<dd><p>vector base register (for interrupt vectors)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="SH_002dAddressing"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#SH_002dRegs" accesskey="p" rel="previous">SH-Regs</a>, Up: <a href="#SH-Syntax" accesskey="u" rel="up">SH Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Addressing-Modes-4"></a>
|
|
<h4 class="subsubsection">9.43.2.3 Addressing Modes</h4>
|
|
|
|
<a name="index-addressing-modes_002c-SH"></a>
|
|
<a name="index-SH-addressing-modes"></a>
|
|
<p><code>as</code> understands the following addressing modes for the SH.
|
|
<code>R<var>n</var></code> in the following refers to any of the numbered
|
|
registers, but <em>not</em> the control registers.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>R<var>n</var></code></dt>
|
|
<dd><p>Register direct
|
|
</p>
|
|
</dd>
|
|
<dt><code>@R<var>n</var></code></dt>
|
|
<dd><p>Register indirect
|
|
</p>
|
|
</dd>
|
|
<dt><code>@-R<var>n</var></code></dt>
|
|
<dd><p>Register indirect with pre-decrement
|
|
</p>
|
|
</dd>
|
|
<dt><code>@R<var>n</var>+</code></dt>
|
|
<dd><p>Register indirect with post-increment
|
|
</p>
|
|
</dd>
|
|
<dt><code>@(<var>disp</var>, R<var>n</var>)</code></dt>
|
|
<dd><p>Register indirect with displacement
|
|
</p>
|
|
</dd>
|
|
<dt><code>@(R0, R<var>n</var>)</code></dt>
|
|
<dd><p>Register indexed
|
|
</p>
|
|
</dd>
|
|
<dt><code>@(<var>disp</var>, GBR)</code></dt>
|
|
<dd><p><code>GBR</code> offset
|
|
</p>
|
|
</dd>
|
|
<dt><code>@(R0, GBR)</code></dt>
|
|
<dd><p>GBR indexed
|
|
</p>
|
|
</dd>
|
|
<dt><code><var>addr</var></code></dt>
|
|
<dt><code>@(<var>disp</var>, PC)</code></dt>
|
|
<dd><p>PC relative address (for branch or for addressing memory). The
|
|
<code>as</code> implementation allows you to use the simpler form
|
|
<var>addr</var> anywhere a PC relative address is called for; the alternate
|
|
form is supported for compatibility with other assemblers.
|
|
</p>
|
|
</dd>
|
|
<dt><code>#<var>imm</var></code></dt>
|
|
<dd><p>Immediate data
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="SH-Floating-Point"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#SH-Directives" accesskey="n" rel="next">SH Directives</a>, Previous: <a href="#SH-Syntax" accesskey="p" rel="previous">SH Syntax</a>, Up: <a href="#SH_002dDependent" accesskey="u" rel="up">SH-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-14"></a>
|
|
<h4 class="subsection">9.43.3 Floating Point</h4>
|
|
|
|
<a name="index-floating-point_002c-SH-_0028IEEE_0029"></a>
|
|
<a name="index-SH-floating-point-_0028IEEE_0029"></a>
|
|
<p>SH2E, SH3E and SH4 groups have on-chip floating-point unit (FPU). Other
|
|
SH groups can use <code>.float</code> directive to generate <small>IEEE</small>
|
|
floating-point numbers.
|
|
</p>
|
|
<p>SH2E and SH3E support single-precision floating point calculations as
|
|
well as entirely PCAPI compatible emulation of double-precision
|
|
floating point calculations. SH2E and SH3E instructions are a subset of
|
|
the floating point calculations conforming to the IEEE754 standard.
|
|
</p>
|
|
<p>In addition to single-precision and double-precision floating-point
|
|
operation capability, the on-chip FPU of SH4 has a 128-bit graphic
|
|
engine that enables 32-bit floating-point data to be processed 128
|
|
bits at a time. It also supports 4 * 4 array operations and inner
|
|
product operations. Also, a superscalar architecture is employed that
|
|
enables simultaneous execution of two instructions (including FPU
|
|
instructions), providing performance of up to twice that of
|
|
conventional architectures at the same frequency.
|
|
</p>
|
|
<hr>
|
|
<a name="SH-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#SH-Opcodes" accesskey="n" rel="next">SH Opcodes</a>, Previous: <a href="#SH-Floating-Point" accesskey="p" rel="previous">SH Floating Point</a>, Up: <a href="#SH_002dDependent" accesskey="u" rel="up">SH-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="SH-Machine-Directives"></a>
|
|
<h4 class="subsection">9.43.4 SH Machine Directives</h4>
|
|
|
|
<a name="index-SH-machine-directives"></a>
|
|
<a name="index-machine-directives_002c-SH"></a>
|
|
<a name="index-uaword-directive_002c-SH"></a>
|
|
<a name="index-ualong-directive_002c-SH"></a>
|
|
<a name="index-uaquad-directive_002c-SH"></a>
|
|
|
|
<dl compact="compact">
|
|
<dt><code>uaword</code></dt>
|
|
<dt><code>ualong</code></dt>
|
|
<dt><code>uaquad</code></dt>
|
|
<dd><p><code>as</code> will issue a warning when a misaligned <code>.word</code>,
|
|
<code>.long</code>, or <code>.quad</code> directive is used. You may use
|
|
<code>.uaword</code>, <code>.ualong</code>, or <code>.uaquad</code> to indicate that the
|
|
value is intentionally misaligned.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="SH-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#SH-Directives" accesskey="p" rel="previous">SH Directives</a>, Up: <a href="#SH_002dDependent" accesskey="u" rel="up">SH-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-18"></a>
|
|
<h4 class="subsection">9.43.5 Opcodes</h4>
|
|
|
|
<a name="index-SH-opcode-summary"></a>
|
|
<a name="index-opcode-summary_002c-SH"></a>
|
|
<a name="index-mnemonics_002c-SH"></a>
|
|
<a name="index-instruction-summary_002c-SH"></a>
|
|
<p>For detailed information on the SH machine instruction set, see
|
|
<cite>SH-Microcomputer User’s Manual</cite> (Renesas) or
|
|
<cite>SH-4 32-bit CPU Core Architecture</cite> (SuperH) and
|
|
<cite>SuperH (SH) 64-Bit RISC Series</cite> (SuperH).
|
|
</p>
|
|
<p><code>as</code> implements all the standard SH opcodes. No additional
|
|
pseudo-instructions are needed on this family. Note, however, that
|
|
because <code>as</code> supports a simpler form of PC-relative
|
|
addressing, you may simply write (for example)
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">mov.l bar,r0
|
|
</pre></div>
|
|
|
|
<p>where other assemblers might require an explicit displacement to
|
|
<code>bar</code> from the program counter:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">mov.l @(<var>disp</var>, PC)
|
|
</pre></div>
|
|
|
|
|
|
|
|
|
|
<hr>
|
|
<a name="Sparc_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC54X_002dDependent" accesskey="n" rel="next">TIC54X-Dependent</a>, Previous: <a href="#SH_002dDependent" accesskey="p" rel="previous">SH-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="SPARC-Dependent-Features"></a>
|
|
<h3 class="section">9.44 SPARC Dependent Features</h3>
|
|
|
|
<a name="index-SPARC-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Sparc_002dOpts" accesskey="1">Sparc-Opts</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Sparc_002dAligned_002dData" accesskey="2">Sparc-Aligned-Data</a>:</td><td> </td><td align="left" valign="top">Option to enforce aligned data
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Sparc_002dSyntax" accesskey="3">Sparc-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Sparc_002dFloat" accesskey="4">Sparc-Float</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Sparc_002dDirectives" accesskey="5">Sparc-Directives</a>:</td><td> </td><td align="left" valign="top">Sparc Machine Directives
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Sparc_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Sparc_002dAligned_002dData" accesskey="n" rel="next">Sparc-Aligned-Data</a>, Up: <a href="#Sparc_002dDependent" accesskey="u" rel="up">Sparc-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-24"></a>
|
|
<h4 class="subsection">9.44.1 Options</h4>
|
|
|
|
<a name="index-options-for-SPARC"></a>
|
|
<a name="index-SPARC-options"></a>
|
|
<a name="index-architectures_002c-SPARC"></a>
|
|
<a name="index-SPARC-architectures"></a>
|
|
<p>The SPARC chip family includes several successive versions, using the same
|
|
core instruction set, but including a few additional instructions at
|
|
each version. There are exceptions to this however. For details on what
|
|
instructions each variant supports, please see the chip’s architecture
|
|
reference manual.
|
|
</p>
|
|
<p>By default, <code>as</code> assumes the core instruction set (SPARC
|
|
v6), but “bumps” the architecture level as needed: it switches to
|
|
successively higher architectures as it encounters instructions that
|
|
only exist in the higher levels.
|
|
</p>
|
|
<p>If not configured for SPARC v9 (<code>sparc64-*-*</code>) GAS will not bump
|
|
past sparclite by default, an option must be passed to enable the
|
|
v9 instructions.
|
|
</p>
|
|
<p>GAS treats sparclite as being compatible with v8, unless an architecture
|
|
is explicitly requested. SPARC v9 is always incompatible with sparclite.
|
|
</p>
|
|
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dAv6"></a>
|
|
<a name="index-_002dAv7"></a>
|
|
<a name="index-_002dAv8"></a>
|
|
<a name="index-_002dAleon"></a>
|
|
<a name="index-_002dAsparclet"></a>
|
|
<a name="index-_002dAsparclite"></a>
|
|
<a name="index-_002dAv9"></a>
|
|
<a name="index-_002dAv9a"></a>
|
|
<a name="index-_002dAv9b"></a>
|
|
<a name="index-_002dAv9c"></a>
|
|
<a name="index-_002dAv9d"></a>
|
|
<a name="index-_002dAv9e"></a>
|
|
<a name="index-_002dAv9v"></a>
|
|
<a name="index-_002dAv9m"></a>
|
|
<a name="index-_002dAsparc"></a>
|
|
<a name="index-_002dAsparcvis"></a>
|
|
<a name="index-_002dAsparcvis2"></a>
|
|
<a name="index-_002dAsparcfmaf"></a>
|
|
<a name="index-_002dAsparcima"></a>
|
|
<a name="index-_002dAsparcvis3"></a>
|
|
<a name="index-_002dAsparcvis3r"></a>
|
|
</dd>
|
|
<dt><code>-Av6 | -Av7 | -Av8 | -Aleon | -Asparclet | -Asparclite</code></dt>
|
|
<dt><code>-Av8plus | -Av8plusa | -Av8plusb | -Av8plusc | -Av8plusd |</code></dt>
|
|
<dt><code>-Av8plusv | -Av8plusm | -Av8plusm8</code></dt>
|
|
<dt><code>-Av9 | -Av9a | -Av9b | -Av9c | -Av9d | -Av9e | -Av9v | -Av9m | -Av9m8</code></dt>
|
|
<dt><code>-Asparc | -Asparcvis | -Asparcvis2 | -Asparcfmaf | -Asparcima</code></dt>
|
|
<dt><code>-Asparcvis3 | -Asparcvis3r | -Asparc5 | -Asparc6</code></dt>
|
|
<dd><p>Use one of the ‘<samp>-A</samp>’ options to select one of the SPARC
|
|
architectures explicitly. If you select an architecture explicitly,
|
|
<code>as</code> reports a fatal error if it encounters an instruction
|
|
or feature requiring an incompatible or higher level.
|
|
</p>
|
|
<p>‘<samp>-Av8plus</samp>’, ‘<samp>-Av8plusa</samp>’, ‘<samp>-Av8plusb</samp>’, ‘<samp>-Av8plusc</samp>’,
|
|
‘<samp>-Av8plusd</samp>’, and ‘<samp>-Av8plusv</samp>’ select a 32 bit environment.
|
|
</p>
|
|
<p>‘<samp>-Av9</samp>’, ‘<samp>-Av9a</samp>’, ‘<samp>-Av9b</samp>’, ‘<samp>-Av9c</samp>’, ‘<samp>-Av9d</samp>’,
|
|
‘<samp>-Av9e</samp>’, ‘<samp>-Av9v</samp>’ and ‘<samp>-Av9m</samp>’ select a 64 bit
|
|
environment and are not available unless GAS is explicitly configured
|
|
with 64 bit environment support.
|
|
</p>
|
|
<p>‘<samp>-Av8plusa</samp>’ and ‘<samp>-Av9a</samp>’ enable the SPARC V9 instruction set with
|
|
UltraSPARC VIS 1.0 extensions.
|
|
</p>
|
|
<p>‘<samp>-Av8plusb</samp>’ and ‘<samp>-Av9b</samp>’ enable the UltraSPARC VIS 2.0 instructions,
|
|
as well as the instructions enabled by ‘<samp>-Av8plusa</samp>’ and ‘<samp>-Av9a</samp>’.
|
|
</p>
|
|
<p>‘<samp>-Av8plusc</samp>’ and ‘<samp>-Av9c</samp>’ enable the UltraSPARC Niagara instructions,
|
|
as well as the instructions enabled by ‘<samp>-Av8plusb</samp>’ and ‘<samp>-Av9b</samp>’.
|
|
</p>
|
|
<p>‘<samp>-Av8plusd</samp>’ and ‘<samp>-Av9d</samp>’ enable the floating point fused
|
|
multiply-add, VIS 3.0, and HPC extension instructions, as well as the
|
|
instructions enabled by ‘<samp>-Av8plusc</samp>’ and ‘<samp>-Av9c</samp>’.
|
|
</p>
|
|
<p>‘<samp>-Av8pluse</samp>’ and ‘<samp>-Av9e</samp>’ enable the cryptographic
|
|
instructions, as well as the instructions enabled by ‘<samp>-Av8plusd</samp>’
|
|
and ‘<samp>-Av9d</samp>’.
|
|
</p>
|
|
<p>‘<samp>-Av8plusv</samp>’ and ‘<samp>-Av9v</samp>’ enable floating point unfused
|
|
multiply-add, and integer multiply-add, as well as the instructions
|
|
enabled by ‘<samp>-Av8pluse</samp>’ and ‘<samp>-Av9e</samp>’.
|
|
</p>
|
|
<p>‘<samp>-Av8plusm</samp>’ and ‘<samp>-Av9m</samp>’ enable the VIS 4.0, subtract extended,
|
|
xmpmul, xmontmul and xmontsqr instructions, as well as the instructions
|
|
enabled by ‘<samp>-Av8plusv</samp>’ and ‘<samp>-Av9v</samp>’.
|
|
</p>
|
|
<p>‘<samp>-Av8plusm8</samp>’ and ‘<samp>-Av9m8</samp>’ enable the instructions introduced
|
|
in the Oracle SPARC Architecture 2017 and the M8 processor, as
|
|
well as the instructions enabled by ‘<samp>-Av8plusm</samp>’ and ‘<samp>-Av9m</samp>’.
|
|
</p>
|
|
<p>‘<samp>-Asparc</samp>’ specifies a v9 environment. It is equivalent to
|
|
‘<samp>-Av9</samp>’ if the word size is 64-bit, and ‘<samp>-Av8plus</samp>’ otherwise.
|
|
</p>
|
|
<p>‘<samp>-Asparcvis</samp>’ specifies a v9a environment. It is equivalent to
|
|
‘<samp>-Av9a</samp>’ if the word size is 64-bit, and ‘<samp>-Av8plusa</samp>’ otherwise.
|
|
</p>
|
|
<p>‘<samp>-Asparcvis2</samp>’ specifies a v9b environment. It is equivalent to
|
|
‘<samp>-Av9b</samp>’ if the word size is 64-bit, and ‘<samp>-Av8plusb</samp>’ otherwise.
|
|
</p>
|
|
<p>‘<samp>-Asparcfmaf</samp>’ specifies a v9b environment with the floating point
|
|
fused multiply-add instructions enabled.
|
|
</p>
|
|
<p>‘<samp>-Asparcima</samp>’ specifies a v9b environment with the integer
|
|
multiply-add instructions enabled.
|
|
</p>
|
|
<p>‘<samp>-Asparcvis3</samp>’ specifies a v9b environment with the VIS 3.0,
|
|
HPC , and floating point fused multiply-add instructions enabled.
|
|
</p>
|
|
<p>‘<samp>-Asparcvis3r</samp>’ specifies a v9b environment with the VIS 3.0, HPC,
|
|
and floating point unfused multiply-add instructions enabled.
|
|
</p>
|
|
<p>‘<samp>-Asparc5</samp>’ is equivalent to ‘<samp>-Av9m</samp>’.
|
|
</p>
|
|
<p>‘<samp>-Asparc6</samp>’ is equivalent to ‘<samp>-Av9m8</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-xarch=v8plus | -xarch=v8plusa | -xarch=v8plusb | -xarch=v8plusc</code></dt>
|
|
<dt><code>-xarch=v8plusd | -xarch=v8plusv | -xarch=v8plusm |</code></dt>
|
|
<dt><code>-xarch=v8plusm8 | -xarch=v9 | -xarch=v9a | -xarch=v9b</code></dt>
|
|
<dt><code>-xarch=v9c | -xarch=v9d | -xarch=v9e | -xarch=v9v</code></dt>
|
|
<dt><code>-xarch=v9m | -xarch=v9m8</code></dt>
|
|
<dt><code>-xarch=sparc | -xarch=sparcvis | -xarch=sparcvis2</code></dt>
|
|
<dt><code>-xarch=sparcfmaf | -xarch=sparcima | -xarch=sparcvis3</code></dt>
|
|
<dt><code>-xarch=sparcvis3r | -xarch=sparc5 | -xarch=sparc6</code></dt>
|
|
<dd><p>For compatibility with the SunOS v9 assembler. These options are
|
|
equivalent to -Av8plus, -Av8plusa, -Av8plusb, -Av8plusc, -Av8plusd,
|
|
-Av8plusv, -Av8plusm, -Av8plusm8, -Av9, -Av9a, -Av9b, -Av9c, -Av9d,
|
|
-Av9e, -Av9v, -Av9m, -Av9m8, -Asparc, -Asparcvis, -Asparcvis2,
|
|
-Asparcfmaf, -Asparcima, -Asparcvis3, -Asparcvis3r, -Asparc5 and
|
|
-Asparc6 respectively.
|
|
</p>
|
|
</dd>
|
|
<dt><code>-bump</code></dt>
|
|
<dd><p>Warn whenever it is necessary to switch to another level.
|
|
If an architecture level is explicitly requested, GAS will not issue
|
|
warnings until that level is reached, and will then bump the level
|
|
as required (except between incompatible levels).
|
|
</p>
|
|
</dd>
|
|
<dt><code>-32 | -64</code></dt>
|
|
<dd><p>Select the word size, either 32 bits or 64 bits.
|
|
These options are only available with the ELF object file format,
|
|
and require that the necessary BFD support has been included.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--dcti-couples-detect</code></dt>
|
|
<dd><p>Warn if a DCTI (delayed control transfer instruction) couple is found
|
|
when generating code for a variant of the SPARC architecture in which
|
|
the execution of the couple is unpredictable, or very slow. This is
|
|
disabled by default.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Sparc_002dAligned_002dData"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Sparc_002dSyntax" accesskey="n" rel="next">Sparc-Syntax</a>, Previous: <a href="#Sparc_002dOpts" accesskey="p" rel="previous">Sparc-Opts</a>, Up: <a href="#Sparc_002dDependent" accesskey="u" rel="up">Sparc-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Enforcing-aligned-data"></a>
|
|
<h4 class="subsection">9.44.2 Enforcing aligned data</h4>
|
|
|
|
<a name="index-data-alignment-on-SPARC"></a>
|
|
<a name="index-SPARC-data-alignment"></a>
|
|
<p>SPARC GAS normally permits data to be misaligned. For example, it
|
|
permits the <code>.long</code> pseudo-op to be used on a byte boundary.
|
|
However, the native SunOS assemblers issue an error when they see
|
|
misaligned data.
|
|
</p>
|
|
<a name="index-_002d_002denforce_002daligned_002ddata"></a>
|
|
<p>You can use the <code>--enforce-aligned-data</code> option to make SPARC GAS
|
|
also issue an error about misaligned data, just as the SunOS
|
|
assemblers do.
|
|
</p>
|
|
<p>The <code>--enforce-aligned-data</code> option is not the default because gcc
|
|
issues misaligned data pseudo-ops when it initializes certain packed
|
|
data structures (structures defined using the <code>packed</code> attribute).
|
|
You may have to assemble with GAS in order to initialize packed data
|
|
structures in your own code.
|
|
</p>
|
|
<a name="index-SPARC-syntax"></a>
|
|
<a name="index-syntax_002c-SPARC"></a>
|
|
<hr>
|
|
<a name="Sparc_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Sparc_002dFloat" accesskey="n" rel="next">Sparc-Float</a>, Previous: <a href="#Sparc_002dAligned_002dData" accesskey="p" rel="previous">Sparc-Aligned-Data</a>, Up: <a href="#Sparc_002dDependent" accesskey="u" rel="up">Sparc-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Sparc-Syntax"></a>
|
|
<h4 class="subsection">9.44.3 Sparc Syntax</h4>
|
|
<p>The assembler syntax closely follows The Sparc Architecture Manual,
|
|
versions 8 and 9, as well as most extensions defined by Sun
|
|
for their UltraSPARC and Niagara line of processors.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Sparc_002dChars" accesskey="1">Sparc-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Sparc_002dRegs" accesskey="2">Sparc-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Sparc_002dConstants" accesskey="3">Sparc-Constants</a>:</td><td> </td><td align="left" valign="top">Constant Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Sparc_002dRelocs" accesskey="4">Sparc-Relocs</a>:</td><td> </td><td align="left" valign="top">Relocations
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Sparc_002dSize_002dTranslations" accesskey="5">Sparc-Size-Translations</a>:</td><td> </td><td align="left" valign="top">Size Translations
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Sparc_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Sparc_002dRegs" accesskey="n" rel="next">Sparc-Regs</a>, Up: <a href="#Sparc_002dSyntax" accesskey="u" rel="up">Sparc-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-35"></a>
|
|
<h4 class="subsubsection">9.44.3.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-Sparc"></a>
|
|
<a name="index-Sparc-line-comment-character"></a>
|
|
<p>A ‘<samp>!</samp>’ character appearing anywhere on a line indicates the start
|
|
of a comment that extends to the end of that line.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line then the whole
|
|
line is treated as a comment, but in this case the line could also be
|
|
a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-Sparc"></a>
|
|
<a name="index-statement-separator_002c-Sparc"></a>
|
|
<a name="index-Sparc-line-separator"></a>
|
|
<p>‘<samp>;</samp>’ can be used instead of a newline to separate statements.
|
|
</p>
|
|
<hr>
|
|
<a name="Sparc_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Sparc_002dConstants" accesskey="n" rel="next">Sparc-Constants</a>, Previous: <a href="#Sparc_002dChars" accesskey="p" rel="previous">Sparc-Chars</a>, Up: <a href="#Sparc_002dSyntax" accesskey="u" rel="up">Sparc-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-16"></a>
|
|
<h4 class="subsubsection">9.44.3.2 Register Names</h4>
|
|
<a name="index-Sparc-registers"></a>
|
|
<a name="index-register-names_002c-Sparc"></a>
|
|
|
|
<p>The Sparc integer register file is broken down into global,
|
|
outgoing, local, and incoming.
|
|
</p>
|
|
<ul>
|
|
<li> The 8 global registers are referred to as ‘<samp>%g<var>n</var></samp>’.
|
|
|
|
</li><li> The 8 outgoing registers are referred to as ‘<samp>%o<var>n</var></samp>’.
|
|
|
|
</li><li> The 8 local registers are referred to as ‘<samp>%l<var>n</var></samp>’.
|
|
|
|
</li><li> The 8 incoming registers are referred to as ‘<samp>%i<var>n</var></samp>’.
|
|
|
|
</li><li> The frame pointer register ‘<samp>%i6</samp>’ can be referenced using
|
|
the alias ‘<samp>%fp</samp>’.
|
|
|
|
</li><li> The stack pointer register ‘<samp>%o6</samp>’ can be referenced using
|
|
the alias ‘<samp>%sp</samp>’.
|
|
</li></ul>
|
|
|
|
<p>Floating point registers are simply referred to as ‘<samp>%f<var>n</var></samp>’.
|
|
When assembling for pre-V9, only 32 floating point registers
|
|
are available. For V9 and later there are 64, but there are
|
|
restrictions when referencing the upper 32 registers. They
|
|
can only be accessed as double or quad, and thus only even
|
|
or quad numbered accesses are allowed. For example, ‘<samp>%f34</samp>’
|
|
is a legal floating point register, but ‘<samp>%f35</samp>’ is not.
|
|
</p>
|
|
<p>Floating point registers accessed as double can also be referred using
|
|
the ‘<samp>%d<var>n</var></samp>’ notation, where <var>n</var> is even. Similarly,
|
|
floating point registers accessed as quad can be referred using the
|
|
‘<samp>%q<var>n</var></samp>’ notation, where <var>n</var> is a multiple of 4. For
|
|
example, ‘<samp>%f4</samp>’ can be denoted as both ‘<samp>%d4</samp>’ and ‘<samp>%q4</samp>’.
|
|
On the other hand, ‘<samp>%f2</samp>’ can be denoted as ‘<samp>%d2</samp>’ but not as
|
|
‘<samp>%q2</samp>’.
|
|
</p>
|
|
<p>Certain V9 instructions allow access to ancillary state registers.
|
|
Most simply they can be referred to as ‘<samp>%asr<var>n</var></samp>’ where
|
|
<var>n</var> can be from 16 to 31. However, there are some aliases
|
|
defined to reference ASR registers defined for various UltraSPARC
|
|
processors:
|
|
</p>
|
|
<ul>
|
|
<li> The tick compare register is referred to as ‘<samp>%tick_cmpr</samp>’.
|
|
|
|
</li><li> The system tick register is referred to as ‘<samp>%stick</samp>’. An alias,
|
|
‘<samp>%sys_tick</samp>’, exists but is deprecated and should not be used
|
|
by new software.
|
|
|
|
</li><li> The system tick compare register is referred to as ‘<samp>%stick_cmpr</samp>’.
|
|
An alias, ‘<samp>%sys_tick_cmpr</samp>’, exists but is deprecated and should
|
|
not be used by new software.
|
|
|
|
</li><li> The software interrupt register is referred to as ‘<samp>%softint</samp>’.
|
|
|
|
</li><li> The set software interrupt register is referred to as ‘<samp>%set_softint</samp>’.
|
|
The mnemonic ‘<samp>%softint_set</samp>’ is provided as an alias.
|
|
|
|
</li><li> The clear software interrupt register is referred to as
|
|
‘<samp>%clear_softint</samp>’. The mnemonic ‘<samp>%softint_clear</samp>’ is provided
|
|
as an alias.
|
|
|
|
</li><li> The performance instrumentation counters register is referred to as
|
|
‘<samp>%pic</samp>’.
|
|
|
|
</li><li> The performance control register is referred to as ‘<samp>%pcr</samp>’.
|
|
|
|
</li><li> The graphics status register is referred to as ‘<samp>%gsr</samp>’.
|
|
|
|
</li><li> The V9 dispatch control register is referred to as ‘<samp>%dcr</samp>’.
|
|
</li></ul>
|
|
|
|
<p>Various V9 branch and conditional move instructions allow
|
|
specification of which set of integer condition codes to
|
|
test. These are referred to as ‘<samp>%xcc</samp>’ and ‘<samp>%icc</samp>’.
|
|
</p>
|
|
<p>Additionally, GAS supports the so-called “natural” condition codes;
|
|
these are referred to as ‘<samp>%ncc</samp>’ and reference to ‘<samp>%icc</samp>’ if
|
|
the word size is 32, ‘<samp>%xcc</samp>’ if the word size is 64.
|
|
</p>
|
|
<p>In V9, there are 4 sets of floating point condition codes
|
|
which are referred to as ‘<samp>%fcc<var>n</var></samp>’.
|
|
</p>
|
|
<p>Several special privileged and non-privileged registers
|
|
exist:
|
|
</p>
|
|
<ul>
|
|
<li> The V9 address space identifier register is referred to as ‘<samp>%asi</samp>’.
|
|
|
|
</li><li> The V9 restorable windows register is referred to as ‘<samp>%canrestore</samp>’.
|
|
|
|
</li><li> The V9 savable windows register is referred to as ‘<samp>%cansave</samp>’.
|
|
|
|
</li><li> The V9 clean windows register is referred to as ‘<samp>%cleanwin</samp>’.
|
|
|
|
</li><li> The V9 current window pointer register is referred to as ‘<samp>%cwp</samp>’.
|
|
|
|
</li><li> The floating-point queue register is referred to as ‘<samp>%fq</samp>’.
|
|
|
|
</li><li> The V8 co-processor queue register is referred to as ‘<samp>%cq</samp>’.
|
|
|
|
</li><li> The floating point status register is referred to as ‘<samp>%fsr</samp>’.
|
|
|
|
</li><li> The other windows register is referred to as ‘<samp>%otherwin</samp>’.
|
|
|
|
</li><li> The V9 program counter register is referred to as ‘<samp>%pc</samp>’.
|
|
|
|
</li><li> The V9 next program counter register is referred to as ‘<samp>%npc</samp>’.
|
|
|
|
</li><li> The V9 processor interrupt level register is referred to as ‘<samp>%pil</samp>’.
|
|
|
|
</li><li> The V9 processor state register is referred to as ‘<samp>%pstate</samp>’.
|
|
|
|
</li><li> The trap base address register is referred to as ‘<samp>%tba</samp>’.
|
|
|
|
</li><li> The V9 tick register is referred to as ‘<samp>%tick</samp>’.
|
|
|
|
</li><li> The V9 trap level is referred to as ‘<samp>%tl</samp>’.
|
|
|
|
</li><li> The V9 trap program counter is referred to as ‘<samp>%tpc</samp>’.
|
|
|
|
</li><li> The V9 trap next program counter is referred to as ‘<samp>%tnpc</samp>’.
|
|
|
|
</li><li> The V9 trap state is referred to as ‘<samp>%tstate</samp>’.
|
|
|
|
</li><li> The V9 trap type is referred to as ‘<samp>%tt</samp>’.
|
|
|
|
</li><li> The V9 condition codes is referred to as ‘<samp>%ccr</samp>’.
|
|
|
|
</li><li> The V9 floating-point registers state is referred to as ‘<samp>%fprs</samp>’.
|
|
|
|
</li><li> The V9 version register is referred to as ‘<samp>%ver</samp>’.
|
|
|
|
</li><li> The V9 window state register is referred to as ‘<samp>%wstate</samp>’.
|
|
|
|
</li><li> The Y register is referred to as ‘<samp>%y</samp>’.
|
|
|
|
</li><li> The V8 window invalid mask register is referred to as ‘<samp>%wim</samp>’.
|
|
|
|
</li><li> The V8 processor state register is referred to as ‘<samp>%psr</samp>’.
|
|
|
|
</li><li> The V9 global register level register is referred to as ‘<samp>%gl</samp>’.
|
|
</li></ul>
|
|
|
|
<p>Several special register names exist for hypervisor mode code:
|
|
</p>
|
|
<ul>
|
|
<li> The hyperprivileged processor state register is referred to as
|
|
‘<samp>%hpstate</samp>’.
|
|
|
|
</li><li> The hyperprivileged trap state register is referred to as ‘<samp>%htstate</samp>’.
|
|
|
|
</li><li> The hyperprivileged interrupt pending register is referred to as
|
|
‘<samp>%hintp</samp>’.
|
|
|
|
</li><li> The hyperprivileged trap base address register is referred to as
|
|
‘<samp>%htba</samp>’.
|
|
|
|
</li><li> The hyperprivileged implementation version register is referred
|
|
to as ‘<samp>%hver</samp>’.
|
|
|
|
</li><li> The hyperprivileged system tick offset register is referred to as
|
|
‘<samp>%hstick_offset</samp>’. Note that there is no ‘<samp>%hstick</samp>’ register,
|
|
the normal ‘<samp>%stick</samp>’ is used.
|
|
|
|
</li><li> The hyperprivileged system tick enable register is referred to as
|
|
‘<samp>%hstick_enable</samp>’.
|
|
|
|
</li><li> The hyperprivileged system tick compare register is referred
|
|
to as ‘<samp>%hstick_cmpr</samp>’.
|
|
</li></ul>
|
|
|
|
<hr>
|
|
<a name="Sparc_002dConstants"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Sparc_002dRelocs" accesskey="n" rel="next">Sparc-Relocs</a>, Previous: <a href="#Sparc_002dRegs" accesskey="p" rel="previous">Sparc-Regs</a>, Up: <a href="#Sparc_002dSyntax" accesskey="u" rel="up">Sparc-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Constants-2"></a>
|
|
<h4 class="subsubsection">9.44.3.3 Constants</h4>
|
|
<a name="index-Sparc-constants"></a>
|
|
<a name="index-constants_002c-Sparc"></a>
|
|
|
|
<p>Several Sparc instructions take an immediate operand field for
|
|
which mnemonic names exist. Two such examples are ‘<samp>membar</samp>’
|
|
and ‘<samp>prefetch</samp>’. Another example are the set of V9
|
|
memory access instruction that allow specification of an
|
|
address space identifier.
|
|
</p>
|
|
<p>The ‘<samp>membar</samp>’ instruction specifies a memory barrier that is
|
|
the defined by the operand which is a bitmask. The supported
|
|
mask mnemonics are:
|
|
</p>
|
|
<ul>
|
|
<li> ‘<samp>#Sync</samp>’ requests that all operations (including nonmemory
|
|
reference operations) appearing prior to the <code>membar</code> must have
|
|
been performed and the effects of any exceptions become visible before
|
|
any instructions after the <code>membar</code> may be initiated. This
|
|
corresponds to <code>membar</code> cmask field bit 2.
|
|
|
|
</li><li> ‘<samp>#MemIssue</samp>’ requests that all memory reference operations
|
|
appearing prior to the <code>membar</code> must have been performed before
|
|
any memory operation after the <code>membar</code> may be initiated. This
|
|
corresponds to <code>membar</code> cmask field bit 1.
|
|
|
|
</li><li> ‘<samp>#Lookaside</samp>’ requests that a store appearing prior to the
|
|
<code>membar</code> must complete before any load following the
|
|
<code>membar</code> referencing the same address can be initiated. This
|
|
corresponds to <code>membar</code> cmask field bit 0.
|
|
|
|
</li><li> ‘<samp>#StoreStore</samp>’ defines that the effects of all stores appearing
|
|
prior to the <code>membar</code> instruction must be visible to all
|
|
processors before the effect of any stores following the
|
|
<code>membar</code>. Equivalent to the deprecated <code>stbar</code> instruction.
|
|
This corresponds to <code>membar</code> mmask field bit 3.
|
|
|
|
</li><li> ‘<samp>#LoadStore</samp>’ defines all loads appearing prior to the
|
|
<code>membar</code> instruction must have been performed before the effect
|
|
of any stores following the <code>membar</code> is visible to any other
|
|
processor. This corresponds to <code>membar</code> mmask field bit 2.
|
|
|
|
</li><li> ‘<samp>#StoreLoad</samp>’ defines that the effects of all stores appearing
|
|
prior to the <code>membar</code> instruction must be visible to all
|
|
processors before loads following the <code>membar</code> may be performed.
|
|
This corresponds to <code>membar</code> mmask field bit 1.
|
|
|
|
</li><li> ‘<samp>#LoadLoad</samp>’ defines that all loads appearing prior to the
|
|
<code>membar</code> instruction must have been performed before any loads
|
|
following the <code>membar</code> may be performed. This corresponds to
|
|
<code>membar</code> mmask field bit 0.
|
|
|
|
</li></ul>
|
|
|
|
<p>These values can be ored together, for example:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">membar #Sync
|
|
membar #StoreLoad | #LoadLoad
|
|
membar #StoreLoad | #StoreStore
|
|
</pre></div>
|
|
|
|
<p>The <code>prefetch</code> and <code>prefetcha</code> instructions take a prefetch
|
|
function code. The following prefetch function code constant
|
|
mnemonics are available:
|
|
</p>
|
|
<ul>
|
|
<li> ‘<samp>#n_reads</samp>’ requests a prefetch for several reads, and corresponds
|
|
to a prefetch function code of 0.
|
|
|
|
<p>‘<samp>#one_read</samp>’ requests a prefetch for one read, and corresponds
|
|
to a prefetch function code of 1.
|
|
</p>
|
|
<p>‘<samp>#n_writes</samp>’ requests a prefetch for several writes (and possibly
|
|
reads), and corresponds to a prefetch function code of 2.
|
|
</p>
|
|
<p>‘<samp>#one_write</samp>’ requests a prefetch for one write, and corresponds
|
|
to a prefetch function code of 3.
|
|
</p>
|
|
<p>‘<samp>#page</samp>’ requests a prefetch page, and corresponds to a prefetch
|
|
function code of 4.
|
|
</p>
|
|
<p>‘<samp>#invalidate</samp>’ requests a prefetch invalidate, and corresponds to
|
|
a prefetch function code of 16.
|
|
</p>
|
|
<p>‘<samp>#unified</samp>’ requests a prefetch to the nearest unified cache, and
|
|
corresponds to a prefetch function code of 17.
|
|
</p>
|
|
<p>‘<samp>#n_reads_strong</samp>’ requests a strong prefetch for several reads,
|
|
and corresponds to a prefetch function code of 20.
|
|
</p>
|
|
<p>‘<samp>#one_read_strong</samp>’ requests a strong prefetch for one read,
|
|
and corresponds to a prefetch function code of 21.
|
|
</p>
|
|
<p>‘<samp>#n_writes_strong</samp>’ requests a strong prefetch for several writes,
|
|
and corresponds to a prefetch function code of 22.
|
|
</p>
|
|
<p>‘<samp>#one_write_strong</samp>’ requests a strong prefetch for one write,
|
|
and corresponds to a prefetch function code of 23.
|
|
</p>
|
|
<p>Onle one prefetch code may be specified. Here are some examples:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">prefetch [%l0 + %l2], #one_read
|
|
prefetch [%g2 + 8], #n_writes
|
|
prefetcha [%g1] 0x8, #unified
|
|
prefetcha [%o0 + 0x10] %asi, #n_reads
|
|
</pre></div>
|
|
|
|
<p>The actual behavior of a given prefetch function code is processor
|
|
specific. If a processor does not implement a given prefetch
|
|
function code, it will treat the prefetch instruction as a nop.
|
|
</p>
|
|
<p>For instructions that accept an immediate address space identifier,
|
|
<code>as</code> provides many mnemonics corresponding to
|
|
V9 defined as well as UltraSPARC and Niagara extended values.
|
|
For example, ‘<samp>#ASI_P</samp>’ and ‘<samp>#ASI_BLK_INIT_QUAD_LDD_AIUS</samp>’.
|
|
See the V9 and processor specific manuals for details.
|
|
</p>
|
|
</li></ul>
|
|
|
|
<hr>
|
|
<a name="Sparc_002dRelocs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Sparc_002dSize_002dTranslations" accesskey="n" rel="next">Sparc-Size-Translations</a>, Previous: <a href="#Sparc_002dConstants" accesskey="p" rel="previous">Sparc-Constants</a>, Up: <a href="#Sparc_002dSyntax" accesskey="u" rel="up">Sparc-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Relocations-4"></a>
|
|
<h4 class="subsubsection">9.44.3.4 Relocations</h4>
|
|
<a name="index-Sparc-relocations"></a>
|
|
<a name="index-relocations_002c-Sparc"></a>
|
|
|
|
<p>ELF relocations are available as defined in the 32-bit and 64-bit
|
|
Sparc ELF specifications.
|
|
</p>
|
|
<p><code>R_SPARC_HI22</code> is obtained using ‘<samp>%hi</samp>’ and <code>R_SPARC_LO10</code>
|
|
is obtained using ‘<samp>%lo</samp>’. Likewise <code>R_SPARC_HIX22</code> is
|
|
obtained from ‘<samp>%hix</samp>’ and <code>R_SPARC_LOX10</code> is obtained
|
|
using ‘<samp>%lox</samp>’. For example:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">sethi %hi(symbol), %g1
|
|
or %g1, %lo(symbol), %g1
|
|
|
|
sethi %hix(symbol), %g1
|
|
xor %g1, %lox(symbol), %g1
|
|
</pre></div>
|
|
|
|
<p>These “high” mnemonics extract bits 31:10 of their operand,
|
|
and the “low” mnemonics extract bits 9:0 of their operand.
|
|
</p>
|
|
<p>V9 code model relocations can be requested as follows:
|
|
</p>
|
|
<ul>
|
|
<li> <code>R_SPARC_HH22</code> is requested using ‘<samp>%hh</samp>’. It can
|
|
also be generated using ‘<samp>%uhi</samp>’.
|
|
</li><li> <code>R_SPARC_HM10</code> is requested using ‘<samp>%hm</samp>’. It can
|
|
also be generated using ‘<samp>%ulo</samp>’.
|
|
</li><li> <code>R_SPARC_LM22</code> is requested using ‘<samp>%lm</samp>’.
|
|
|
|
</li><li> <code>R_SPARC_H44</code> is requested using ‘<samp>%h44</samp>’.
|
|
</li><li> <code>R_SPARC_M44</code> is requested using ‘<samp>%m44</samp>’.
|
|
</li><li> <code>R_SPARC_L44</code> is requested using ‘<samp>%l44</samp>’ or ‘<samp>%l34</samp>’.
|
|
</li><li> <code>R_SPARC_H34</code> is requested using ‘<samp>%h34</samp>’.
|
|
</li></ul>
|
|
|
|
<p>The ‘<samp>%l34</samp>’ generates a <code>R_SPARC_L44</code> relocation because it
|
|
calculates the necessary value, and therefore no explicit
|
|
<code>R_SPARC_L34</code> relocation needed to be created for this purpose.
|
|
</p>
|
|
<p>The ‘<samp>%h34</samp>’ and ‘<samp>%l34</samp>’ relocations are used for the abs34 code
|
|
model. Here is an example abs34 address generation sequence:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">sethi %h34(symbol), %g1
|
|
sllx %g1, 2, %g1
|
|
or %g1, %l34(symbol), %g1
|
|
</pre></div>
|
|
|
|
<p>The PC relative relocation <code>R_SPARC_PC22</code> can be obtained by
|
|
enclosing an operand inside of ‘<samp>%pc22</samp>’. Likewise, the
|
|
<code>R_SPARC_PC10</code> relocation can be obtained using ‘<samp>%pc10</samp>’.
|
|
These are mostly used when assembling PIC code. For example, the
|
|
standard PIC sequence on Sparc to get the base of the global offset
|
|
table, PC relative, into a register, can be performed as:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">sethi %pc22(_GLOBAL_OFFSET_TABLE_-4), %l7
|
|
add %l7, %pc10(_GLOBAL_OFFSET_TABLE_+4), %l7
|
|
</pre></div>
|
|
|
|
<p>Several relocations exist to allow the link editor to potentially
|
|
optimize GOT data references. The <code>R_SPARC_GOTDATA_OP_HIX22</code>
|
|
relocation can obtained by enclosing an operand inside of
|
|
‘<samp>%gdop_hix22</samp>’. The <code>R_SPARC_GOTDATA_OP_LOX10</code>
|
|
relocation can obtained by enclosing an operand inside of
|
|
‘<samp>%gdop_lox10</samp>’. Likewise, <code>R_SPARC_GOTDATA_OP</code> can be
|
|
obtained by enclosing an operand inside of ‘<samp>%gdop</samp>’.
|
|
For example, assuming the GOT base is in register <code>%l7</code>:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">sethi %gdop_hix22(symbol), %l1
|
|
xor %l1, %gdop_lox10(symbol), %l1
|
|
ld [%l7 + %l1], %l2, %gdop(symbol)
|
|
</pre></div>
|
|
|
|
<p>There are many relocations that can be requested for access to
|
|
thread local storage variables. All of the Sparc TLS mnemonics
|
|
are supported:
|
|
</p>
|
|
<ul>
|
|
<li> <code>R_SPARC_TLS_GD_HI22</code> is requested using ‘<samp>%tgd_hi22</samp>’.
|
|
</li><li> <code>R_SPARC_TLS_GD_LO10</code> is requested using ‘<samp>%tgd_lo10</samp>’.
|
|
</li><li> <code>R_SPARC_TLS_GD_ADD</code> is requested using ‘<samp>%tgd_add</samp>’.
|
|
</li><li> <code>R_SPARC_TLS_GD_CALL</code> is requested using ‘<samp>%tgd_call</samp>’.
|
|
|
|
</li><li> <code>R_SPARC_TLS_LDM_HI22</code> is requested using ‘<samp>%tldm_hi22</samp>’.
|
|
</li><li> <code>R_SPARC_TLS_LDM_LO10</code> is requested using ‘<samp>%tldm_lo10</samp>’.
|
|
</li><li> <code>R_SPARC_TLS_LDM_ADD</code> is requested using ‘<samp>%tldm_add</samp>’.
|
|
</li><li> <code>R_SPARC_TLS_LDM_CALL</code> is requested using ‘<samp>%tldm_call</samp>’.
|
|
|
|
</li><li> <code>R_SPARC_TLS_LDO_HIX22</code> is requested using ‘<samp>%tldo_hix22</samp>’.
|
|
</li><li> <code>R_SPARC_TLS_LDO_LOX10</code> is requested using ‘<samp>%tldo_lox10</samp>’.
|
|
</li><li> <code>R_SPARC_TLS_LDO_ADD</code> is requested using ‘<samp>%tldo_add</samp>’.
|
|
|
|
</li><li> <code>R_SPARC_TLS_IE_HI22</code> is requested using ‘<samp>%tie_hi22</samp>’.
|
|
</li><li> <code>R_SPARC_TLS_IE_LO10</code> is requested using ‘<samp>%tie_lo10</samp>’.
|
|
</li><li> <code>R_SPARC_TLS_IE_LD</code> is requested using ‘<samp>%tie_ld</samp>’.
|
|
</li><li> <code>R_SPARC_TLS_IE_LDX</code> is requested using ‘<samp>%tie_ldx</samp>’.
|
|
</li><li> <code>R_SPARC_TLS_IE_ADD</code> is requested using ‘<samp>%tie_add</samp>’.
|
|
|
|
</li><li> <code>R_SPARC_TLS_LE_HIX22</code> is requested using ‘<samp>%tle_hix22</samp>’.
|
|
</li><li> <code>R_SPARC_TLS_LE_LOX10</code> is requested using ‘<samp>%tle_lox10</samp>’.
|
|
</li></ul>
|
|
|
|
<p>Here are some example TLS model sequences.
|
|
</p>
|
|
<p>First, General Dynamic:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">sethi %tgd_hi22(symbol), %l1
|
|
add %l1, %tgd_lo10(symbol), %l1
|
|
add %l7, %l1, %o0, %tgd_add(symbol)
|
|
call __tls_get_addr, %tgd_call(symbol)
|
|
nop
|
|
</pre></div>
|
|
|
|
<p>Local Dynamic:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">sethi %tldm_hi22(symbol), %l1
|
|
add %l1, %tldm_lo10(symbol), %l1
|
|
add %l7, %l1, %o0, %tldm_add(symbol)
|
|
call __tls_get_addr, %tldm_call(symbol)
|
|
nop
|
|
|
|
sethi %tldo_hix22(symbol), %l1
|
|
xor %l1, %tldo_lox10(symbol), %l1
|
|
add %o0, %l1, %l1, %tldo_add(symbol)
|
|
</pre></div>
|
|
|
|
<p>Initial Exec:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">sethi %tie_hi22(symbol), %l1
|
|
add %l1, %tie_lo10(symbol), %l1
|
|
ld [%l7 + %l1], %o0, %tie_ld(symbol)
|
|
add %g7, %o0, %o0, %tie_add(symbol)
|
|
|
|
sethi %tie_hi22(symbol), %l1
|
|
add %l1, %tie_lo10(symbol), %l1
|
|
ldx [%l7 + %l1], %o0, %tie_ldx(symbol)
|
|
add %g7, %o0, %o0, %tie_add(symbol)
|
|
</pre></div>
|
|
|
|
<p>And finally, Local Exec:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">sethi %tle_hix22(symbol), %l1
|
|
add %l1, %tle_lox10(symbol), %l1
|
|
add %g7, %l1, %l1
|
|
</pre></div>
|
|
|
|
<p>When assembling for 64-bit, and a secondary constant addend is
|
|
specified in an address expression that would normally generate
|
|
an <code>R_SPARC_LO10</code> relocation, the assembler will emit an
|
|
<code>R_SPARC_OLO10</code> instead.
|
|
</p>
|
|
<hr>
|
|
<a name="Sparc_002dSize_002dTranslations"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Sparc_002dRelocs" accesskey="p" rel="previous">Sparc-Relocs</a>, Up: <a href="#Sparc_002dSyntax" accesskey="u" rel="up">Sparc-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Size-Translations"></a>
|
|
<h4 class="subsubsection">9.44.3.5 Size Translations</h4>
|
|
<a name="index-Sparc-size-translations"></a>
|
|
<a name="index-size_002c-translations_002c-Sparc"></a>
|
|
|
|
<p>Often it is desirable to write code in an operand size agnostic
|
|
manner. <code>as</code> provides support for this via
|
|
operand size opcode translations. Translations are supported
|
|
for loads, stores, shifts, compare-and-swap atomics, and the
|
|
‘<samp>clr</samp>’ synthetic instruction.
|
|
</p>
|
|
<p>If generating 32-bit code, <code>as</code> will generate the
|
|
32-bit opcode. Whereas if 64-bit code is being generated,
|
|
the 64-bit opcode will be emitted. For example <code>ldn</code>
|
|
will be transformed into <code>ld</code> for 32-bit code and
|
|
<code>ldx</code> for 64-bit code.
|
|
</p>
|
|
<p>Here is an example meant to demonstrate all the supported
|
|
opcode translations:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">ldn [%o0], %o1
|
|
ldna [%o0] %asi, %o2
|
|
stn %o1, [%o0]
|
|
stna %o2, [%o0] %asi
|
|
slln %o3, 3, %o3
|
|
srln %o4, 8, %o4
|
|
sran %o5, 12, %o5
|
|
casn [%o0], %o1, %o2
|
|
casna [%o0] %asi, %o1, %o2
|
|
clrn %g1
|
|
</pre></div>
|
|
|
|
<p>In 32-bit mode <code>as</code> will emit:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">ld [%o0], %o1
|
|
lda [%o0] %asi, %o2
|
|
st %o1, [%o0]
|
|
sta %o2, [%o0] %asi
|
|
sll %o3, 3, %o3
|
|
srl %o4, 8, %o4
|
|
sra %o5, 12, %o5
|
|
cas [%o0], %o1, %o2
|
|
casa [%o0] %asi, %o1, %o2
|
|
clr %g1
|
|
</pre></div>
|
|
|
|
<p>And in 64-bit mode <code>as</code> will emit:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">ldx [%o0], %o1
|
|
ldxa [%o0] %asi, %o2
|
|
stx %o1, [%o0]
|
|
stxa %o2, [%o0] %asi
|
|
sllx %o3, 3, %o3
|
|
srlx %o4, 8, %o4
|
|
srax %o5, 12, %o5
|
|
casx [%o0], %o1, %o2
|
|
casxa [%o0] %asi, %o1, %o2
|
|
clrx %g1
|
|
</pre></div>
|
|
|
|
<p>Finally, the ‘<samp>.nword</samp>’ translating directive is supported
|
|
as well. It is documented in the section on Sparc machine
|
|
directives.
|
|
</p>
|
|
<hr>
|
|
<a name="Sparc_002dFloat"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Sparc_002dDirectives" accesskey="n" rel="next">Sparc-Directives</a>, Previous: <a href="#Sparc_002dSyntax" accesskey="p" rel="previous">Sparc-Syntax</a>, Up: <a href="#Sparc_002dDependent" accesskey="u" rel="up">Sparc-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-15"></a>
|
|
<h4 class="subsection">9.44.4 Floating Point</h4>
|
|
|
|
<a name="index-floating-point_002c-SPARC-_0028IEEE_0029"></a>
|
|
<a name="index-SPARC-floating-point-_0028IEEE_0029"></a>
|
|
<p>The Sparc uses <small>IEEE</small> floating-point numbers.
|
|
</p>
|
|
<hr>
|
|
<a name="Sparc_002dDirectives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Sparc_002dFloat" accesskey="p" rel="previous">Sparc-Float</a>, Up: <a href="#Sparc_002dDependent" accesskey="u" rel="up">Sparc-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Sparc-Machine-Directives"></a>
|
|
<h4 class="subsection">9.44.5 Sparc Machine Directives</h4>
|
|
|
|
<a name="index-SPARC-machine-directives"></a>
|
|
<a name="index-machine-directives_002c-SPARC"></a>
|
|
<p>The Sparc version of <code>as</code> supports the following additional
|
|
machine directives:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-align-directive_002c-SPARC"></a>
|
|
</dd>
|
|
<dt><code>.align</code></dt>
|
|
<dd><p>This must be followed by the desired alignment in bytes.
|
|
</p>
|
|
<a name="index-common-directive_002c-SPARC"></a>
|
|
</dd>
|
|
<dt><code>.common</code></dt>
|
|
<dd><p>This must be followed by a symbol name, a positive number, and
|
|
<code>"bss"</code>. This behaves somewhat like <code>.comm</code>, but the
|
|
syntax is different.
|
|
</p>
|
|
<a name="index-half-directive_002c-SPARC"></a>
|
|
</dd>
|
|
<dt><code>.half</code></dt>
|
|
<dd><p>This is functionally identical to <code>.short</code>.
|
|
</p>
|
|
<a name="index-nword-directive_002c-SPARC"></a>
|
|
</dd>
|
|
<dt><code>.nword</code></dt>
|
|
<dd><p>On the Sparc, the <code>.nword</code> directive produces native word sized value,
|
|
ie. if assembling with -32 it is equivalent to <code>.word</code>, if assembling
|
|
with -64 it is equivalent to <code>.xword</code>.
|
|
</p>
|
|
<a name="index-proc-directive_002c-SPARC"></a>
|
|
</dd>
|
|
<dt><code>.proc</code></dt>
|
|
<dd><p>This directive is ignored. Any text following it on the same
|
|
line is also ignored.
|
|
</p>
|
|
<a name="index-register-directive_002c-SPARC"></a>
|
|
</dd>
|
|
<dt><code>.register</code></dt>
|
|
<dd><p>This directive declares use of a global application or system register.
|
|
It must be followed by a register name %g2, %g3, %g6 or %g7, comma and
|
|
the symbol name for that register. If symbol name is <code>#scratch</code>,
|
|
it is a scratch register, if it is <code>#ignore</code>, it just suppresses any
|
|
errors about using undeclared global register, but does not emit any
|
|
information about it into the object file. This can be useful e.g. if you
|
|
save the register before use and restore it after.
|
|
</p>
|
|
<a name="index-reserve-directive_002c-SPARC"></a>
|
|
</dd>
|
|
<dt><code>.reserve</code></dt>
|
|
<dd><p>This must be followed by a symbol name, a positive number, and
|
|
<code>"bss"</code>. This behaves somewhat like <code>.lcomm</code>, but the
|
|
syntax is different.
|
|
</p>
|
|
<a name="index-seg-directive_002c-SPARC"></a>
|
|
</dd>
|
|
<dt><code>.seg</code></dt>
|
|
<dd><p>This must be followed by <code>"text"</code>, <code>"data"</code>, or
|
|
<code>"data1"</code>. It behaves like <code>.text</code>, <code>.data</code>, or
|
|
<code>.data 1</code>.
|
|
</p>
|
|
<a name="index-skip-directive_002c-SPARC"></a>
|
|
</dd>
|
|
<dt><code>.skip</code></dt>
|
|
<dd><p>This is functionally identical to the <code>.space</code> directive.
|
|
</p>
|
|
<a name="index-word-directive_002c-SPARC"></a>
|
|
</dd>
|
|
<dt><code>.word</code></dt>
|
|
<dd><p>On the Sparc, the <code>.word</code> directive produces 32 bit values,
|
|
instead of the 16 bit values it produces on many other machines.
|
|
</p>
|
|
<a name="index-xword-directive_002c-SPARC"></a>
|
|
</dd>
|
|
<dt><code>.xword</code></dt>
|
|
<dd><p>On the Sparc V9 processor, the <code>.xword</code> directive produces
|
|
64 bit values.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="TIC54X_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC6X_002dDependent" accesskey="n" rel="next">TIC6X-Dependent</a>, Previous: <a href="#Sparc_002dDependent" accesskey="p" rel="previous">Sparc-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="TIC54X-Dependent-Features"></a>
|
|
<h3 class="section">9.45 TIC54X Dependent Features</h3>
|
|
|
|
<a name="index-TIC54X-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dOpts" accesskey="1">TIC54X-Opts</a>:</td><td> </td><td align="left" valign="top">Command-line Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dBlock" accesskey="2">TIC54X-Block</a>:</td><td> </td><td align="left" valign="top">Blocking
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dEnv" accesskey="3">TIC54X-Env</a>:</td><td> </td><td align="left" valign="top">Environment Settings
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dConstants" accesskey="4">TIC54X-Constants</a>:</td><td> </td><td align="left" valign="top">Constants Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dSubsyms" accesskey="5">TIC54X-Subsyms</a>:</td><td> </td><td align="left" valign="top">String Substitution
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dLocals" accesskey="6">TIC54X-Locals</a>:</td><td> </td><td align="left" valign="top">Local Label Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dBuiltins" accesskey="7">TIC54X-Builtins</a>:</td><td> </td><td align="left" valign="top">Builtin Assembler Math Functions
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dExt" accesskey="8">TIC54X-Ext</a>:</td><td> </td><td align="left" valign="top">Extended Addressing Support
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dDirectives" accesskey="9">TIC54X-Directives</a>:</td><td> </td><td align="left" valign="top">Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dMacros">TIC54X-Macros</a>:</td><td> </td><td align="left" valign="top">Macro Features
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dMMRegs">TIC54X-MMRegs</a>:</td><td> </td><td align="left" valign="top">Memory-mapped Registers
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dSyntax">TIC54X-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="TIC54X_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC54X_002dBlock" accesskey="n" rel="next">TIC54X-Block</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-25"></a>
|
|
<h4 class="subsection">9.45.1 Options</h4>
|
|
|
|
<a name="index-options_002c-TIC54X"></a>
|
|
<a name="index-TIC54X-options"></a>
|
|
<p>The TMS320C54X version of <code>as</code> has a few machine-dependent options.
|
|
</p>
|
|
<a name="index-_002dmfar_002dmode-option_002c-far_002dmode"></a>
|
|
<a name="index-_002dmf-option_002c-far_002dmode"></a>
|
|
<p>You can use the ‘<samp>-mfar-mode</samp>’ option to enable extended addressing mode.
|
|
All addresses will be assumed to be > 16 bits, and the appropriate
|
|
relocation types will be used. This option is equivalent to using the
|
|
‘<samp>.far_mode</samp>’ directive in the assembly code. If you do not use the
|
|
‘<samp>-mfar-mode</samp>’ option, all references will be assumed to be 16 bits.
|
|
This option may be abbreviated to ‘<samp>-mf</samp>’.
|
|
</p>
|
|
<a name="index-_002dmcpu-option_002c-cpu"></a>
|
|
<p>You can use the ‘<samp>-mcpu</samp>’ option to specify a particular CPU.
|
|
This option is equivalent to using the ‘<samp>.version</samp>’ directive in the
|
|
assembly code. For recognized CPU codes, see
|
|
See <a href="#TIC54X_002dDirectives"><code>.version</code></a>. The default CPU version is
|
|
‘<samp>542</samp>’.
|
|
</p>
|
|
<a name="index-_002dmerrors_002dto_002dfile-option_002c-stderr-redirect"></a>
|
|
<a name="index-_002dme-option_002c-stderr-redirect"></a>
|
|
<p>You can use the ‘<samp>-merrors-to-file</samp>’ option to redirect error output
|
|
to a file (this provided for those deficient environments which don’t
|
|
provide adequate output redirection). This option may be abbreviated to
|
|
‘<samp>-me</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="TIC54X_002dBlock"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC54X_002dEnv" accesskey="n" rel="next">TIC54X-Env</a>, Previous: <a href="#TIC54X_002dOpts" accesskey="p" rel="previous">TIC54X-Opts</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Blocking"></a>
|
|
<h4 class="subsection">9.45.2 Blocking</h4>
|
|
<p>A blocked section or memory block is guaranteed not to cross the blocking
|
|
boundary (usually a page, or 128 words) if it is smaller than the
|
|
blocking size, or to start on a page boundary if it is larger than the
|
|
blocking size.
|
|
</p>
|
|
<hr>
|
|
<a name="TIC54X_002dEnv"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC54X_002dConstants" accesskey="n" rel="next">TIC54X-Constants</a>, Previous: <a href="#TIC54X_002dBlock" accesskey="p" rel="previous">TIC54X-Block</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Environment-Settings"></a>
|
|
<h4 class="subsection">9.45.3 Environment Settings</h4>
|
|
|
|
<a name="index-environment-settings_002c-TIC54X"></a>
|
|
<a name="index-A_005fDIR-environment-variable_002c-TIC54X"></a>
|
|
<a name="index-C54XDSP_005fDIR-environment-variable_002c-TIC54X"></a>
|
|
<p>‘<samp>C54XDSP_DIR</samp>’ and ‘<samp>A_DIR</samp>’ are semicolon-separated
|
|
paths which are added to the list of directories normally searched for
|
|
source and include files. ‘<samp>C54XDSP_DIR</samp>’ will override ‘<samp>A_DIR</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="TIC54X_002dConstants"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC54X_002dSubsyms" accesskey="n" rel="next">TIC54X-Subsyms</a>, Previous: <a href="#TIC54X_002dEnv" accesskey="p" rel="previous">TIC54X-Env</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Constants-Syntax"></a>
|
|
<h4 class="subsection">9.45.4 Constants Syntax</h4>
|
|
|
|
<a name="index-constants_002c-TIC54X"></a>
|
|
<p>The TIC54X version of <code>as</code> allows the following additional
|
|
constant formats, using a suffix to indicate the radix:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"><a name="index-binary-constants_002c-TIC54X"></a>
|
|
Binary <code>000000B, 011000b</code>
|
|
Octal <code>10Q, 224q</code>
|
|
Hexadecimal <code>45h, 0FH</code>
|
|
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="TIC54X_002dSubsyms"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC54X_002dLocals" accesskey="n" rel="next">TIC54X-Locals</a>, Previous: <a href="#TIC54X_002dConstants" accesskey="p" rel="previous">TIC54X-Constants</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="String-Substitution"></a>
|
|
<h4 class="subsection">9.45.5 String Substitution</h4>
|
|
<p>A subset of allowable symbols (which we’ll call subsyms) may be assigned
|
|
arbitrary string values. This is roughly equivalent to C preprocessor
|
|
#define macros. When <code>as</code> encounters one of these
|
|
symbols, the symbol is replaced in the input stream by its string value.
|
|
Subsym names <strong>must</strong> begin with a letter.
|
|
</p>
|
|
<p>Subsyms may be defined using the <code>.asg</code> and <code>.eval</code> directives
|
|
(See <a href="#TIC54X_002dDirectives"><code>.asg</code></a>,
|
|
See <a href="#TIC54X_002dDirectives"><code>.eval</code></a>.
|
|
</p>
|
|
<p>Expansion is recursive until a previously encountered symbol is seen, at
|
|
which point substitution stops.
|
|
</p>
|
|
<p>In this example, x is replaced with SYM2; SYM2 is replaced with SYM1, and SYM1
|
|
is replaced with x. At this point, x has already been encountered
|
|
and the substitution stops.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .asg "x",SYM1
|
|
.asg "SYM1",SYM2
|
|
.asg "SYM2",x
|
|
add x,a ; final code assembled is "add x, a"
|
|
</pre></div>
|
|
|
|
<p>Macro parameters are converted to subsyms; a side effect of this is the normal
|
|
<code>as</code> ’\ARG’ dereferencing syntax is unnecessary. Subsyms
|
|
defined within a macro will have global scope, unless the <code>.var</code>
|
|
directive is used to identify the subsym as a local macro variable
|
|
see <a href="#TIC54X_002dDirectives"><code>.var</code></a>.
|
|
</p>
|
|
<p>Substitution may be forced in situations where replacement might be
|
|
ambiguous by placing colons on either side of the subsym. The following
|
|
code:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .eval "10",x
|
|
LAB:X: add #x, a
|
|
</pre></div>
|
|
|
|
<p>When assembled becomes:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">LAB10 add #10, a
|
|
</pre></div>
|
|
|
|
<p>Smaller parts of the string assigned to a subsym may be accessed with
|
|
the following syntax:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code><code>:<var>symbol</var>(<var>char_index</var>):</code></code></dt>
|
|
<dd><p>Evaluates to a single-character string, the character at <var>char_index</var>.
|
|
</p></dd>
|
|
<dt><code><code>:<var>symbol</var>(<var>start</var>,<var>length</var>):</code></code></dt>
|
|
<dd><p>Evaluates to a substring of <var>symbol</var> beginning at <var>start</var> with
|
|
length <var>length</var>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="TIC54X_002dLocals"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC54X_002dBuiltins" accesskey="n" rel="next">TIC54X-Builtins</a>, Previous: <a href="#TIC54X_002dSubsyms" accesskey="p" rel="previous">TIC54X-Subsyms</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Local-Labels"></a>
|
|
<h4 class="subsection">9.45.6 Local Labels</h4>
|
|
<p>Local labels may be defined in two ways:
|
|
</p>
|
|
<ul>
|
|
<li> $N, where N is a decimal number between 0 and 9
|
|
</li><li> LABEL?, where LABEL is any legal symbol name.
|
|
</li></ul>
|
|
|
|
<p>Local labels thus defined may be redefined or automatically generated.
|
|
The scope of a local label is based on when it may be undefined or reset.
|
|
This happens when one of the following situations is encountered:
|
|
</p>
|
|
<ul>
|
|
<li> .newblock directive see <a href="#TIC54X_002dDirectives"><code>.newblock</code></a>
|
|
</li><li> The current section is changed (.sect, .text, or .data)
|
|
</li><li> Entering or leaving an included file
|
|
</li><li> The macro scope where the label was defined is exited
|
|
</li></ul>
|
|
|
|
<hr>
|
|
<a name="TIC54X_002dBuiltins"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC54X_002dExt" accesskey="n" rel="next">TIC54X-Ext</a>, Previous: <a href="#TIC54X_002dLocals" accesskey="p" rel="previous">TIC54X-Locals</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Math-Builtins"></a>
|
|
<h4 class="subsection">9.45.7 Math Builtins</h4>
|
|
|
|
<a name="index-math-builtins_002c-TIC54X"></a>
|
|
<a name="index-TIC54X-builtin-math-functions"></a>
|
|
<a name="index-builtin-math-functions_002c-TIC54X"></a>
|
|
|
|
<p>The following built-in functions may be used to generate a
|
|
floating-point value. All return a floating-point value except
|
|
‘<samp>$cvi</samp>’, ‘<samp>$int</samp>’, and ‘<samp>$sgn</samp>’, which return an integer
|
|
value.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_0024acos-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$acos(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point arccosine of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024asin-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$asin(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point arcsine of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024atan-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$atan(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point arctangent of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024atan2-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$atan2(<var>expr1</var>,<var>expr2</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point arctangent of <var>expr1</var> / <var>expr2</var>.
|
|
</p>
|
|
<a name="index-_0024ceil-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$ceil(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the smallest integer not less than <var>expr</var> as floating point.
|
|
</p>
|
|
<a name="index-_0024cosh-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$cosh(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point hyperbolic cosine of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024cos-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$cos(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point cosine of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024cvf-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$cvf(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the integer value <var>expr</var> converted to floating-point.
|
|
</p>
|
|
<a name="index-_0024cvi-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$cvi(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point value <var>expr</var> converted to integer.
|
|
</p>
|
|
<a name="index-_0024exp-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$exp(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point value e ^ <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024fabs-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$fabs(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point absolute value of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024floor-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$floor(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the largest integer that is not greater than <var>expr</var> as
|
|
floating point.
|
|
</p>
|
|
<a name="index-_0024fmod-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$fmod(<var>expr1</var>,<var>expr2</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point remainder of <var>expr1</var> / <var>expr2</var>.
|
|
</p>
|
|
<a name="index-_0024int-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$int(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns 1 if <var>expr</var> evaluates to an integer, zero otherwise.
|
|
</p>
|
|
<a name="index-_0024ldexp-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$ldexp(<var>expr1</var>,<var>expr2</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point value <var>expr1</var> * 2 ^ <var>expr2</var>.
|
|
</p>
|
|
<a name="index-_0024log10-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$log10(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the base 10 logarithm of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024log-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$log(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the natural logarithm of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024max-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$max(<var>expr1</var>,<var>expr2</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point maximum of <var>expr1</var> and <var>expr2</var>.
|
|
</p>
|
|
<a name="index-_0024min-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$min(<var>expr1</var>,<var>expr2</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point minimum of <var>expr1</var> and <var>expr2</var>.
|
|
</p>
|
|
<a name="index-_0024pow-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$pow(<var>expr1</var>,<var>expr2</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point value <var>expr1</var> ^ <var>expr2</var>.
|
|
</p>
|
|
<a name="index-_0024round-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$round(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the nearest integer to <var>expr</var> as a floating point number.
|
|
</p>
|
|
<a name="index-_0024sgn-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$sgn(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns -1, 0, or 1 based on the sign of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024sin-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$sin(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point sine of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024sinh-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$sinh(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point hyperbolic sine of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024sqrt-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$sqrt(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point square root of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024tan-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$tan(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point tangent of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024tanh-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$tanh(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the floating point hyperbolic tangent of <var>expr</var>.
|
|
</p>
|
|
<a name="index-_0024trunc-math-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$trunc(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns the integer value of <var>expr</var> truncated towards zero as
|
|
floating point.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="TIC54X_002dExt"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC54X_002dDirectives" accesskey="n" rel="next">TIC54X-Directives</a>, Previous: <a href="#TIC54X_002dBuiltins" accesskey="p" rel="previous">TIC54X-Builtins</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Extended-Addressing"></a>
|
|
<h4 class="subsection">9.45.8 Extended Addressing</h4>
|
|
<p>The <code>LDX</code> pseudo-op is provided for loading the extended addressing bits
|
|
of a label or address. For example, if an address <code>_label</code> resides
|
|
in extended program memory, the value of <code>_label</code> may be loaded as
|
|
follows:
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample"> ldx #_label,16,a ; loads extended bits of _label
|
|
or #_label,a ; loads lower 16 bits of _label
|
|
bacc a ; full address is in accumulator A
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="TIC54X_002dDirectives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC54X_002dMacros" accesskey="n" rel="next">TIC54X-Macros</a>, Previous: <a href="#TIC54X_002dExt" accesskey="p" rel="previous">TIC54X-Ext</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directives-2"></a>
|
|
<h4 class="subsection">9.45.9 Directives</h4>
|
|
|
|
<a name="index-machine-directives_002c-TIC54X"></a>
|
|
<a name="index-TIC54X-machine-directives"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-align-directive_002c-TIC54X"></a>
|
|
<a name="index-even-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.align [<var>size</var>]</code></dt>
|
|
<dt><code>.even</code></dt>
|
|
<dd><p>Align the section program counter on the next boundary, based on
|
|
<var>size</var>. <var>size</var> may be any power of 2. <code>.even</code> is
|
|
equivalent to <code>.align</code> with a <var>size</var> of 2.
|
|
</p><dl compact="compact">
|
|
<dt><code>1</code></dt>
|
|
<dd><p>Align SPC to word boundary
|
|
</p></dd>
|
|
<dt><code>2</code></dt>
|
|
<dd><p>Align SPC to longword boundary (same as .even)
|
|
</p></dd>
|
|
<dt><code>128</code></dt>
|
|
<dd><p>Align SPC to page boundary
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="index-asg-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.asg <var>string</var>, <var>name</var></code></dt>
|
|
<dd><p>Assign <var>name</var> the string <var>string</var>. String replacement is
|
|
performed on <var>string</var> before assignment.
|
|
</p>
|
|
<a name="index-eval-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.eval <var>string</var>, <var>name</var></code></dt>
|
|
<dd><p>Evaluate the contents of string <var>string</var> and assign the result as a
|
|
string to the subsym <var>name</var>. String replacement is performed on
|
|
<var>string</var> before assignment.
|
|
</p>
|
|
<a name="index-bss-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.bss <var>symbol</var>, <var>size</var> [, [<var>blocking_flag</var>] [,<var>alignment_flag</var>]]</code></dt>
|
|
<dd><p>Reserve space for <var>symbol</var> in the .bss section. <var>size</var> is in
|
|
words. If present, <var>blocking_flag</var> indicates the allocated space
|
|
should be aligned on a page boundary if it would otherwise cross a page
|
|
boundary. If present, <var>alignment_flag</var> causes the assembler to
|
|
allocate <var>size</var> on a long word boundary.
|
|
</p>
|
|
<a name="index-byte-directive_002c-TIC54X"></a>
|
|
<a name="index-ubyte-directive_002c-TIC54X"></a>
|
|
<a name="index-char-directive_002c-TIC54X"></a>
|
|
<a name="index-uchar-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.byte <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.ubyte <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.char <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.uchar <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dd><p>Place one or more bytes into consecutive words of the current section.
|
|
The upper 8 bits of each word is zero-filled. If a label is used, it
|
|
points to the word allocated for the first byte encountered.
|
|
</p>
|
|
<a name="index-clink-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.clink ["<var>section_name</var>"]</code></dt>
|
|
<dd><p>Set STYP_CLINK flag for this section, which indicates to the linker that
|
|
if no symbols from this section are referenced, the section should not
|
|
be included in the link. If <var>section_name</var> is omitted, the current
|
|
section is used.
|
|
</p>
|
|
<a name="index-c_005fmode-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.c_mode</code></dt>
|
|
<dd><p>TBD.
|
|
</p>
|
|
<a name="index-copy-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.copy "<var>filename</var>" | <var>filename</var></code></dt>
|
|
<dt><code>.include "<var>filename</var>" | <var>filename</var></code></dt>
|
|
<dd><p>Read source statements from <var>filename</var>. The normal include search
|
|
path is used. Normally .copy will cause statements from the included
|
|
file to be printed in the assembly listing and .include will not, but
|
|
this distinction is not currently implemented.
|
|
</p>
|
|
<a name="index-data-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.data</code></dt>
|
|
<dd><p>Begin assembling code into the .data section.
|
|
</p>
|
|
<a name="index-double-directive_002c-TIC54X"></a>
|
|
<a name="index-ldouble-directive_002c-TIC54X"></a>
|
|
<a name="index-float-directive_002c-TIC54X"></a>
|
|
<a name="index-xfloat-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.double <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.ldouble <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.float <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.xfloat <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dd><p>Place an IEEE single-precision floating-point representation of one or
|
|
more floating-point values into the current section. All but
|
|
<code>.xfloat</code> align the result on a longword boundary. Values are
|
|
stored most-significant word first.
|
|
</p>
|
|
<a name="index-drlist-directive_002c-TIC54X"></a>
|
|
<a name="index-drnolist-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.drlist</code></dt>
|
|
<dt><code>.drnolist</code></dt>
|
|
<dd><p>Control printing of directives to the listing file. Ignored.
|
|
</p>
|
|
<a name="index-emsg-directive_002c-TIC54X"></a>
|
|
<a name="index-mmsg-directive_002c-TIC54X"></a>
|
|
<a name="index-wmsg-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.emsg <var>string</var></code></dt>
|
|
<dt><code>.mmsg <var>string</var></code></dt>
|
|
<dt><code>.wmsg <var>string</var></code></dt>
|
|
<dd><p>Emit a user-defined error, message, or warning, respectively.
|
|
</p>
|
|
<a name="index-far_005fmode-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.far_mode</code></dt>
|
|
<dd><p>Use extended addressing when assembling statements. This should appear
|
|
only once per file, and is equivalent to the -mfar-mode option see <a href="#TIC54X_002dOpts"><code>-mfar-mode</code></a>.
|
|
</p>
|
|
<a name="index-fclist-directive_002c-TIC54X"></a>
|
|
<a name="index-fcnolist-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.fclist</code></dt>
|
|
<dt><code>.fcnolist</code></dt>
|
|
<dd><p>Control printing of false conditional blocks to the listing file.
|
|
</p>
|
|
<a name="index-field-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.field <var>value</var> [,<var>size</var>]</code></dt>
|
|
<dd><p>Initialize a bitfield of <var>size</var> bits in the current section. If
|
|
<var>value</var> is relocatable, then <var>size</var> must be 16. <var>size</var>
|
|
defaults to 16 bits. If <var>value</var> does not fit into <var>size</var> bits,
|
|
the value will be truncated. Successive <code>.field</code> directives will
|
|
pack starting at the current word, filling the most significant bits
|
|
first, and aligning to the start of the next word if the field size does
|
|
not fit into the space remaining in the current word. A <code>.align</code>
|
|
directive with an operand of 1 will force the next <code>.field</code>
|
|
directive to begin packing into a new word. If a label is used, it
|
|
points to the word that contains the specified field.
|
|
</p>
|
|
<a name="index-global-directive_002c-TIC54X"></a>
|
|
<a name="index-def-directive_002c-TIC54X"></a>
|
|
<a name="index-ref-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.global <var>symbol</var> [,...,<var>symbol_n</var>]</code></dt>
|
|
<dt><code>.def <var>symbol</var> [,...,<var>symbol_n</var>]</code></dt>
|
|
<dt><code>.ref <var>symbol</var> [,...,<var>symbol_n</var>]</code></dt>
|
|
<dd><p><code>.def</code> nominally identifies a symbol defined in the current file
|
|
and available to other files. <code>.ref</code> identifies a symbol used in
|
|
the current file but defined elsewhere. Both map to the standard
|
|
<code>.global</code> directive.
|
|
</p>
|
|
<a name="index-half-directive_002c-TIC54X"></a>
|
|
<a name="index-uhalf-directive_002c-TIC54X"></a>
|
|
<a name="index-short-directive_002c-TIC54X"></a>
|
|
<a name="index-ushort-directive_002c-TIC54X"></a>
|
|
<a name="index-int-directive_002c-TIC54X"></a>
|
|
<a name="index-uint-directive_002c-TIC54X"></a>
|
|
<a name="index-word-directive_002c-TIC54X"></a>
|
|
<a name="index-uword-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.half <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.uhalf <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.short <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.ushort <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.int <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.uint <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.word <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.uword <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dd><p>Place one or more values into consecutive words of the current section.
|
|
If a label is used, it points to the word allocated for the first value
|
|
encountered.
|
|
</p>
|
|
<a name="index-label-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.label <var>symbol</var></code></dt>
|
|
<dd><p>Define a special <var>symbol</var> to refer to the load time address of the
|
|
current section program counter.
|
|
</p>
|
|
<a name="index-length-directive_002c-TIC54X"></a>
|
|
<a name="index-width-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.length</code></dt>
|
|
<dt><code>.width</code></dt>
|
|
<dd><p>Set the page length and width of the output listing file. Ignored.
|
|
</p>
|
|
<a name="index-list-directive_002c-TIC54X"></a>
|
|
<a name="index-nolist-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.list</code></dt>
|
|
<dt><code>.nolist</code></dt>
|
|
<dd><p>Control whether the source listing is printed. Ignored.
|
|
</p>
|
|
<a name="index-long-directive_002c-TIC54X"></a>
|
|
<a name="index-ulong-directive_002c-TIC54X"></a>
|
|
<a name="index-xlong-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.long <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.ulong <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dt><code>.xlong <var>value</var> [,...,<var>value_n</var>]</code></dt>
|
|
<dd><p>Place one or more 32-bit values into consecutive words in the current
|
|
section. The most significant word is stored first. <code>.long</code> and
|
|
<code>.ulong</code> align the result on a longword boundary; <code>xlong</code> does
|
|
not.
|
|
</p>
|
|
<a name="index-loop-directive_002c-TIC54X"></a>
|
|
<a name="index-break-directive_002c-TIC54X"></a>
|
|
<a name="index-endloop-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.loop [<var>count</var>]</code></dt>
|
|
<dt><code>.break [<var>condition</var>]</code></dt>
|
|
<dt><code>.endloop</code></dt>
|
|
<dd><p>Repeatedly assemble a block of code. <code>.loop</code> begins the block, and
|
|
<code>.endloop</code> marks its termination. <var>count</var> defaults to 1024,
|
|
and indicates the number of times the block should be repeated.
|
|
<code>.break</code> terminates the loop so that assembly begins after the
|
|
<code>.endloop</code> directive. The optional <var>condition</var> will cause the
|
|
loop to terminate only if it evaluates to zero.
|
|
</p>
|
|
<a name="index-macro-directive_002c-TIC54X"></a>
|
|
<a name="index-endm-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><var>macro_name</var> .macro [<var>param1</var>][,...<var>param_n</var>]</code></dt>
|
|
<dt><code>[.mexit]</code></dt>
|
|
<dt><code>.endm</code></dt>
|
|
<dd><p>See the section on macros for more explanation (See <a href="#TIC54X_002dMacros">TIC54X-Macros</a>.
|
|
</p>
|
|
<a name="index-mlib-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.mlib "<var>filename</var>" | <var>filename</var></code></dt>
|
|
<dd><p>Load the macro library <var>filename</var>. <var>filename</var> must be an
|
|
archived library (BFD ar-compatible) of text files, expected to contain
|
|
only macro definitions. The standard include search path is used.
|
|
</p>
|
|
<a name="index-mlist-directive_002c-TIC54X"></a>
|
|
<a name="index-mnolist-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.mlist</code></dt>
|
|
<dt><code>.mnolist</code></dt>
|
|
<dd><p>Control whether to include macro and loop block expansions in the
|
|
listing output. Ignored.
|
|
</p>
|
|
<a name="index-mmregs-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.mmregs</code></dt>
|
|
<dd><p>Define global symbolic names for the ’c54x registers. Supposedly
|
|
equivalent to executing <code>.set</code> directives for each register with
|
|
its memory-mapped value, but in reality is provided only for
|
|
compatibility and does nothing.
|
|
</p>
|
|
<a name="index-newblock-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.newblock</code></dt>
|
|
<dd><p>This directive resets any TIC54X local labels currently defined. Normal
|
|
<code>as</code> local labels are unaffected.
|
|
</p>
|
|
<a name="index-option-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.option <var>option_list</var></code></dt>
|
|
<dd><p>Set listing options. Ignored.
|
|
</p>
|
|
<a name="index-sblock-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.sblock "<var>section_name</var>" | <var>section_name</var> [,"<var>name_n</var>" | <var>name_n</var>]</code></dt>
|
|
<dd><p>Designate <var>section_name</var> for blocking. Blocking guarantees that a
|
|
section will start on a page boundary (128 words) if it would otherwise
|
|
cross a page boundary. Only initialized sections may be designated with
|
|
this directive. See also See <a href="#TIC54X_002dBlock">TIC54X-Block</a>.
|
|
</p>
|
|
<a name="index-sect-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.sect "<var>section_name</var>"</code></dt>
|
|
<dd><p>Define a named initialized section and make it the current section.
|
|
</p>
|
|
<a name="index-set-directive_002c-TIC54X"></a>
|
|
<a name="index-equ-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><var>symbol</var> .set "<var>value</var>"</code></dt>
|
|
<dt><code><var>symbol</var> .equ "<var>value</var>"</code></dt>
|
|
<dd><p>Equate a constant <var>value</var> to a <var>symbol</var>, which is placed in the
|
|
symbol table. <var>symbol</var> may not be previously defined.
|
|
</p>
|
|
<a name="index-space-directive_002c-TIC54X"></a>
|
|
<a name="index-bes-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.space <var>size_in_bits</var></code></dt>
|
|
<dt><code>.bes <var>size_in_bits</var></code></dt>
|
|
<dd><p>Reserve the given number of bits in the current section and zero-fill
|
|
them. If a label is used with <code>.space</code>, it points to the
|
|
<strong>first</strong> word reserved. With <code>.bes</code>, the label points to the
|
|
<strong>last</strong> word reserved.
|
|
</p>
|
|
<a name="index-sslist-directive_002c-TIC54X"></a>
|
|
<a name="index-ssnolist-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.sslist</code></dt>
|
|
<dt><code>.ssnolist</code></dt>
|
|
<dd><p>Controls the inclusion of subsym replacement in the listing output. Ignored.
|
|
</p>
|
|
<a name="index-string-directive_002c-TIC54X"></a>
|
|
<a name="index-pstring-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.string "<var>string</var>" [,...,"<var>string_n</var>"]</code></dt>
|
|
<dt><code>.pstring "<var>string</var>" [,...,"<var>string_n</var>"]</code></dt>
|
|
<dd><p>Place 8-bit characters from <var>string</var> into the current section.
|
|
<code>.string</code> zero-fills the upper 8 bits of each word, while
|
|
<code>.pstring</code> puts two characters into each word, filling the
|
|
most-significant bits first. Unused space is zero-filled. If a label
|
|
is used, it points to the first word initialized.
|
|
</p>
|
|
<a name="index-struct-directive_002c-TIC54X"></a>
|
|
<a name="index-tag-directive_002c-TIC54X"></a>
|
|
<a name="index-endstruct-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>[<var>stag</var>] .struct [<var>offset</var>]</code></dt>
|
|
<dt><code>[<var>name_1</var>] element [<var>count_1</var>]</code></dt>
|
|
<dt><code>[<var>name_2</var>] element [<var>count_2</var>]</code></dt>
|
|
<dt><code>[<var>tname</var>] .tag <var>stagx</var> [<var>tcount</var>]</code></dt>
|
|
<dt><code>...</code></dt>
|
|
<dt><code>[<var>name_n</var>] element [<var>count_n</var>]</code></dt>
|
|
<dt><code>[<var>ssize</var>] .endstruct</code></dt>
|
|
<dt><code><var>label</var> .tag [<var>stag</var>]</code></dt>
|
|
<dd><p>Assign symbolic offsets to the elements of a structure. <var>stag</var>
|
|
defines a symbol to use to reference the structure. <var>offset</var>
|
|
indicates a starting value to use for the first element encountered;
|
|
otherwise it defaults to zero. Each element can have a named offset,
|
|
<var>name</var>, which is a symbol assigned the value of the element’s offset
|
|
into the structure. If <var>stag</var> is missing, these become global
|
|
symbols. <var>count</var> adjusts the offset that many times, as if
|
|
<code>element</code> were an array. <code>element</code> may be one of
|
|
<code>.byte</code>, <code>.word</code>, <code>.long</code>, <code>.float</code>, or any
|
|
equivalent of those, and the structure offset is adjusted accordingly.
|
|
<code>.field</code> and <code>.string</code> are also allowed; the size of
|
|
<code>.field</code> is one bit, and <code>.string</code> is considered to be one
|
|
word in size. Only element descriptors, structure/union tags,
|
|
<code>.align</code> and conditional assembly directives are allowed within
|
|
<code>.struct</code>/<code>.endstruct</code>. <code>.align</code> aligns member offsets
|
|
to word boundaries only. <var>ssize</var>, if provided, will always be
|
|
assigned the size of the structure.
|
|
</p>
|
|
<p>The <code>.tag</code> directive, in addition to being used to define a
|
|
structure/union element within a structure, may be used to apply a
|
|
structure to a symbol. Once applied to <var>label</var>, the individual
|
|
structure elements may be applied to <var>label</var> to produce the desired
|
|
offsets using <var>label</var> as the structure base.
|
|
</p>
|
|
<a name="index-tab-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.tab</code></dt>
|
|
<dd><p>Set the tab size in the output listing. Ignored.
|
|
</p>
|
|
<a name="index-union-directive_002c-TIC54X"></a>
|
|
<a name="index-tag-directive_002c-TIC54X-1"></a>
|
|
<a name="index-endunion-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>[<var>utag</var>] .union</code></dt>
|
|
<dt><code>[<var>name_1</var>] element [<var>count_1</var>]</code></dt>
|
|
<dt><code>[<var>name_2</var>] element [<var>count_2</var>]</code></dt>
|
|
<dt><code>[<var>tname</var>] .tag <var>utagx</var>[,<var>tcount</var>]</code></dt>
|
|
<dt><code>...</code></dt>
|
|
<dt><code>[<var>name_n</var>] element [<var>count_n</var>]</code></dt>
|
|
<dt><code>[<var>usize</var>] .endstruct</code></dt>
|
|
<dt><code><var>label</var> .tag [<var>utag</var>]</code></dt>
|
|
<dd><p>Similar to <code>.struct</code>, but the offset after each element is reset to
|
|
zero, and the <var>usize</var> is set to the maximum of all defined elements.
|
|
Starting offset for the union is always zero.
|
|
</p>
|
|
<a name="index-usect-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>[<var>symbol</var>] .usect "<var>section_name</var>", <var>size</var>, [,[<var>blocking_flag</var>] [,<var>alignment_flag</var>]]</code></dt>
|
|
<dd><p>Reserve space for variables in a named, uninitialized section (similar to
|
|
.bss). <code>.usect</code> allows definitions sections independent of .bss.
|
|
<var>symbol</var> points to the first location reserved by this allocation.
|
|
The symbol may be used as a variable name. <var>size</var> is the allocated
|
|
size in words. <var>blocking_flag</var> indicates whether to block this
|
|
section on a page boundary (128 words) (see <a href="#TIC54X_002dBlock">TIC54X-Block</a>).
|
|
<var>alignment flag</var> indicates whether the section should be
|
|
longword-aligned.
|
|
</p>
|
|
<a name="index-var-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.var <var>sym</var>[,..., <var>sym_n</var>]</code></dt>
|
|
<dd><p>Define a subsym to be a local variable within a macro. See
|
|
See <a href="#TIC54X_002dMacros">TIC54X-Macros</a>.
|
|
</p>
|
|
<a name="index-version-directive_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code>.version <var>version</var></code></dt>
|
|
<dd><p>Set which processor to build instructions for. Though the following
|
|
values are accepted, the op is ignored.
|
|
</p><dl compact="compact">
|
|
<dt><code>541</code></dt>
|
|
<dt><code>542</code></dt>
|
|
<dt><code>543</code></dt>
|
|
<dt><code>545</code></dt>
|
|
<dt><code>545LP</code></dt>
|
|
<dt><code>546LP</code></dt>
|
|
<dt><code>548</code></dt>
|
|
<dt><code>549</code></dt>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="TIC54X_002dMacros"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC54X_002dMMRegs" accesskey="n" rel="next">TIC54X-MMRegs</a>, Previous: <a href="#TIC54X_002dDirectives" accesskey="p" rel="previous">TIC54X-Directives</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Macros-1"></a>
|
|
<h4 class="subsection">9.45.10 Macros</h4>
|
|
|
|
<a name="index-TIC54X_002dspecific-macros"></a>
|
|
<a name="index-macros_002c-TIC54X"></a>
|
|
<p>Macros do not require explicit dereferencing of arguments (i.e., \ARG).
|
|
</p>
|
|
<p>During macro expansion, the macro parameters are converted to subsyms.
|
|
If the number of arguments passed the macro invocation exceeds the
|
|
number of parameters defined, the last parameter is assigned the string
|
|
equivalent of all remaining arguments. If fewer arguments are given
|
|
than parameters, the missing parameters are assigned empty strings. To
|
|
include a comma in an argument, you must enclose the argument in quotes.
|
|
</p>
|
|
<a name="index-subsym-builtins_002c-TIC54X"></a>
|
|
<a name="index-TIC54X-subsym-builtins"></a>
|
|
<a name="index-builtin-subsym-functions_002c-TIC54X"></a>
|
|
<p>The following built-in subsym functions allow examination of the string
|
|
value of subsyms (or ordinary strings). The arguments are strings
|
|
unless otherwise indicated (subsyms passed as args will be replaced by
|
|
the strings they represent).
|
|
</p><dl compact="compact">
|
|
<dd><a name="index-_0024symlen-subsym-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$symlen(<var>str</var>)</code></code></dt>
|
|
<dd><p>Returns the length of <var>str</var>.
|
|
</p>
|
|
<a name="index-_0024symcmp-subsym-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$symcmp(<var>str1</var>,<var>str2</var>)</code></code></dt>
|
|
<dd><p>Returns 0 if <var>str1</var> == <var>str2</var>, non-zero otherwise.
|
|
</p>
|
|
<a name="index-_0024firstch-subsym-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$firstch(<var>str</var>,<var>ch</var>)</code></code></dt>
|
|
<dd><p>Returns index of the first occurrence of character constant <var>ch</var> in
|
|
<var>str</var>.
|
|
</p>
|
|
<a name="index-_0024lastch-subsym-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$lastch(<var>str</var>,<var>ch</var>)</code></code></dt>
|
|
<dd><p>Returns index of the last occurrence of character constant <var>ch</var> in
|
|
<var>str</var>.
|
|
</p>
|
|
<a name="index-_0024isdefed-subsym-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$isdefed(<var>symbol</var>)</code></code></dt>
|
|
<dd><p>Returns zero if the symbol <var>symbol</var> is not in the symbol table,
|
|
non-zero otherwise.
|
|
</p>
|
|
<a name="index-_0024ismember-subsym-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$ismember(<var>symbol</var>,<var>list</var>)</code></code></dt>
|
|
<dd><p>Assign the first member of comma-separated string <var>list</var> to
|
|
<var>symbol</var>; <var>list</var> is reassigned the remainder of the list. Returns
|
|
zero if <var>list</var> is a null string. Both arguments must be subsyms.
|
|
</p>
|
|
<a name="index-_0024iscons-subsym-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$iscons(<var>expr</var>)</code></code></dt>
|
|
<dd><p>Returns 1 if string <var>expr</var> is binary, 2 if octal, 3 if hexadecimal,
|
|
4 if a character, 5 if decimal, and zero if not an integer.
|
|
</p>
|
|
<a name="index-_0024isname-subsym-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$isname(<var>name</var>)</code></code></dt>
|
|
<dd><p>Returns 1 if <var>name</var> is a valid symbol name, zero otherwise.
|
|
</p>
|
|
<a name="index-_0024isreg-subsym-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$isreg(<var>reg</var>)</code></code></dt>
|
|
<dd><p>Returns 1 if <var>reg</var> is a valid predefined register name (AR0-AR7 only).
|
|
</p>
|
|
<a name="index-_0024structsz-subsym-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$structsz(<var>stag</var>)</code></code></dt>
|
|
<dd><p>Returns the size of the structure or union represented by <var>stag</var>.
|
|
</p>
|
|
<a name="index-_0024structacc-subsym-builtin_002c-TIC54X"></a>
|
|
</dd>
|
|
<dt><code><code>$structacc(<var>stag</var>)</code></code></dt>
|
|
<dd><p>Returns the reference point of the structure or union represented by
|
|
<var>stag</var>. Always returns zero.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="TIC54X_002dMMRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC54X_002dSyntax" accesskey="n" rel="next">TIC54X-Syntax</a>, Previous: <a href="#TIC54X_002dMacros" accesskey="p" rel="previous">TIC54X-Macros</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Memory_002dmapped-Registers"></a>
|
|
<h4 class="subsection">9.45.11 Memory-mapped Registers</h4>
|
|
|
|
<a name="index-TIC54X-memory_002dmapped-registers"></a>
|
|
<a name="index-registers_002c-TIC54X-memory_002dmapped"></a>
|
|
<a name="index-memory_002dmapped-registers_002c-TIC54X"></a>
|
|
<p>The following symbols are recognized as memory-mapped registers:
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="TIC54X_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#TIC54X_002dMMRegs" accesskey="p" rel="previous">TIC54X-MMRegs</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="TIC54X-Syntax"></a>
|
|
<h4 class="subsection">9.45.12 TIC54X Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#TIC54X_002dChars" accesskey="1">TIC54X-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="TIC54X_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#TIC54X_002dSyntax" accesskey="u" rel="up">TIC54X-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-36"></a>
|
|
<h4 class="subsubsection">9.45.12.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-TIC54X"></a>
|
|
<a name="index-TIC54X-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>;</samp>’ appearing anywhere on a line indicates the
|
|
start of a comment that extends to the end of that line.
|
|
</p>
|
|
<p>If a ‘<samp>#</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 (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<p>The presence of an asterisk (‘<samp>*</samp>’) at the start of a line also
|
|
indicates a comment that extends to the end of that line.
|
|
</p>
|
|
<a name="index-line-separator_002c-TIC54X"></a>
|
|
<a name="index-statement-separator_002c-TIC54X"></a>
|
|
<a name="index-TIC54X-line-separator"></a>
|
|
<p>The TIC54X assembler does not currently support a line separator
|
|
character.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="TIC6X_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TILE_002dGx_002dDependent" accesskey="n" rel="next">TILE-Gx-Dependent</a>, Previous: <a href="#TIC54X_002dDependent" accesskey="p" rel="previous">TIC54X-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="TIC6X-Dependent-Features"></a>
|
|
<h3 class="section">9.46 TIC6X Dependent Features</h3>
|
|
|
|
<a name="index-TIC6X-support"></a>
|
|
<a name="index-TMS320C6X-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#TIC6X-Options" accesskey="1">TIC6X Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC6X-Syntax" accesskey="2">TIC6X Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TIC6X-Directives" accesskey="3">TIC6X Directives</a>:</td><td> </td><td align="left" valign="top">Directives
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="TIC6X-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC6X-Syntax" accesskey="n" rel="next">TIC6X Syntax</a>, Up: <a href="#TIC6X_002dDependent" accesskey="u" rel="up">TIC6X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="TIC6X-Options-1"></a>
|
|
<h4 class="subsection">9.46.1 TIC6X Options</h4>
|
|
<a name="index-TIC6X-options"></a>
|
|
<a name="index-options-for-TIC6X"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dmarch_003d-command_002dline-option_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>-march=<var>arch</var></code></dt>
|
|
<dd><p>Enable (only) instructions from architecture <var>arch</var>. By default,
|
|
all instructions are permitted.
|
|
</p>
|
|
<p>The following values of <var>arch</var> are accepted: <code>c62x</code>,
|
|
<code>c64x</code>, <code>c64x+</code>, <code>c67x</code>, <code>c67x+</code>, <code>c674x</code>.
|
|
</p>
|
|
<a name="index-_002dmdsbt-command_002dline-option_002c-TIC6X"></a>
|
|
<a name="index-_002dmno_002ddsbt-command_002dline-option_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>-mdsbt</code></dt>
|
|
<dt><code>-mno-dsbt</code></dt>
|
|
<dd><p>The <samp>-mdsbt</samp> option causes the assembler to generate the
|
|
<code>Tag_ABI_DSBT</code> attribute with a value of 1, indicating that the
|
|
code is using DSBT addressing. The <samp>-mno-dsbt</samp> option, the
|
|
default, causes the tag to have a value of 0, indicating that the code
|
|
does not use DSBT addressing. The linker will emit a warning if
|
|
objects of different type (DSBT and non-DSBT) are linked together.
|
|
</p>
|
|
<a name="index-_002dmpid_003d-command_002dline-option_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>-mpid=no</code></dt>
|
|
<dt><code>-mpid=near</code></dt>
|
|
<dt><code>-mpid=far</code></dt>
|
|
<dd><p>The <samp>-mpid=</samp> option causes the assembler to generate the
|
|
<code>Tag_ABI_PID</code> attribute with a value indicating the form of data
|
|
addressing used by the code. <samp>-mpid=no</samp>, the default,
|
|
indicates position-dependent data addressing, <samp>-mpid=near</samp>
|
|
indicates position-independent addressing with GOT accesses using near
|
|
DP addressing, and <samp>-mpid=far</samp> indicates position-independent
|
|
addressing with GOT accesses using far DP addressing. The linker will
|
|
emit a warning if objects built with different settings of this option
|
|
are linked together.
|
|
</p>
|
|
<a name="index-_002dmpic-command_002dline-option_002c-TIC6X"></a>
|
|
<a name="index-_002dmno_002dpic-command_002dline-option_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>-mpic</code></dt>
|
|
<dt><code>-mno-pic</code></dt>
|
|
<dd><p>The <samp>-mpic</samp> option causes the assembler to generate the
|
|
<code>Tag_ABI_PIC</code> attribute with a value of 1, indicating that the
|
|
code is using position-independent code addressing, The
|
|
<code>-mno-pic</code> option, the default, causes the tag to have a value of
|
|
0, indicating position-dependent code addressing. The linker will
|
|
emit a warning if objects of different type (position-dependent and
|
|
position-independent) are linked together.
|
|
</p>
|
|
<a name="index-TIC6X-big_002dendian-output"></a>
|
|
<a name="index-TIC6X-little_002dendian-output"></a>
|
|
<a name="index-big_002dendian-output_002c-TIC6X"></a>
|
|
<a name="index-little_002dendian-output_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>-mbig-endian</code></dt>
|
|
<dt><code>-mlittle-endian</code></dt>
|
|
<dd><p>Generate code for the specified endianness. The default is
|
|
little-endian.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="TIC6X-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TIC6X-Directives" accesskey="n" rel="next">TIC6X Directives</a>, Previous: <a href="#TIC6X-Options" accesskey="p" rel="previous">TIC6X Options</a>, Up: <a href="#TIC6X_002dDependent" accesskey="u" rel="up">TIC6X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="TIC6X-Syntax-1"></a>
|
|
<h4 class="subsection">9.46.2 TIC6X Syntax</h4>
|
|
|
|
<a name="index-line-comment-character_002c-TIC6X"></a>
|
|
<a name="index-TIC6X-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>;</samp>’ on a line indicates the start of a comment
|
|
that extends to the end of the current line. If a ‘<samp>#</samp>’ or
|
|
‘<samp>*</samp>’ appears as the first character of a line, the whole line is
|
|
treated as a comment. Note that if a line starts with a ‘<samp>#</samp>’
|
|
character then it can also be a logical line number directive
|
|
(see <a href="#Comments">Comments</a>) or a preprocessor control command
|
|
(see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-TIC6X"></a>
|
|
<a name="index-statement-separator_002c-TIC6X"></a>
|
|
<a name="index-TIC6X-line-separator"></a>
|
|
<p>The ‘<samp>@</samp>’ character can be used instead of a newline to separate
|
|
statements.
|
|
</p>
|
|
<p>Instruction, register and functional unit names are case-insensitive.
|
|
<code>as</code> requires fully-specified functional unit names,
|
|
such as ‘<samp>.S1</samp>’, ‘<samp>.L1X</samp>’ or ‘<samp>.D1T2</samp>’, on all instructions
|
|
using a functional unit.
|
|
</p>
|
|
<p>For some instructions, there may be syntactic ambiguity between
|
|
register or functional unit names and the names of labels or other
|
|
symbols. To avoid this, enclose the ambiguous symbol name in
|
|
parentheses; register and functional unit names may not be enclosed in
|
|
parentheses.
|
|
</p>
|
|
<hr>
|
|
<a name="TIC6X-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#TIC6X-Syntax" accesskey="p" rel="previous">TIC6X Syntax</a>, Up: <a href="#TIC6X_002dDependent" accesskey="u" rel="up">TIC6X-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="TIC6X-Directives-1"></a>
|
|
<h4 class="subsection">9.46.3 TIC6X Directives</h4>
|
|
|
|
<a name="index-machine-directives_002c-TIC6X"></a>
|
|
<a name="index-TIC6X-machine-directives"></a>
|
|
|
|
<p>Directives controlling the set of instructions accepted by the
|
|
assembler have effect for instructions between the directive and any
|
|
subsequent directive overriding it.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002earch-directive_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>.arch <var>arch</var></code></dt>
|
|
<dd><p>This has the same effect as <samp>-march=<var>arch</var></samp>.
|
|
</p>
|
|
<a name="index-_002ecantunwind-directive_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>.cantunwind</code></dt>
|
|
<dd><p>Prevents unwinding through the current function. No personality routine
|
|
or exception table data is required or permitted.
|
|
</p>
|
|
<p>If this is not specified then frame unwinding information will be
|
|
constructed from CFI directives. see <a href="#CFI-directives">CFI directives</a>.
|
|
</p>
|
|
<a name="index-_002ec6xabi_005fattribute-directive_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>.c6xabi_attribute <var>tag</var>, <var>value</var></code></dt>
|
|
<dd><p>Set the C6000 EABI build attribute <var>tag</var> to <var>value</var>.
|
|
</p>
|
|
<p>The <var>tag</var> is either an attribute number or one of
|
|
<code>Tag_ISA</code>, <code>Tag_ABI_wchar_t</code>,
|
|
<code>Tag_ABI_stack_align_needed</code>,
|
|
<code>Tag_ABI_stack_align_preserved</code>, <code>Tag_ABI_DSBT</code>,
|
|
<code>Tag_ABI_PID</code>, <code>Tag_ABI_PIC</code>,
|
|
<code>TAG_ABI_array_object_alignment</code>,
|
|
<code>TAG_ABI_array_object_align_expected</code>,
|
|
<code>Tag_ABI_compatibility</code> and <code>Tag_ABI_conformance</code>. The
|
|
<var>value</var> is either a <code>number</code>, <code>"string"</code>, or
|
|
<code>number, "string"</code> depending on the tag.
|
|
</p>
|
|
<a name="index-_002eehtype-directive_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>.ehtype <var>symbol</var></code></dt>
|
|
<dd><p>Output an exception type table reference to <var>symbol</var>.
|
|
</p>
|
|
<a name="index-_002eendp-directive_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>.endp</code></dt>
|
|
<dd><p>Marks the end of and exception table or function. If preceded by a
|
|
<code>.handlerdata</code> directive then this also switched back to the previous
|
|
text section.
|
|
</p>
|
|
<a name="index-_002ehandlerdata-directive_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>.handlerdata</code></dt>
|
|
<dd><p>Marks the end of the current function, and the start of the exception table
|
|
entry for that function. Anything between this directive and the
|
|
<code>.endp</code> directive will be added to the exception table entry.
|
|
</p>
|
|
<p>Must be preceded by a CFI block containing a <code>.cfi_lsda</code> directive.
|
|
</p>
|
|
<a name="index-_002enocmp-directive_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>.nocmp</code></dt>
|
|
<dd><p>Disallow use of C64x+ compact instructions in the current text
|
|
section.
|
|
</p>
|
|
<a name="index-_002epersonalityindex-directive_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>.personalityindex <var>index</var></code></dt>
|
|
<dd><p>Sets the personality routine for the current function to the ABI specified
|
|
compact routine number <var>index</var>
|
|
</p>
|
|
<a name="index-_002epersonality-directive_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>.personality <var>name</var></code></dt>
|
|
<dd><p>Sets the personality routine for the current function to <var>name</var>.
|
|
</p>
|
|
<a name="index-_002escomm-directive_002c-TIC6X"></a>
|
|
</dd>
|
|
<dt><code>.scomm <var>symbol</var>, <var>size</var>, <var>align</var></code></dt>
|
|
<dd><p>Like <code>.comm</code>, creating a common symbol <var>symbol</var> with size <var>size</var>
|
|
and alignment <var>align</var>, but unlike when using <code>.comm</code>, this symbol
|
|
will be placed into the small BSS section by the linker.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
<hr>
|
|
<a name="TILE_002dGx_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TILEPro_002dDependent" accesskey="n" rel="next">TILEPro-Dependent</a>, Previous: <a href="#TIC6X_002dDependent" accesskey="p" rel="previous">TIC6X-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="TILE_002dGx-Dependent-Features"></a>
|
|
<h3 class="section">9.47 TILE-Gx Dependent Features</h3>
|
|
|
|
<a name="index-TILE_002dGx-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#TILE_002dGx-Options" accesskey="1">TILE-Gx Options</a>:</td><td> </td><td align="left" valign="top">TILE-Gx Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TILE_002dGx-Syntax" accesskey="2">TILE-Gx Syntax</a>:</td><td> </td><td align="left" valign="top">TILE-Gx Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TILE_002dGx-Directives" accesskey="3">TILE-Gx Directives</a>:</td><td> </td><td align="left" valign="top">TILE-Gx Directives
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="TILE_002dGx-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TILE_002dGx-Syntax" accesskey="n" rel="next">TILE-Gx Syntax</a>, Up: <a href="#TILE_002dGx_002dDependent" accesskey="u" rel="up">TILE-Gx-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-26"></a>
|
|
<h4 class="subsection">9.47.1 Options</h4>
|
|
|
|
<p>The following table lists all available TILE-Gx specific options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dm32-option_002c-TILE_002dGx"></a>
|
|
<a name="index-_002dm64-option_002c-TILE_002dGx"></a>
|
|
</dd>
|
|
<dt><code>-m32 | -m64</code></dt>
|
|
<dd><p>Select the word size, either 32 bits or 64 bits.
|
|
</p>
|
|
<a name="index-_002dEB-option_002c-TILE_002dGx"></a>
|
|
<a name="index-_002dEL-option_002c-TILE_002dGx"></a>
|
|
</dd>
|
|
<dt><code>-EB | -EL</code></dt>
|
|
<dd><p>Select the endianness, either big-endian (-EB) or little-endian (-EL).
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="TILE_002dGx-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TILE_002dGx-Directives" accesskey="n" rel="next">TILE-Gx Directives</a>, Previous: <a href="#TILE_002dGx-Options" accesskey="p" rel="previous">TILE-Gx Options</a>, Up: <a href="#TILE_002dGx_002dDependent" accesskey="u" rel="up">TILE-Gx-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-28"></a>
|
|
<h4 class="subsection">9.47.2 Syntax</h4>
|
|
<a name="index-TILE_002dGx-syntax"></a>
|
|
<a name="index-syntax_002c-TILE_002dGx"></a>
|
|
|
|
<p>Block comments are delimited by ‘<samp>/*</samp>’ and ‘<samp>*/</samp>’. End of line
|
|
comments may be introduced by ‘<samp>#</samp>’.
|
|
</p>
|
|
<p>Instructions consist of a leading opcode or macro name followed by
|
|
whitespace and an optional comma-separated list of operands:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><var>opcode</var> [<var>operand</var>, …]
|
|
</pre></div>
|
|
|
|
<p>Instructions must be separated by a newline or semicolon.
|
|
</p>
|
|
<p>There are two ways to write code: either write naked instructions,
|
|
which the assembler is free to combine into VLIW bundles, or specify
|
|
the VLIW bundles explicitly.
|
|
</p>
|
|
<p>Bundles are specified using curly braces:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">{ <var>add</var> r3,r4,r5 ; <var>add</var> r7,r8,r9 ; <var>lw</var> r10,r11 }
|
|
</pre></div>
|
|
|
|
<p>A bundle can span multiple lines. If you want to put multiple
|
|
instructions on a line, whether in a bundle or not, you need to
|
|
separate them with semicolons as in this example.
|
|
</p>
|
|
<p>A bundle may contain one or more instructions, up to the limit
|
|
specified by the ISA (currently three). If fewer instructions are
|
|
specified than the hardware supports in a bundle, the assembler
|
|
inserts <code>fnop</code> instructions automatically.
|
|
</p>
|
|
<p>The assembler will prefer to preserve the ordering of instructions
|
|
within the bundle, putting the first instruction in a lower-numbered
|
|
pipeline than the next one, etc. This fact, combined with the
|
|
optional use of explicit <code>fnop</code> or <code>nop</code> instructions,
|
|
allows precise control over which pipeline executes each instruction.
|
|
</p>
|
|
<p>If the instructions cannot be bundled in the listed order, the
|
|
assembler will automatically try to find a valid pipeline
|
|
assignment. If there is no way to bundle the instructions together,
|
|
the assembler reports an error.
|
|
</p>
|
|
<p>The assembler does not yet auto-bundle (automatically combine multiple
|
|
instructions into one bundle), but it reserves the right to do so in
|
|
the future. If you want to force an instruction to run by itself, put
|
|
it in a bundle explicitly with curly braces and use <code>nop</code>
|
|
instructions (not <code>fnop</code>) to fill the remaining pipeline slots in
|
|
that bundle.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#TILE_002dGx-Opcodes" accesskey="1">TILE-Gx Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcode Naming Conventions.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TILE_002dGx-Registers" accesskey="2">TILE-Gx Registers</a>:</td><td> </td><td align="left" valign="top">Register Naming.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TILE_002dGx-Modifiers" accesskey="3">TILE-Gx Modifiers</a>:</td><td> </td><td align="left" valign="top">Symbolic Operand Modifiers.
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="TILE_002dGx-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TILE_002dGx-Registers" accesskey="n" rel="next">TILE-Gx Registers</a>, Up: <a href="#TILE_002dGx-Syntax" accesskey="u" rel="up">TILE-Gx Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcode-Names"></a>
|
|
<h4 class="subsubsection">9.47.2.1 Opcode Names</h4>
|
|
<a name="index-TILE_002dGx-opcode-names"></a>
|
|
<a name="index-opcode-names_002c-TILE_002dGx"></a>
|
|
|
|
<p>For a complete list of opcodes and descriptions of their semantics,
|
|
see <cite>TILE-Gx Instruction Set Architecture</cite>, available upon
|
|
request at www.tilera.com.
|
|
</p>
|
|
<hr>
|
|
<a name="TILE_002dGx-Registers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TILE_002dGx-Modifiers" accesskey="n" rel="next">TILE-Gx Modifiers</a>, Previous: <a href="#TILE_002dGx-Opcodes" accesskey="p" rel="previous">TILE-Gx Opcodes</a>, Up: <a href="#TILE_002dGx-Syntax" accesskey="u" rel="up">TILE-Gx Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-17"></a>
|
|
<h4 class="subsubsection">9.47.2.2 Register Names</h4>
|
|
<a name="index-TILE_002dGx-register-names"></a>
|
|
<a name="index-register-names_002c-TILE_002dGx"></a>
|
|
|
|
<p>General-purpose registers are represented by predefined symbols of the
|
|
form ‘<samp>r<var>N</var></samp>’, where <var>N</var> represents a number between
|
|
<code>0</code> and <code>63</code>. However, the following registers have
|
|
canonical names that must be used instead:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>r54</code></dt>
|
|
<dd><p>sp
|
|
</p>
|
|
</dd>
|
|
<dt><code>r55</code></dt>
|
|
<dd><p>lr
|
|
</p>
|
|
</dd>
|
|
<dt><code>r56</code></dt>
|
|
<dd><p>sn
|
|
</p>
|
|
</dd>
|
|
<dt><code>r57</code></dt>
|
|
<dd><p>idn0
|
|
</p>
|
|
</dd>
|
|
<dt><code>r58</code></dt>
|
|
<dd><p>idn1
|
|
</p>
|
|
</dd>
|
|
<dt><code>r59</code></dt>
|
|
<dd><p>udn0
|
|
</p>
|
|
</dd>
|
|
<dt><code>r60</code></dt>
|
|
<dd><p>udn1
|
|
</p>
|
|
</dd>
|
|
<dt><code>r61</code></dt>
|
|
<dd><p>udn2
|
|
</p>
|
|
</dd>
|
|
<dt><code>r62</code></dt>
|
|
<dd><p>udn3
|
|
</p>
|
|
</dd>
|
|
<dt><code>r63</code></dt>
|
|
<dd><p>zero
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The assembler will emit a warning if a numeric name is used instead of
|
|
the non-numeric name. The <code>.no_require_canonical_reg_names</code>
|
|
assembler pseudo-op turns off this
|
|
warning. <code>.require_canonical_reg_names</code> turns it back on.
|
|
</p>
|
|
<hr>
|
|
<a name="TILE_002dGx-Modifiers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#TILE_002dGx-Registers" accesskey="p" rel="previous">TILE-Gx Registers</a>, Up: <a href="#TILE_002dGx-Syntax" accesskey="u" rel="up">TILE-Gx Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbolic-Operand-Modifiers-4"></a>
|
|
<h4 class="subsubsection">9.47.2.3 Symbolic Operand Modifiers</h4>
|
|
<a name="index-TILE_002dGx-modifiers"></a>
|
|
<a name="index-symbol-modifiers_002c-TILE_002dGx"></a>
|
|
|
|
<p>The assembler supports several modifiers when using symbol addresses
|
|
in TILE-Gx instruction operands. The general syntax is the following:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">modifier(symbol)
|
|
</pre></div>
|
|
|
|
<p>The following modifiers are supported:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>hw0</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 0-15 of the symbol’s address.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw1</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 16-31 of the symbol’s address.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw2</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 32-47 of the symbol’s address.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw3</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 48-63 of the symbol’s address.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw0_last</code></dt>
|
|
<dd>
|
|
<p>This modifier yields the same value as <code>hw0</code>, but it also checks
|
|
that the value does not overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw1_last</code></dt>
|
|
<dd>
|
|
<p>This modifier yields the same value as <code>hw1</code>, but it also checks
|
|
that the value does not overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw2_last</code></dt>
|
|
<dd>
|
|
<p>This modifier yields the same value as <code>hw2</code>, but it also checks
|
|
that the value does not overflow.
|
|
</p>
|
|
<p>A 48-bit symbolic value is constructed by using the following idiom:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">moveli r0, hw2_last(sym)
|
|
shl16insli r0, r0, hw1(sym)
|
|
shl16insli r0, r0, hw0(sym)
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>hw0_got</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 0-15 of the symbol’s offset in the
|
|
GOT entry corresponding to the symbol.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw0_last_got</code></dt>
|
|
<dd>
|
|
<p>This modifier yields the same value as <code>hw0_got</code>, but it also
|
|
checks that the value does not overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw1_last_got</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 16-31 of the symbol’s offset in the
|
|
GOT entry corresponding to the symbol, and it also checks that the
|
|
value does not overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code>plt</code></dt>
|
|
<dd>
|
|
<p>This modifier is used for function symbols. It causes a
|
|
<em>procedure linkage table</em>, an array of code stubs, to be created
|
|
at the time the shared object is created or linked against, together
|
|
with a global offset table entry. The value is a pc-relative offset
|
|
to the corresponding stub code in the procedure linkage table. This
|
|
arrangement causes the run-time symbol resolver to be called to look
|
|
up and set the value of the symbol the first time the function is
|
|
called (at latest; depending environment variables). It is only safe
|
|
to leave the symbol unresolved this way if all references are function
|
|
calls.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw0_plt</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 0-15 of the pc-relative address of
|
|
a plt entry.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw1_plt</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 16-31 of the pc-relative address of
|
|
a plt entry.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw1_last_plt</code></dt>
|
|
<dd>
|
|
<p>This modifier yields the same value as <code>hw1_plt</code>, but it also
|
|
checks that the value does not overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw2_last_plt</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 32-47 of the pc-relative address of
|
|
a plt entry, and it also checks that the value does not overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw0_tls_gd</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 0-15 of the offset of the GOT entry
|
|
of the symbol’s TLS descriptor, to be used for general-dynamic TLS
|
|
accesses.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw0_last_tls_gd</code></dt>
|
|
<dd>
|
|
<p>This modifier yields the same value as <code>hw0_tls_gd</code>, but it also
|
|
checks that the value does not overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw1_last_tls_gd</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 16-31 of the offset of the GOT
|
|
entry of the symbol’s TLS descriptor, to be used for general-dynamic
|
|
TLS accesses. It also checks that the value does not overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw0_tls_ie</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 0-15 of the offset of the GOT entry
|
|
containing the offset of the symbol’s address from the TCB, to be used
|
|
for initial-exec TLS accesses.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw0_last_tls_ie</code></dt>
|
|
<dd>
|
|
<p>This modifier yields the same value as <code>hw0_tls_ie</code>, but it also
|
|
checks that the value does not overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw1_last_tls_ie</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 16-31 of the offset of the GOT
|
|
entry containing the offset of the symbol’s address from the TCB, to
|
|
be used for initial-exec TLS accesses. It also checks that the value
|
|
does not overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw0_tls_le</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 0-15 of the offset of the symbol’s
|
|
address from the TCB, to be used for local-exec TLS accesses.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw0_last_tls_le</code></dt>
|
|
<dd>
|
|
<p>This modifier yields the same value as <code>hw0_tls_le</code>, but it also
|
|
checks that the value does not overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code>hw1_last_tls_le</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load bits 16-31 of the offset of the symbol’s
|
|
address from the TCB, to be used for local-exec TLS accesses. It
|
|
also checks that the value does not overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_gd_call</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to tag an instruction as the “call” part of a
|
|
calling sequence for a TLS GD reference of its operand.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_gd_add</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to tag an instruction as the “add” part of a
|
|
calling sequence for a TLS GD reference of its operand.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_ie_load</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to tag an instruction as the “load” part of a
|
|
calling sequence for a TLS IE reference of its operand.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="TILE_002dGx-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#TILE_002dGx-Syntax" accesskey="p" rel="previous">TILE-Gx Syntax</a>, Up: <a href="#TILE_002dGx_002dDependent" accesskey="u" rel="up">TILE-Gx-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="TILE_002dGx-Directives-1"></a>
|
|
<h4 class="subsection">9.47.3 TILE-Gx Directives</h4>
|
|
<a name="index-machine-directives_002c-TILE_002dGx"></a>
|
|
<a name="index-TILE_002dGx-machine-directives"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002ealign-directive_002c-TILE_002dGx"></a>
|
|
</dd>
|
|
<dt><code>.align <var>expression</var> [, <var>expression</var>]</code></dt>
|
|
<dd><p>This is the generic <var>.align</var> directive. The first argument is the
|
|
requested alignment in bytes.
|
|
</p>
|
|
<a name="index-_002eallow_005fsuspicious_005fbundles-directive_002c-TILE_002dGx"></a>
|
|
</dd>
|
|
<dt><code>.allow_suspicious_bundles</code></dt>
|
|
<dd><p>Turns on error checking for combinations of instructions in a bundle
|
|
that probably indicate a programming error. This is on by default.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.no_allow_suspicious_bundles</code></dt>
|
|
<dd><p>Turns off error checking for combinations of instructions in a bundle
|
|
that probably indicate a programming error.
|
|
</p>
|
|
<a name="index-_002erequire_005fcanonical_005freg_005fnames-directive_002c-TILE_002dGx"></a>
|
|
</dd>
|
|
<dt><code>.require_canonical_reg_names</code></dt>
|
|
<dd><p>Require that canonical register names be used, and emit a warning if
|
|
the numeric names are used. This is on by default.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.no_require_canonical_reg_names</code></dt>
|
|
<dd><p>Permit the use of numeric names for registers that have canonical
|
|
names.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="TILEPro_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#V850_002dDependent" accesskey="n" rel="next">V850-Dependent</a>, Previous: <a href="#TILE_002dGx_002dDependent" accesskey="p" rel="previous">TILE-Gx-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="TILEPro-Dependent-Features"></a>
|
|
<h3 class="section">9.48 TILEPro Dependent Features</h3>
|
|
|
|
<a name="index-TILEPro-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#TILEPro-Options" accesskey="1">TILEPro Options</a>:</td><td> </td><td align="left" valign="top">TILEPro Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TILEPro-Syntax" accesskey="2">TILEPro Syntax</a>:</td><td> </td><td align="left" valign="top">TILEPro Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TILEPro-Directives" accesskey="3">TILEPro Directives</a>:</td><td> </td><td align="left" valign="top">TILEPro Directives
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="TILEPro-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TILEPro-Syntax" accesskey="n" rel="next">TILEPro Syntax</a>, Up: <a href="#TILEPro_002dDependent" accesskey="u" rel="up">TILEPro-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-27"></a>
|
|
<h4 class="subsection">9.48.1 Options</h4>
|
|
|
|
<p><code>as</code> has no machine-dependent command-line options for
|
|
TILEPro.
|
|
</p>
|
|
<hr>
|
|
<a name="TILEPro-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TILEPro-Directives" accesskey="n" rel="next">TILEPro Directives</a>, Previous: <a href="#TILEPro-Options" accesskey="p" rel="previous">TILEPro Options</a>, Up: <a href="#TILEPro_002dDependent" accesskey="u" rel="up">TILEPro-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-29"></a>
|
|
<h4 class="subsection">9.48.2 Syntax</h4>
|
|
<a name="index-TILEPro-syntax"></a>
|
|
<a name="index-syntax_002c-TILEPro"></a>
|
|
|
|
<p>Block comments are delimited by ‘<samp>/*</samp>’ and ‘<samp>*/</samp>’. End of line
|
|
comments may be introduced by ‘<samp>#</samp>’.
|
|
</p>
|
|
<p>Instructions consist of a leading opcode or macro name followed by
|
|
whitespace and an optional comma-separated list of operands:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><var>opcode</var> [<var>operand</var>, …]
|
|
</pre></div>
|
|
|
|
<p>Instructions must be separated by a newline or semicolon.
|
|
</p>
|
|
<p>There are two ways to write code: either write naked instructions,
|
|
which the assembler is free to combine into VLIW bundles, or specify
|
|
the VLIW bundles explicitly.
|
|
</p>
|
|
<p>Bundles are specified using curly braces:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">{ <var>add</var> r3,r4,r5 ; <var>add</var> r7,r8,r9 ; <var>lw</var> r10,r11 }
|
|
</pre></div>
|
|
|
|
<p>A bundle can span multiple lines. If you want to put multiple
|
|
instructions on a line, whether in a bundle or not, you need to
|
|
separate them with semicolons as in this example.
|
|
</p>
|
|
<p>A bundle may contain one or more instructions, up to the limit
|
|
specified by the ISA (currently three). If fewer instructions are
|
|
specified than the hardware supports in a bundle, the assembler
|
|
inserts <code>fnop</code> instructions automatically.
|
|
</p>
|
|
<p>The assembler will prefer to preserve the ordering of instructions
|
|
within the bundle, putting the first instruction in a lower-numbered
|
|
pipeline than the next one, etc. This fact, combined with the
|
|
optional use of explicit <code>fnop</code> or <code>nop</code> instructions,
|
|
allows precise control over which pipeline executes each instruction.
|
|
</p>
|
|
<p>If the instructions cannot be bundled in the listed order, the
|
|
assembler will automatically try to find a valid pipeline
|
|
assignment. If there is no way to bundle the instructions together,
|
|
the assembler reports an error.
|
|
</p>
|
|
<p>The assembler does not yet auto-bundle (automatically combine multiple
|
|
instructions into one bundle), but it reserves the right to do so in
|
|
the future. If you want to force an instruction to run by itself, put
|
|
it in a bundle explicitly with curly braces and use <code>nop</code>
|
|
instructions (not <code>fnop</code>) to fill the remaining pipeline slots in
|
|
that bundle.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#TILEPro-Opcodes" accesskey="1">TILEPro Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcode Naming Conventions.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TILEPro-Registers" accesskey="2">TILEPro Registers</a>:</td><td> </td><td align="left" valign="top">Register Naming.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#TILEPro-Modifiers" accesskey="3">TILEPro Modifiers</a>:</td><td> </td><td align="left" valign="top">Symbolic Operand Modifiers.
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="TILEPro-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TILEPro-Registers" accesskey="n" rel="next">TILEPro Registers</a>, Up: <a href="#TILEPro-Syntax" accesskey="u" rel="up">TILEPro Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcode-Names-1"></a>
|
|
<h4 class="subsubsection">9.48.2.1 Opcode Names</h4>
|
|
<a name="index-TILEPro-opcode-names"></a>
|
|
<a name="index-opcode-names_002c-TILEPro"></a>
|
|
|
|
<p>For a complete list of opcodes and descriptions of their semantics,
|
|
see <cite>TILE Processor User Architecture Manual</cite>, available upon
|
|
request at www.tilera.com.
|
|
</p>
|
|
<hr>
|
|
<a name="TILEPro-Registers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#TILEPro-Modifiers" accesskey="n" rel="next">TILEPro Modifiers</a>, Previous: <a href="#TILEPro-Opcodes" accesskey="p" rel="previous">TILEPro Opcodes</a>, Up: <a href="#TILEPro-Syntax" accesskey="u" rel="up">TILEPro Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-18"></a>
|
|
<h4 class="subsubsection">9.48.2.2 Register Names</h4>
|
|
<a name="index-TILEPro-register-names"></a>
|
|
<a name="index-register-names_002c-TILEPro"></a>
|
|
|
|
<p>General-purpose registers are represented by predefined symbols of the
|
|
form ‘<samp>r<var>N</var></samp>’, where <var>N</var> represents a number between
|
|
<code>0</code> and <code>63</code>. However, the following registers have
|
|
canonical names that must be used instead:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>r54</code></dt>
|
|
<dd><p>sp
|
|
</p>
|
|
</dd>
|
|
<dt><code>r55</code></dt>
|
|
<dd><p>lr
|
|
</p>
|
|
</dd>
|
|
<dt><code>r56</code></dt>
|
|
<dd><p>sn
|
|
</p>
|
|
</dd>
|
|
<dt><code>r57</code></dt>
|
|
<dd><p>idn0
|
|
</p>
|
|
</dd>
|
|
<dt><code>r58</code></dt>
|
|
<dd><p>idn1
|
|
</p>
|
|
</dd>
|
|
<dt><code>r59</code></dt>
|
|
<dd><p>udn0
|
|
</p>
|
|
</dd>
|
|
<dt><code>r60</code></dt>
|
|
<dd><p>udn1
|
|
</p>
|
|
</dd>
|
|
<dt><code>r61</code></dt>
|
|
<dd><p>udn2
|
|
</p>
|
|
</dd>
|
|
<dt><code>r62</code></dt>
|
|
<dd><p>udn3
|
|
</p>
|
|
</dd>
|
|
<dt><code>r63</code></dt>
|
|
<dd><p>zero
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The assembler will emit a warning if a numeric name is used instead of
|
|
the canonical name. The <code>.no_require_canonical_reg_names</code>
|
|
assembler pseudo-op turns off this
|
|
warning. <code>.require_canonical_reg_names</code> turns it back on.
|
|
</p>
|
|
<hr>
|
|
<a name="TILEPro-Modifiers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#TILEPro-Registers" accesskey="p" rel="previous">TILEPro Registers</a>, Up: <a href="#TILEPro-Syntax" accesskey="u" rel="up">TILEPro Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Symbolic-Operand-Modifiers-5"></a>
|
|
<h4 class="subsubsection">9.48.2.3 Symbolic Operand Modifiers</h4>
|
|
<a name="index-TILEPro-modifiers"></a>
|
|
<a name="index-symbol-modifiers_002c-TILEPro"></a>
|
|
|
|
<p>The assembler supports several modifiers when using symbol addresses
|
|
in TILEPro instruction operands. The general syntax is the following:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">modifier(symbol)
|
|
</pre></div>
|
|
|
|
<p>The following modifiers are supported:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>lo16</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the low 16 bits of the symbol’s address,
|
|
sign-extended to a 32-bit value (sign-extension allows it to be
|
|
range-checked against signed 16 bit immediate operands without
|
|
complaint).
|
|
</p>
|
|
</dd>
|
|
<dt><code>hi16</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the high 16 bits of the symbol’s
|
|
address, also sign-extended to a 32-bit value.
|
|
</p>
|
|
</dd>
|
|
<dt><code>ha16</code></dt>
|
|
<dd>
|
|
<p><code>ha16(N)</code> is identical to <code>hi16(N)</code>, except if
|
|
<code>lo16(N)</code> is negative it adds one to the <code>hi16(N)</code>
|
|
value. This way <code>lo16</code> and <code>ha16</code> can be added to create any
|
|
32-bit value using <code>auli</code>. For example, here is how you move an
|
|
arbitrary 32-bit address into r3:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">moveli r3, lo16(sym)
|
|
auli r3, r3, ha16(sym)
|
|
</pre></div>
|
|
|
|
</dd>
|
|
<dt><code>got</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the offset of the GOT entry
|
|
corresponding to the symbol.
|
|
</p>
|
|
</dd>
|
|
<dt><code>got_lo16</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the sign-extended low 16 bits of the
|
|
offset of the GOT entry corresponding to the symbol.
|
|
</p>
|
|
</dd>
|
|
<dt><code>got_hi16</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the sign-extended high 16 bits of the
|
|
offset of the GOT entry corresponding to the symbol.
|
|
</p>
|
|
</dd>
|
|
<dt><code>got_ha16</code></dt>
|
|
<dd>
|
|
<p>This modifier is like <code>got_hi16</code>, but it adds one if
|
|
<code>got_lo16</code> of the input value is negative.
|
|
</p>
|
|
</dd>
|
|
<dt><code>plt</code></dt>
|
|
<dd>
|
|
<p>This modifier is used for function symbols. It causes a
|
|
<em>procedure linkage table</em>, an array of code stubs, to be created
|
|
at the time the shared object is created or linked against, together
|
|
with a global offset table entry. The value is a pc-relative offset
|
|
to the corresponding stub code in the procedure linkage table. This
|
|
arrangement causes the run-time symbol resolver to be called to look
|
|
up and set the value of the symbol the first time the function is
|
|
called (at latest; depending environment variables). It is only safe
|
|
to leave the symbol unresolved this way if all references are function
|
|
calls.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_gd</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the offset of the GOT entry of the
|
|
symbol’s TLS descriptor, to be used for general-dynamic TLS accesses.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_gd_lo16</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the sign-extended low 16 bits of the
|
|
offset of the GOT entry of the symbol’s TLS descriptor, to be used for
|
|
general dynamic TLS accesses.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_gd_hi16</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the sign-extended high 16 bits of the
|
|
offset of the GOT entry of the symbol’s TLS descriptor, to be used for
|
|
general dynamic TLS accesses.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_gd_ha16</code></dt>
|
|
<dd>
|
|
<p>This modifier is like <code>tls_gd_hi16</code>, but it adds one to the value
|
|
if <code>tls_gd_lo16</code> of the input value is negative.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_ie</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the offset of the GOT entry containing
|
|
the offset of the symbol’s address from the TCB, to be used for
|
|
initial-exec TLS accesses.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_ie_lo16</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the low 16 bits of the offset of the GOT
|
|
entry containing the offset of the symbol’s address from the TCB, to
|
|
be used for initial-exec TLS accesses.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_ie_hi16</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the high 16 bits of the offset of the
|
|
GOT entry containing the offset of the symbol’s address from the TCB,
|
|
to be used for initial-exec TLS accesses.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_ie_ha16</code></dt>
|
|
<dd>
|
|
<p>This modifier is like <code>tls_ie_hi16</code>, but it adds one to the value
|
|
if <code>tls_ie_lo16</code> of the input value is negative.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_le</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the offset of the symbol’s address from
|
|
the TCB, to be used for local-exec TLS accesses.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_le_lo16</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the low 16 bits of the offset of the
|
|
symbol’s address from the TCB, to be used for local-exec TLS accesses.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_le_hi16</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to load the high 16 bits of the offset of the
|
|
symbol’s address from the TCB, to be used for local-exec TLS accesses.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_le_ha16</code></dt>
|
|
<dd>
|
|
<p>This modifier is like <code>tls_le_hi16</code>, but it adds one to the value
|
|
if <code>tls_le_lo16</code> of the input value is negative.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_gd_call</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to tag an instruction as the “call” part of a
|
|
calling sequence for a TLS GD reference of its operand.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_gd_add</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to tag an instruction as the “add” part of a
|
|
calling sequence for a TLS GD reference of its operand.
|
|
</p>
|
|
</dd>
|
|
<dt><code>tls_ie_load</code></dt>
|
|
<dd>
|
|
<p>This modifier is used to tag an instruction as the “load” part of a
|
|
calling sequence for a TLS IE reference of its operand.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="TILEPro-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#TILEPro-Syntax" accesskey="p" rel="previous">TILEPro Syntax</a>, Up: <a href="#TILEPro_002dDependent" accesskey="u" rel="up">TILEPro-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="TILEPro-Directives-1"></a>
|
|
<h4 class="subsection">9.48.3 TILEPro Directives</h4>
|
|
<a name="index-machine-directives_002c-TILEPro"></a>
|
|
<a name="index-TILEPro-machine-directives"></a>
|
|
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002ealign-directive_002c-TILEPro"></a>
|
|
</dd>
|
|
<dt><code>.align <var>expression</var> [, <var>expression</var>]</code></dt>
|
|
<dd><p>This is the generic <var>.align</var> directive. The first argument is the
|
|
requested alignment in bytes.
|
|
</p>
|
|
<a name="index-_002eallow_005fsuspicious_005fbundles-directive_002c-TILEPro"></a>
|
|
</dd>
|
|
<dt><code>.allow_suspicious_bundles</code></dt>
|
|
<dd><p>Turns on error checking for combinations of instructions in a bundle
|
|
that probably indicate a programming error. This is on by default.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.no_allow_suspicious_bundles</code></dt>
|
|
<dd><p>Turns off error checking for combinations of instructions in a bundle
|
|
that probably indicate a programming error.
|
|
</p>
|
|
<a name="index-_002erequire_005fcanonical_005freg_005fnames-directive_002c-TILEPro"></a>
|
|
</dd>
|
|
<dt><code>.require_canonical_reg_names</code></dt>
|
|
<dd><p>Require that canonical register names be used, and emit a warning if
|
|
the numeric names are used. This is on by default.
|
|
</p>
|
|
</dd>
|
|
<dt><code>.no_require_canonical_reg_names</code></dt>
|
|
<dd><p>Permit the use of numeric names for registers that have canonical
|
|
names.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
|
|
<hr>
|
|
<a name="V850_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Vax_002dDependent" accesskey="n" rel="next">Vax-Dependent</a>, Previous: <a href="#TILEPro_002dDependent" accesskey="p" rel="previous">TILEPro-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="v850-Dependent-Features"></a>
|
|
<h3 class="section">9.49 v850 Dependent Features</h3>
|
|
|
|
<a name="index-V850-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#V850-Options" accesskey="1">V850 Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#V850-Syntax" accesskey="2">V850 Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#V850-Floating-Point" accesskey="3">V850 Floating Point</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#V850-Directives" accesskey="4">V850 Directives</a>:</td><td> </td><td align="left" valign="top">V850 Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#V850-Opcodes" accesskey="5">V850 Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="V850-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#V850-Syntax" accesskey="n" rel="next">V850 Syntax</a>, Up: <a href="#V850_002dDependent" accesskey="u" rel="up">V850-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-28"></a>
|
|
<h4 class="subsection">9.49.1 Options</h4>
|
|
<a name="index-V850-options-_0028none_0029"></a>
|
|
<a name="index-options-for-V850-_0028none_0029"></a>
|
|
<p><code>as</code> supports the following additional command-line options
|
|
for the V850 processor family:
|
|
</p>
|
|
<a name="index-command_002dline-options_002c-V850"></a>
|
|
<a name="index-V850-command_002dline-options"></a>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dwsigned_005foverflow-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-wsigned_overflow</code></dt>
|
|
<dd><p>Causes warnings to be produced when signed immediate values overflow the
|
|
space available for then within their opcodes. By default this option
|
|
is disabled as it is possible to receive spurious warnings due to using
|
|
exact bit patterns as immediate constants.
|
|
</p>
|
|
<a name="index-_002dwunsigned_005foverflow-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-wunsigned_overflow</code></dt>
|
|
<dd><p>Causes warnings to be produced when unsigned immediate values overflow
|
|
the space available for then within their opcodes. By default this
|
|
option is disabled as it is possible to receive spurious warnings due to
|
|
using exact bit patterns as immediate constants.
|
|
</p>
|
|
<a name="index-_002dmv850-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-mv850</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850 processor. This allows the linker to detect attempts to link
|
|
such code with code assembled for other processors.
|
|
</p>
|
|
<a name="index-_002dmv850e-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-mv850e</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850E processor. This allows the linker to detect attempts to link
|
|
such code with code assembled for other processors.
|
|
</p>
|
|
<a name="index-_002dmv850e1-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-mv850e1</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850E1 processor. This allows the linker to detect attempts to link
|
|
such code with code assembled for other processors.
|
|
</p>
|
|
<a name="index-_002dmv850any-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-mv850any</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850 processor but support instructions that are specific to the
|
|
extended variants of the process. This allows the production of
|
|
binaries that contain target specific code, but which are also intended
|
|
to be used in a generic fashion. For example libgcc.a contains generic
|
|
routines used by the code produced by GCC for all versions of the v850
|
|
architecture, together with support routines only used by the V850E
|
|
architecture.
|
|
</p>
|
|
<a name="index-_002dmv850e2-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-mv850e2</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850E2 processor. This allows the linker to detect attempts to link
|
|
such code with code assembled for other processors.
|
|
</p>
|
|
<a name="index-_002dmv850e2v3-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-mv850e2v3</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850E2V3 processor. This allows the linker to detect attempts to link
|
|
such code with code assembled for other processors.
|
|
</p>
|
|
<a name="index-_002dmv850e2v4-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-mv850e2v4</code></dt>
|
|
<dd><p>This is an alias for <samp>-mv850e3v5</samp>.
|
|
</p>
|
|
<a name="index-_002dmv850e3v5-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-mv850e3v5</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850E3V5 processor. This allows the linker to detect attempts to link
|
|
such code with code assembled for other processors.
|
|
</p>
|
|
<a name="index-_002dmrelax-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-mrelax</code></dt>
|
|
<dd><p>Enables relaxation. This allows the .longcall and .longjump pseudo
|
|
ops to be used in the assembler source code. These ops label sections
|
|
of code which are either a long function call or a long branch. The
|
|
assembler will then flag these sections of code and the linker will
|
|
attempt to relax them.
|
|
</p>
|
|
<a name="index-_002dmgcc_002dabi-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-mgcc-abi</code></dt>
|
|
<dd><p>Marks the generated object file as supporting the old GCC ABI.
|
|
</p>
|
|
<a name="index-_002dmrh850_002dabi-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-mrh850-abi</code></dt>
|
|
<dd><p>Marks the generated object file as supporting the RH850 ABI. This is
|
|
the default.
|
|
</p>
|
|
<a name="index-_002dm8byte_002dalign-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-m8byte-align</code></dt>
|
|
<dd><p>Marks the generated object file as supporting a maximum 64-bits of
|
|
alignment for variables defined in the source code.
|
|
</p>
|
|
<a name="index-_002dm4byte_002dalign-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-m4byte-align</code></dt>
|
|
<dd><p>Marks the generated object file as supporting a maximum 32-bits of
|
|
alignment for variables defined in the source code. This is the
|
|
default.
|
|
</p>
|
|
<a name="index-_002dmsoft_002dfloat-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-msoft-float</code></dt>
|
|
<dd><p>Marks the generated object file as not using any floating point
|
|
instructions - and hence can be linked with other V850 binaries
|
|
that do or do not use floating point. This is the default for
|
|
binaries for architectures earlier than the <code>e2v3</code>.
|
|
</p>
|
|
<a name="index-_002dmhard_002dfloat-command_002dline-option_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>-mhard-float</code></dt>
|
|
<dd><p>Marks the generated object file as one that uses floating point
|
|
instructions - and hence can only be linked with other V850 binaries
|
|
that use the same kind of floating point instructions, or with
|
|
binaries that do not use floating point at all. This is the default
|
|
for binaries the <code>e2v3</code> and later architectures.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="V850-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#V850-Floating-Point" accesskey="n" rel="next">V850 Floating Point</a>, Previous: <a href="#V850-Options" accesskey="p" rel="previous">V850 Options</a>, Up: <a href="#V850_002dDependent" accesskey="u" rel="up">V850-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-30"></a>
|
|
<h4 class="subsection">9.49.2 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#V850_002dChars" accesskey="1">V850-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#V850_002dRegs" accesskey="2">V850-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="V850_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#V850_002dRegs" accesskey="n" rel="next">V850-Regs</a>, Up: <a href="#V850-Syntax" accesskey="u" rel="up">V850 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-37"></a>
|
|
<h4 class="subsubsection">9.49.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-V850"></a>
|
|
<a name="index-V850-line-comment-character"></a>
|
|
<p>‘<samp>#</samp>’ is the line comment character. If a ‘<samp>#</samp>’ appears as the
|
|
first character of a line, the whole line is treated as a comment, but
|
|
in this case the line can also be a logical line number directive
|
|
(see <a href="#Comments">Comments</a>) or a preprocessor control command
|
|
(see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<p>Two dashes (‘<samp>--</samp>’) can also be used to start a line comment.
|
|
</p>
|
|
<a name="index-line-separator_002c-V850"></a>
|
|
<a name="index-statement-separator_002c-V850"></a>
|
|
<a name="index-V850-line-separator"></a>
|
|
|
|
<p>The ‘<samp>;</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
<hr>
|
|
<a name="V850_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#V850_002dChars" accesskey="p" rel="previous">V850-Chars</a>, Up: <a href="#V850-Syntax" accesskey="u" rel="up">V850 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-19"></a>
|
|
<h4 class="subsubsection">9.49.2.2 Register Names</h4>
|
|
|
|
<a name="index-V850-register-names"></a>
|
|
<a name="index-register-names_002c-V850"></a>
|
|
<p><code>as</code> supports the following names for registers:
|
|
</p><dl compact="compact">
|
|
<dd><a name="index-zero-register_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>general register 0</code></dt>
|
|
<dd><p>r0, zero
|
|
</p></dd>
|
|
<dt><code>general register 1</code></dt>
|
|
<dd><p>r1
|
|
</p></dd>
|
|
<dt><code>general register 2</code></dt>
|
|
<dd><p>r2, hp
|
|
<a name="index-sp-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>general register 3</code></dt>
|
|
<dd><p>r3, sp
|
|
<a name="index-gp-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>general register 4</code></dt>
|
|
<dd><p>r4, gp
|
|
<a name="index-tp-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>general register 5</code></dt>
|
|
<dd><p>r5, tp
|
|
</p></dd>
|
|
<dt><code>general register 6</code></dt>
|
|
<dd><p>r6
|
|
</p></dd>
|
|
<dt><code>general register 7</code></dt>
|
|
<dd><p>r7
|
|
</p></dd>
|
|
<dt><code>general register 8</code></dt>
|
|
<dd><p>r8
|
|
</p></dd>
|
|
<dt><code>general register 9</code></dt>
|
|
<dd><p>r9
|
|
</p></dd>
|
|
<dt><code>general register 10</code></dt>
|
|
<dd><p>r10
|
|
</p></dd>
|
|
<dt><code>general register 11</code></dt>
|
|
<dd><p>r11
|
|
</p></dd>
|
|
<dt><code>general register 12</code></dt>
|
|
<dd><p>r12
|
|
</p></dd>
|
|
<dt><code>general register 13</code></dt>
|
|
<dd><p>r13
|
|
</p></dd>
|
|
<dt><code>general register 14</code></dt>
|
|
<dd><p>r14
|
|
</p></dd>
|
|
<dt><code>general register 15</code></dt>
|
|
<dd><p>r15
|
|
</p></dd>
|
|
<dt><code>general register 16</code></dt>
|
|
<dd><p>r16
|
|
</p></dd>
|
|
<dt><code>general register 17</code></dt>
|
|
<dd><p>r17
|
|
</p></dd>
|
|
<dt><code>general register 18</code></dt>
|
|
<dd><p>r18
|
|
</p></dd>
|
|
<dt><code>general register 19</code></dt>
|
|
<dd><p>r19
|
|
</p></dd>
|
|
<dt><code>general register 20</code></dt>
|
|
<dd><p>r20
|
|
</p></dd>
|
|
<dt><code>general register 21</code></dt>
|
|
<dd><p>r21
|
|
</p></dd>
|
|
<dt><code>general register 22</code></dt>
|
|
<dd><p>r22
|
|
</p></dd>
|
|
<dt><code>general register 23</code></dt>
|
|
<dd><p>r23
|
|
</p></dd>
|
|
<dt><code>general register 24</code></dt>
|
|
<dd><p>r24
|
|
</p></dd>
|
|
<dt><code>general register 25</code></dt>
|
|
<dd><p>r25
|
|
</p></dd>
|
|
<dt><code>general register 26</code></dt>
|
|
<dd><p>r26
|
|
</p></dd>
|
|
<dt><code>general register 27</code></dt>
|
|
<dd><p>r27
|
|
</p></dd>
|
|
<dt><code>general register 28</code></dt>
|
|
<dd><p>r28
|
|
</p></dd>
|
|
<dt><code>general register 29</code></dt>
|
|
<dd><p>r29
|
|
<a name="index-ep-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>general register 30</code></dt>
|
|
<dd><p>r30, ep
|
|
<a name="index-lp-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>general register 31</code></dt>
|
|
<dd><p>r31, lp
|
|
<a name="index-eipc-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>system register 0</code></dt>
|
|
<dd><p>eipc
|
|
<a name="index-eipsw-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>system register 1</code></dt>
|
|
<dd><p>eipsw
|
|
<a name="index-fepc-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>system register 2</code></dt>
|
|
<dd><p>fepc
|
|
<a name="index-fepsw-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>system register 3</code></dt>
|
|
<dd><p>fepsw
|
|
<a name="index-ecr-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>system register 4</code></dt>
|
|
<dd><p>ecr
|
|
<a name="index-psw-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>system register 5</code></dt>
|
|
<dd><p>psw
|
|
<a name="index-ctpc-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>system register 16</code></dt>
|
|
<dd><p>ctpc
|
|
<a name="index-ctpsw-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>system register 17</code></dt>
|
|
<dd><p>ctpsw
|
|
<a name="index-dbpc-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>system register 18</code></dt>
|
|
<dd><p>dbpc
|
|
<a name="index-dbpsw-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>system register 19</code></dt>
|
|
<dd><p>dbpsw
|
|
<a name="index-ctbp-register_002c-V850"></a>
|
|
</p></dd>
|
|
<dt><code>system register 20</code></dt>
|
|
<dd><p>ctbp
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="V850-Floating-Point"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#V850-Directives" accesskey="n" rel="next">V850 Directives</a>, Previous: <a href="#V850-Syntax" accesskey="p" rel="previous">V850 Syntax</a>, Up: <a href="#V850_002dDependent" accesskey="u" rel="up">V850-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-16"></a>
|
|
<h4 class="subsection">9.49.3 Floating Point</h4>
|
|
|
|
<a name="index-floating-point_002c-V850-_0028IEEE_0029"></a>
|
|
<a name="index-V850-floating-point-_0028IEEE_0029"></a>
|
|
<p>The V850 family uses <small>IEEE</small> floating-point numbers.
|
|
</p>
|
|
<hr>
|
|
<a name="V850-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#V850-Opcodes" accesskey="n" rel="next">V850 Opcodes</a>, Previous: <a href="#V850-Floating-Point" accesskey="p" rel="previous">V850 Floating Point</a>, Up: <a href="#V850_002dDependent" accesskey="u" rel="up">V850-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="V850-Machine-Directives"></a>
|
|
<h4 class="subsection">9.49.4 V850 Machine Directives</h4>
|
|
|
|
<a name="index-machine-directives_002c-V850"></a>
|
|
<a name="index-V850-machine-directives"></a>
|
|
<dl compact="compact">
|
|
<dd><a name="index-offset-directive_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>.offset <var><expression></var></code></dt>
|
|
<dd><p>Moves the offset into the current section to the specified amount.
|
|
</p>
|
|
<a name="index-section-directive_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>.section "name", <type></code></dt>
|
|
<dd><p>This is an extension to the standard .section directive. It sets the
|
|
current section to be <type> and creates an alias for this section
|
|
called "name".
|
|
</p>
|
|
<a name="index-_002ev850-directive_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>.v850</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850 processor. This allows the linker to detect attempts to link
|
|
such code with code assembled for other processors.
|
|
</p>
|
|
<a name="index-_002ev850e-directive_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>.v850e</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850E processor. This allows the linker to detect attempts to link
|
|
such code with code assembled for other processors.
|
|
</p>
|
|
<a name="index-_002ev850e1-directive_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>.v850e1</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850E1 processor. This allows the linker to detect attempts to link
|
|
such code with code assembled for other processors.
|
|
</p>
|
|
<a name="index-_002ev850e2-directive_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>.v850e2</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850E2 processor. This allows the linker to detect attempts to link
|
|
such code with code assembled for other processors.
|
|
</p>
|
|
<a name="index-_002ev850e2v3-directive_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>.v850e2v3</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850E2V3 processor. This allows the linker to detect attempts to link
|
|
such code with code assembled for other processors.
|
|
</p>
|
|
<a name="index-_002ev850e2v4-directive_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>.v850e2v4</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850E3V5 processor. This allows the linker to detect attempts to link
|
|
such code with code assembled for other processors.
|
|
</p>
|
|
<a name="index-_002ev850e3v5-directive_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>.v850e3v5</code></dt>
|
|
<dd><p>Specifies that the assembled code should be marked as being targeted at
|
|
the V850E3V5 processor. This allows the linker to detect attempts to link
|
|
such code with code assembled for other processors.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="V850-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#V850-Directives" accesskey="p" rel="previous">V850 Directives</a>, Up: <a href="#V850_002dDependent" accesskey="u" rel="up">V850-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-19"></a>
|
|
<h4 class="subsection">9.49.5 Opcodes</h4>
|
|
|
|
<a name="index-V850-opcodes"></a>
|
|
<a name="index-opcodes-for-V850"></a>
|
|
<p><code>as</code> implements all the standard V850 opcodes.
|
|
</p>
|
|
<p><code>as</code> also implements the following pseudo ops:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-hi0-pseudo_002dop_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>hi0()</code></dt>
|
|
<dd><p>Computes the higher 16 bits of the given expression and stores it into
|
|
the immediate operand field of the given instruction. For example:
|
|
</p>
|
|
<p>‘<samp>mulhi hi0(here - there), r5, r6</samp>’
|
|
</p>
|
|
<p>computes the difference between the address of labels ’here’ and
|
|
’there’, takes the upper 16 bits of this difference, shifts it down 16
|
|
bits and then multiplies it by the lower 16 bits in register 5, putting
|
|
the result into register 6.
|
|
</p>
|
|
<a name="index-lo-pseudo_002dop_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>lo()</code></dt>
|
|
<dd><p>Computes the lower 16 bits of the given expression and stores it into
|
|
the immediate operand field of the given instruction. For example:
|
|
</p>
|
|
<p>‘<samp>addi lo(here - there), r5, r6</samp>’
|
|
</p>
|
|
<p>computes the difference between the address of labels ’here’ and
|
|
’there’, takes the lower 16 bits of this difference and adds it to
|
|
register 5, putting the result into register 6.
|
|
</p>
|
|
<a name="index-hi-pseudo_002dop_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>hi()</code></dt>
|
|
<dd><p>Computes the higher 16 bits of the given expression and then adds the
|
|
value of the most significant bit of the lower 16 bits of the expression
|
|
and stores the result into the immediate operand field of the given
|
|
instruction. For example the following code can be used to compute the
|
|
address of the label ’here’ and store it into register 6:
|
|
</p>
|
|
<p>‘<samp>movhi hi(here), r0, r6</samp>’
|
|
‘<samp>movea lo(here), r6, r6</samp>’
|
|
</p>
|
|
<p>The reason for this special behaviour is that movea performs a sign
|
|
extension on its immediate operand. So for example if the address of
|
|
’here’ was 0xFFFFFFFF then without the special behaviour of the hi()
|
|
pseudo-op the movhi instruction would put 0xFFFF0000 into r6, then the
|
|
movea instruction would takes its immediate operand, 0xFFFF, sign extend
|
|
it to 32 bits, 0xFFFFFFFF, and then add it into r6 giving 0xFFFEFFFF
|
|
which is wrong (the fifth nibble is E). With the hi() pseudo op adding
|
|
in the top bit of the lo() pseudo op, the movhi instruction actually
|
|
stores 0 into r6 (0xFFFF + 1 = 0x0000), so that the movea instruction
|
|
stores 0xFFFFFFFF into r6 - the right value.
|
|
</p>
|
|
<a name="index-hilo-pseudo_002dop_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>hilo()</code></dt>
|
|
<dd><p>Computes the 32 bit value of the given expression and stores it into
|
|
the immediate operand field of the given instruction (which must be a
|
|
mov instruction). For example:
|
|
</p>
|
|
<p>‘<samp>mov hilo(here), r6</samp>’
|
|
</p>
|
|
<p>computes the absolute address of label ’here’ and puts the result into
|
|
register 6.
|
|
</p>
|
|
<a name="index-sdaoff-pseudo_002dop_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>sdaoff()</code></dt>
|
|
<dd><p>Computes the offset of the named variable from the start of the Small
|
|
Data Area (whose address is held in register 4, the GP register) and
|
|
stores the result as a 16 bit signed value in the immediate operand
|
|
field of the given instruction. For example:
|
|
</p>
|
|
<p>‘<samp>ld.w sdaoff(_a_variable)[gp],r6</samp>’
|
|
</p>
|
|
<p>loads the contents of the location pointed to by the label ’_a_variable’
|
|
into register 6, provided that the label is located somewhere within +/-
|
|
32K of the address held in the GP register. [Note the linker assumes
|
|
that the GP register contains a fixed address set to the address of the
|
|
label called ’__gp’. This can either be set up automatically by the
|
|
linker, or specifically set by using the ‘<samp>--defsym __gp=<value></samp>’
|
|
command-line option].
|
|
</p>
|
|
<a name="index-tdaoff-pseudo_002dop_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>tdaoff()</code></dt>
|
|
<dd><p>Computes the offset of the named variable from the start of the Tiny
|
|
Data Area (whose address is held in register 30, the EP register) and
|
|
stores the result as a 4,5, 7 or 8 bit unsigned value in the immediate
|
|
operand field of the given instruction. For example:
|
|
</p>
|
|
<p>‘<samp>sld.w tdaoff(_a_variable)[ep],r6</samp>’
|
|
</p>
|
|
<p>loads the contents of the location pointed to by the label ’_a_variable’
|
|
into register 6, provided that the label is located somewhere within +256
|
|
bytes of the address held in the EP register. [Note the linker assumes
|
|
that the EP register contains a fixed address set to the address of the
|
|
label called ’__ep’. This can either be set up automatically by the
|
|
linker, or specifically set by using the ‘<samp>--defsym __ep=<value></samp>’
|
|
command-line option].
|
|
</p>
|
|
<a name="index-zdaoff-pseudo_002dop_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>zdaoff()</code></dt>
|
|
<dd><p>Computes the offset of the named variable from address 0 and stores the
|
|
result as a 16 bit signed value in the immediate operand field of the
|
|
given instruction. For example:
|
|
</p>
|
|
<p>‘<samp>movea zdaoff(_a_variable),zero,r6</samp>’
|
|
</p>
|
|
<p>puts the address of the label ’_a_variable’ into register 6, assuming
|
|
that the label is somewhere within the first 32K of memory. (Strictly
|
|
speaking it also possible to access the last 32K of memory as well, as
|
|
the offsets are signed).
|
|
</p>
|
|
<a name="index-ctoff-pseudo_002dop_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>ctoff()</code></dt>
|
|
<dd><p>Computes the offset of the named variable from the start of the Call
|
|
Table Area (whose address is held in system register 20, the CTBP
|
|
register) and stores the result a 6 or 16 bit unsigned value in the
|
|
immediate field of then given instruction or piece of data. For
|
|
example:
|
|
</p>
|
|
<p>‘<samp>callt ctoff(table_func1)</samp>’
|
|
</p>
|
|
<p>will put the call the function whose address is held in the call table
|
|
at the location labeled ’table_func1’.
|
|
</p>
|
|
<a name="index-longcall-pseudo_002dop_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>.longcall <code>name</code></code></dt>
|
|
<dd><p>Indicates that the following sequence of instructions is a long call
|
|
to function <code>name</code>. The linker will attempt to shorten this call
|
|
sequence if <code>name</code> is within a 22bit offset of the call. Only
|
|
valid if the <code>-mrelax</code> command-line switch has been enabled.
|
|
</p>
|
|
<a name="index-longjump-pseudo_002dop_002c-V850"></a>
|
|
</dd>
|
|
<dt><code>.longjump <code>name</code></code></dt>
|
|
<dd><p>Indicates that the following sequence of instructions is a long jump
|
|
to label <code>name</code>. The linker will attempt to shorten this code
|
|
sequence if <code>name</code> is within a 22bit offset of the jump. Only
|
|
valid if the <code>-mrelax</code> command-line switch has been enabled.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
<p>For information on the V850 instruction set, see <cite>V850
|
|
Family 32-/16-Bit single-Chip Microcontroller Architecture Manual</cite> from NEC.
|
|
Ltd.
|
|
</p>
|
|
<hr>
|
|
<a name="Vax_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Visium_002dDependent" accesskey="n" rel="next">Visium-Dependent</a>, Previous: <a href="#V850_002dDependent" accesskey="p" rel="previous">V850-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="VAX-Dependent-Features"></a>
|
|
<h3 class="section">9.50 VAX Dependent Features</h3>
|
|
<a name="index-VAX-support"></a>
|
|
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#VAX_002dOpts" accesskey="1">VAX-Opts</a>:</td><td> </td><td align="left" valign="top">VAX Command-Line Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#VAX_002dfloat" accesskey="2">VAX-float</a>:</td><td> </td><td align="left" valign="top">VAX Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#VAX_002ddirectives" accesskey="3">VAX-directives</a>:</td><td> </td><td align="left" valign="top">Vax Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#VAX_002dopcodes" accesskey="4">VAX-opcodes</a>:</td><td> </td><td align="left" valign="top">VAX Opcodes
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#VAX_002dbranch" accesskey="5">VAX-branch</a>:</td><td> </td><td align="left" valign="top">VAX Branch Improvement
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#VAX_002doperands" accesskey="6">VAX-operands</a>:</td><td> </td><td align="left" valign="top">VAX Operands
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#VAX_002dno" accesskey="7">VAX-no</a>:</td><td> </td><td align="left" valign="top">Not Supported on VAX
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#VAX_002dSyntax" accesskey="8">VAX-Syntax</a>:</td><td> </td><td align="left" valign="top">VAX Syntax
|
|
</td></tr>
|
|
</table>
|
|
|
|
|
|
<hr>
|
|
<a name="VAX_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#VAX_002dfloat" accesskey="n" rel="next">VAX-float</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="VAX-Command_002dLine-Options"></a>
|
|
<h4 class="subsection">9.50.1 VAX Command-Line Options</h4>
|
|
|
|
<a name="index-command_002dline-options-ignored_002c-VAX"></a>
|
|
<a name="index-VAX-command_002dline-options-ignored"></a>
|
|
<p>The Vax version of <code>as</code> accepts any of the following options,
|
|
gives a warning message that the option was ignored and proceeds.
|
|
These options are for compatibility with scripts designed for other
|
|
people’s assemblers.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dD_002c-ignored-on-VAX"></a>
|
|
<a name="index-_002dS_002c-ignored-on-VAX"></a>
|
|
<a name="index-_002dT_002c-ignored-on-VAX"></a>
|
|
</dd>
|
|
<dt><code><code>-D</code> (Debug)</code></dt>
|
|
<dt><code><code>-S</code> (Symbol Table)</code></dt>
|
|
<dt><code><code>-T</code> (Token Trace)</code></dt>
|
|
<dd><p>These are obsolete options used to debug old assemblers.
|
|
</p>
|
|
<a name="index-_002dd_002c-VAX-option"></a>
|
|
</dd>
|
|
<dt><code><code>-d</code> (Displacement size for JUMPs)</code></dt>
|
|
<dd><p>This option expects a number following the ‘<samp>-d</samp>’. Like options
|
|
that expect filenames, the number may immediately follow the
|
|
‘<samp>-d</samp>’ (old standard) or constitute the whole of the command-line
|
|
argument that follows ‘<samp>-d</samp>’ (<small>GNU</small> standard).
|
|
</p>
|
|
<a name="index-_002dV_002c-redundant-on-VAX"></a>
|
|
</dd>
|
|
<dt><code><code>-V</code> (Virtualize Interpass Temporary File)</code></dt>
|
|
<dd><p>Some other assemblers use a temporary file. This option
|
|
commanded them to keep the information in active memory rather
|
|
than in a disk file. <code>as</code> always does this, so this
|
|
option is redundant.
|
|
</p>
|
|
<a name="index-_002dJ_002c-ignored-on-VAX"></a>
|
|
</dd>
|
|
<dt><code><code>-J</code> (JUMPify Longer Branches)</code></dt>
|
|
<dd><p>Many 32-bit computers permit a variety of branch instructions
|
|
to do the same job. Some of these instructions are short (and
|
|
fast) but have a limited range; others are long (and slow) but
|
|
can branch anywhere in virtual memory. Often there are 3
|
|
flavors of branch: short, medium and long. Some other
|
|
assemblers would emit short and medium branches, unless told by
|
|
this option to emit short and long branches.
|
|
</p>
|
|
<a name="index-_002dt_002c-ignored-on-VAX"></a>
|
|
</dd>
|
|
<dt><code><code>-t</code> (Temporary File Directory)</code></dt>
|
|
<dd><p>Some other assemblers may use a temporary file, and this option
|
|
takes a filename being the directory to site the temporary
|
|
file. Since <code>as</code> does not use a temporary disk file, this
|
|
option makes no difference. ‘<samp>-t</samp>’ needs exactly one
|
|
filename.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="index-VMS-_0028VAX_0029-options"></a>
|
|
<a name="index-options-for-VAX_002fVMS"></a>
|
|
<a name="index-VAX_002fVMS-options"></a>
|
|
<a name="index-Vax_002d11-C-compatibility"></a>
|
|
<a name="index-symbols-with-uppercase_002c-VAX_002fVMS"></a>
|
|
<p>The Vax version of the assembler accepts additional options when
|
|
compiled for VMS:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dh-option_002c-VAX_002fVMS"></a>
|
|
</dd>
|
|
<dt>‘<samp>-h <var>n</var></samp>’</dt>
|
|
<dd><p>External symbol or section (used for global variables) names are not
|
|
case sensitive on VAX/VMS and always mapped to upper case. This is
|
|
contrary to the C language definition which explicitly distinguishes
|
|
upper and lower case. To implement a standard conforming C compiler,
|
|
names must be changed (mapped) to preserve the case information. The
|
|
default mapping is to convert all lower case characters to uppercase and
|
|
adding an underscore followed by a 6 digit hex value, representing a 24
|
|
digit binary value. The one digits in the binary value represent which
|
|
characters are uppercase in the original symbol name.
|
|
</p>
|
|
<p>The ‘<samp>-h <var>n</var></samp>’ option determines how we map names. This takes
|
|
several values. No ‘<samp>-h</samp>’ switch at all allows case hacking as
|
|
described above. A value of zero (‘<samp>-h0</samp>’) implies names should be
|
|
upper case, and inhibits the case hack. A value of 2 (‘<samp>-h2</samp>’)
|
|
implies names should be all lower case, with no case hack. A value of 3
|
|
(‘<samp>-h3</samp>’) implies that case should be preserved. The value 1 is
|
|
unused. The <code>-H</code> option directs <code>as</code> to display
|
|
every mapped symbol during assembly.
|
|
</p>
|
|
<p>Symbols whose names include a dollar sign ‘<samp>$</samp>’ are exceptions to the
|
|
general name mapping. These symbols are normally only used to reference
|
|
VMS library names. Such symbols are always mapped to upper case.
|
|
</p>
|
|
<a name="index-_002d_002b-option_002c-VAX_002fVMS"></a>
|
|
</dd>
|
|
<dt>‘<samp>-+</samp>’</dt>
|
|
<dd><p>The ‘<samp>-+</samp>’ option causes <code>as</code> to truncate any symbol
|
|
name larger than 31 characters. The ‘<samp>-+</samp>’ option also prevents some
|
|
code following the ‘<samp>_main</samp>’ symbol normally added to make the object
|
|
file compatible with Vax-11 "C".
|
|
</p>
|
|
<a name="index-_002d1-option_002c-VAX_002fVMS"></a>
|
|
</dd>
|
|
<dt>‘<samp>-1</samp>’</dt>
|
|
<dd><p>This option is ignored for backward compatibility with <code>as</code>
|
|
version 1.x.
|
|
</p>
|
|
<a name="index-_002dH-option_002c-VAX_002fVMS"></a>
|
|
</dd>
|
|
<dt>‘<samp>-H</samp>’</dt>
|
|
<dd><p>The ‘<samp>-H</samp>’ option causes <code>as</code> to print every symbol
|
|
which was changed by case mapping.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="VAX_002dfloat"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#VAX_002ddirectives" accesskey="n" rel="next">VAX-directives</a>, Previous: <a href="#VAX_002dOpts" accesskey="p" rel="previous">VAX-Opts</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="VAX-Floating-Point"></a>
|
|
<h4 class="subsection">9.50.2 VAX Floating Point</h4>
|
|
|
|
<a name="index-VAX-floating-point"></a>
|
|
<a name="index-floating-point_002c-VAX"></a>
|
|
<p>Conversion of flonums to floating point is correct, and
|
|
compatible with previous assemblers. Rounding is
|
|
towards zero if the remainder is exactly half the least significant bit.
|
|
</p>
|
|
<p><code>D</code>, <code>F</code>, <code>G</code> and <code>H</code> floating point formats
|
|
are understood.
|
|
</p>
|
|
<p>Immediate floating literals (<em>e.g.</em> ‘<samp>S`$6.9</samp>’)
|
|
are rendered correctly. Again, rounding is towards zero in the
|
|
boundary case.
|
|
</p>
|
|
<a name="index-float-directive_002c-VAX"></a>
|
|
<a name="index-double-directive_002c-VAX"></a>
|
|
<p>The <code>.float</code> directive produces <code>f</code> format numbers.
|
|
The <code>.double</code> directive produces <code>d</code> format numbers.
|
|
</p>
|
|
<hr>
|
|
<a name="VAX_002ddirectives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#VAX_002dopcodes" accesskey="n" rel="next">VAX-opcodes</a>, Previous: <a href="#VAX_002dfloat" accesskey="p" rel="previous">VAX-float</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Vax-Machine-Directives"></a>
|
|
<h4 class="subsection">9.50.3 Vax Machine Directives</h4>
|
|
|
|
<a name="index-machine-directives_002c-VAX"></a>
|
|
<a name="index-VAX-machine-directives"></a>
|
|
<p>The Vax version of the assembler supports four directives for
|
|
generating Vax floating point constants. They are described in the
|
|
table below.
|
|
</p>
|
|
<a name="index-wide-floating-point-directives_002c-VAX"></a>
|
|
<dl compact="compact">
|
|
<dd><a name="index-dfloat-directive_002c-VAX"></a>
|
|
</dd>
|
|
<dt><code>.dfloat</code></dt>
|
|
<dd><p>This expects zero or more flonums, separated by commas, and
|
|
assembles Vax <code>d</code> format 64-bit floating point constants.
|
|
</p>
|
|
<a name="index-ffloat-directive_002c-VAX"></a>
|
|
</dd>
|
|
<dt><code>.ffloat</code></dt>
|
|
<dd><p>This expects zero or more flonums, separated by commas, and
|
|
assembles Vax <code>f</code> format 32-bit floating point constants.
|
|
</p>
|
|
<a name="index-gfloat-directive_002c-VAX"></a>
|
|
</dd>
|
|
<dt><code>.gfloat</code></dt>
|
|
<dd><p>This expects zero or more flonums, separated by commas, and
|
|
assembles Vax <code>g</code> format 64-bit floating point constants.
|
|
</p>
|
|
<a name="index-hfloat-directive_002c-VAX"></a>
|
|
</dd>
|
|
<dt><code>.hfloat</code></dt>
|
|
<dd><p>This expects zero or more flonums, separated by commas, and
|
|
assembles Vax <code>h</code> format 128-bit floating point constants.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="VAX_002dopcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#VAX_002dbranch" accesskey="n" rel="next">VAX-branch</a>, Previous: <a href="#VAX_002ddirectives" accesskey="p" rel="previous">VAX-directives</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="VAX-Opcodes"></a>
|
|
<h4 class="subsection">9.50.4 VAX Opcodes</h4>
|
|
|
|
<a name="index-VAX-opcode-mnemonics"></a>
|
|
<a name="index-opcode-mnemonics_002c-VAX"></a>
|
|
<a name="index-mnemonics-for-opcodes_002c-VAX"></a>
|
|
<p>All DEC mnemonics are supported. Beware that <code>case…</code>
|
|
instructions have exactly 3 operands. The dispatch table that
|
|
follows the <code>case…</code> instruction should be made with
|
|
<code>.word</code> statements. This is compatible with all unix
|
|
assemblers we know of.
|
|
</p>
|
|
<hr>
|
|
<a name="VAX_002dbranch"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#VAX_002doperands" accesskey="n" rel="next">VAX-operands</a>, Previous: <a href="#VAX_002dopcodes" accesskey="p" rel="previous">VAX-opcodes</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="VAX-Branch-Improvement"></a>
|
|
<h4 class="subsection">9.50.5 VAX Branch Improvement</h4>
|
|
|
|
<a name="index-VAX-branch-improvement"></a>
|
|
<a name="index-branch-improvement_002c-VAX"></a>
|
|
<a name="index-pseudo_002dops-for-branch_002c-VAX"></a>
|
|
<p>Certain pseudo opcodes are permitted. They are for branch
|
|
instructions. They expand to the shortest branch instruction that
|
|
reaches the target. Generally these mnemonics are made by
|
|
substituting ‘<samp>j</samp>’ for ‘<samp>b</samp>’ at the start of a DEC mnemonic.
|
|
This feature is included both for compatibility and to help
|
|
compilers. If you do not need this feature, avoid these
|
|
opcodes. Here are the mnemonics, and the code they can expand into.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>jbsb</code></dt>
|
|
<dd><p>‘<samp>Jsb</samp>’ is already an instruction mnemonic, so we chose ‘<samp>jbsb</samp>’.
|
|
</p><dl compact="compact">
|
|
<dt>(byte displacement)</dt>
|
|
<dd><p><kbd>bsbb …</kbd>
|
|
</p></dd>
|
|
<dt>(word displacement)</dt>
|
|
<dd><p><kbd>bsbw …</kbd>
|
|
</p></dd>
|
|
<dt>(long displacement)</dt>
|
|
<dd><p><kbd>jsb …</kbd>
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
<dt><code>jbr</code></dt>
|
|
<dt><code>jr</code></dt>
|
|
<dd><p>Unconditional branch.
|
|
</p><dl compact="compact">
|
|
<dt>(byte displacement)</dt>
|
|
<dd><p><kbd>brb …</kbd>
|
|
</p></dd>
|
|
<dt>(word displacement)</dt>
|
|
<dd><p><kbd>brw …</kbd>
|
|
</p></dd>
|
|
<dt>(long displacement)</dt>
|
|
<dd><p><kbd>jmp …</kbd>
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
<dt><code>j<var>COND</var></code></dt>
|
|
<dd><p><var>COND</var> may be any one of the conditional branches
|
|
<code>neq</code>, <code>nequ</code>, <code>eql</code>, <code>eqlu</code>, <code>gtr</code>,
|
|
<code>geq</code>, <code>lss</code>, <code>gtru</code>, <code>lequ</code>, <code>vc</code>, <code>vs</code>,
|
|
<code>gequ</code>, <code>cc</code>, <code>lssu</code>, <code>cs</code>.
|
|
<var>COND</var> may also be one of the bit tests
|
|
<code>bs</code>, <code>bc</code>, <code>bss</code>, <code>bcs</code>, <code>bsc</code>, <code>bcc</code>,
|
|
<code>bssi</code>, <code>bcci</code>, <code>lbs</code>, <code>lbc</code>.
|
|
<var>NOTCOND</var> is the opposite condition to <var>COND</var>.
|
|
</p><dl compact="compact">
|
|
<dt>(byte displacement)</dt>
|
|
<dd><p><kbd>b<var>COND</var> …</kbd>
|
|
</p></dd>
|
|
<dt>(word displacement)</dt>
|
|
<dd><p><kbd>b<var>NOTCOND</var> foo ; brw … ; foo:</kbd>
|
|
</p></dd>
|
|
<dt>(long displacement)</dt>
|
|
<dd><p><kbd>b<var>NOTCOND</var> foo ; jmp … ; foo:</kbd>
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
<dt><code>jacb<var>X</var></code></dt>
|
|
<dd><p><var>X</var> may be one of <code>b d f g h l w</code>.
|
|
</p><dl compact="compact">
|
|
<dt>(word displacement)</dt>
|
|
<dd><p><kbd><var>OPCODE</var> …</kbd>
|
|
</p></dd>
|
|
<dt>(long displacement)</dt>
|
|
<dd><div class="example">
|
|
<pre class="example"><var>OPCODE</var> …, foo ;
|
|
brb bar ;
|
|
foo: jmp … ;
|
|
bar:
|
|
</pre></div>
|
|
</dd>
|
|
</dl>
|
|
</dd>
|
|
<dt><code>jaob<var>YYY</var></code></dt>
|
|
<dd><p><var>YYY</var> may be one of <code>lss leq</code>.
|
|
</p></dd>
|
|
<dt><code>jsob<var>ZZZ</var></code></dt>
|
|
<dd><p><var>ZZZ</var> may be one of <code>geq gtr</code>.
|
|
</p><dl compact="compact">
|
|
<dt>(byte displacement)</dt>
|
|
<dd><p><kbd><var>OPCODE</var> …</kbd>
|
|
</p></dd>
|
|
<dt>(word displacement)</dt>
|
|
<dd><div class="example">
|
|
<pre class="example"><var>OPCODE</var> …, foo ;
|
|
brb bar ;
|
|
foo: brw <var>destination</var> ;
|
|
bar:
|
|
</pre></div>
|
|
</dd>
|
|
<dt>(long displacement)</dt>
|
|
<dd><div class="example">
|
|
<pre class="example"><var>OPCODE</var> …, foo ;
|
|
brb bar ;
|
|
foo: jmp <var>destination</var> ;
|
|
bar:
|
|
</pre></div>
|
|
</dd>
|
|
</dl>
|
|
</dd>
|
|
<dt><code>aobleq</code></dt>
|
|
<dt><code>aoblss</code></dt>
|
|
<dt><code>sobgeq</code></dt>
|
|
<dt><code>sobgtr</code></dt>
|
|
<dd><dl compact="compact">
|
|
<dt>(byte displacement)</dt>
|
|
<dd><p><kbd><var>OPCODE</var> …</kbd>
|
|
</p></dd>
|
|
<dt>(word displacement)</dt>
|
|
<dd><div class="example">
|
|
<pre class="example"><var>OPCODE</var> …, foo ;
|
|
brb bar ;
|
|
foo: brw <var>destination</var> ;
|
|
bar:
|
|
</pre></div>
|
|
</dd>
|
|
<dt>(long displacement)</dt>
|
|
<dd><div class="example">
|
|
<pre class="example"><var>OPCODE</var> …, foo ;
|
|
brb bar ;
|
|
foo: jmp <var>destination</var> ;
|
|
bar:
|
|
</pre></div>
|
|
</dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="VAX_002doperands"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#VAX_002dno" accesskey="n" rel="next">VAX-no</a>, Previous: <a href="#VAX_002dbranch" accesskey="p" rel="previous">VAX-branch</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="VAX-Operands"></a>
|
|
<h4 class="subsection">9.50.6 VAX Operands</h4>
|
|
|
|
<a name="index-VAX-operand-notation"></a>
|
|
<a name="index-operand-notation_002c-VAX"></a>
|
|
<a name="index-immediate-character_002c-VAX"></a>
|
|
<a name="index-VAX-immediate-character"></a>
|
|
<p>The immediate character is ‘<samp>$</samp>’ for Unix compatibility, not
|
|
‘<samp>#</samp>’ as DEC writes it.
|
|
</p>
|
|
<a name="index-indirect-character_002c-VAX"></a>
|
|
<a name="index-VAX-indirect-character"></a>
|
|
<p>The indirect character is ‘<samp>*</samp>’ for Unix compatibility, not
|
|
‘<samp>@</samp>’ as DEC writes it.
|
|
</p>
|
|
<a name="index-displacement-sizing-character_002c-VAX"></a>
|
|
<a name="index-VAX-displacement-sizing-character"></a>
|
|
<p>The displacement sizing character is ‘<samp>`</samp>’ (an accent grave) for
|
|
Unix compatibility, not ‘<samp>^</samp>’ as DEC writes it. The letter
|
|
preceding ‘<samp>`</samp>’ may have either case. ‘<samp>G</samp>’ is not
|
|
understood, but all other letters (<code>b i l s w</code>) are understood.
|
|
</p>
|
|
<a name="index-register-names_002c-VAX"></a>
|
|
<a name="index-VAX-register-names"></a>
|
|
<p>Register names understood are <code>r0 r1 r2 … r15 ap fp sp
|
|
pc</code>. Upper and lower case letters are equivalent.
|
|
</p>
|
|
<p>For instance
|
|
</p><div class="smallexample">
|
|
<pre class="smallexample">tstb *w`$4(r5)
|
|
</pre></div>
|
|
|
|
<p>Any expression is permitted in an operand. Operands are comma
|
|
separated.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="VAX_002dno"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#VAX_002dSyntax" accesskey="n" rel="next">VAX-Syntax</a>, Previous: <a href="#VAX_002doperands" accesskey="p" rel="previous">VAX-operands</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Not-Supported-on-VAX"></a>
|
|
<h4 class="subsection">9.50.7 Not Supported on VAX</h4>
|
|
|
|
<a name="index-VAX-bitfields-not-supported"></a>
|
|
<a name="index-bitfields_002c-not-supported-on-VAX"></a>
|
|
<p>Vax bit fields can not be assembled with <code>as</code>. Someone
|
|
can add the required code if they really need it.
|
|
</p>
|
|
<hr>
|
|
<a name="VAX_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#VAX_002dno" accesskey="p" rel="previous">VAX-no</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="VAX-Syntax"></a>
|
|
<h4 class="subsection">9.50.8 VAX Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#VAX_002dChars" accesskey="1">VAX-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="VAX_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#VAX_002dSyntax" accesskey="u" rel="up">VAX-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-38"></a>
|
|
<h4 class="subsubsection">9.50.8.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-VAX"></a>
|
|
<a name="index-VAX-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>#</samp>’ appearing anywhere on a line indicates the
|
|
start of a comment that extends to the end of that line.
|
|
</p>
|
|
<p>If a ‘<samp>#</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 (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-VAX"></a>
|
|
<a name="index-statement-separator_002c-VAX"></a>
|
|
<a name="index-VAX-line-separator"></a>
|
|
<p>The ‘<samp>;</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="Visium_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#WebAssembly_002dDependent" accesskey="n" rel="next">WebAssembly-Dependent</a>, Previous: <a href="#Vax_002dDependent" accesskey="p" rel="previous">Vax-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Visium-Dependent-Features"></a>
|
|
<h3 class="section">9.51 Visium Dependent Features</h3>
|
|
|
|
|
|
<a name="index-Visium-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Visium-Options" accesskey="1">Visium Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Visium-Syntax" accesskey="2">Visium Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Visium-Opcodes" accesskey="3">Visium Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Visium-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Visium-Syntax" accesskey="n" rel="next">Visium Syntax</a>, Up: <a href="#Visium_002dDependent" accesskey="u" rel="up">Visium-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-29"></a>
|
|
<h4 class="subsection">9.51.1 Options</h4>
|
|
<a name="index-Visium-options"></a>
|
|
<a name="index-options-for-Visium"></a>
|
|
|
|
<p>The Visium assembler implements one machine-specific option:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dmtune_003darch-command_002dline-option_002c-Visium"></a>
|
|
</dd>
|
|
<dt><code>-mtune=<var>arch</var></code></dt>
|
|
<dd><p>This option specifies the target architecture. If an attempt is made to
|
|
assemble an instruction that will not execute on the target architecture,
|
|
the assembler will issue an error message.
|
|
</p>
|
|
<p>The following names are recognized:
|
|
<code>mcm24</code>
|
|
<code>mcm</code>
|
|
<code>gr5</code>
|
|
<code>gr6</code>
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Visium-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Visium-Opcodes" accesskey="n" rel="next">Visium Opcodes</a>, Previous: <a href="#Visium-Options" accesskey="p" rel="previous">Visium Options</a>, Up: <a href="#Visium_002dDependent" accesskey="u" rel="up">Visium-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-31"></a>
|
|
<h4 class="subsection">9.51.2 Syntax</h4>
|
|
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Visium-Characters" accesskey="1">Visium Characters</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Visium-Registers" accesskey="2">Visium Registers</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Visium-Characters"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Visium-Registers" accesskey="n" rel="next">Visium Registers</a>, Up: <a href="#Visium-Syntax" accesskey="u" rel="up">Visium Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-39"></a>
|
|
<h4 class="subsubsection">9.51.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-Visium"></a>
|
|
<a name="index-Visium-line-comment-character"></a>
|
|
<p>Line comments are introduced either by the ‘<samp>!</samp>’ character or by the
|
|
‘<samp>;</samp>’ character appearing anywhere on a line.
|
|
</p>
|
|
<p>A hash character (‘<samp>#</samp>’) as the first character on a line also
|
|
marks the start of a line comment, but in this case it could also be a
|
|
logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-Visium"></a>
|
|
<a name="index-statement-separator_002c-Visium"></a>
|
|
<a name="index-Visium-line-separator"></a>
|
|
<p>The Visium assembler does not currently support a line separator character.
|
|
</p>
|
|
<hr>
|
|
<a name="Visium-Registers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Visium-Characters" accesskey="p" rel="previous">Visium Characters</a>, Up: <a href="#Visium-Syntax" accesskey="u" rel="up">Visium Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-20"></a>
|
|
<h4 class="subsubsection">9.51.2.2 Register Names</h4>
|
|
<a name="index-Visium-registers"></a>
|
|
<a name="index-register-names_002c-Visium"></a>
|
|
<p>Registers can be specified either by using their canonical mnemonic names
|
|
or by using their alias if they have one, for example ‘<samp>sp</samp>’.
|
|
</p>
|
|
<hr>
|
|
<a name="Visium-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Visium-Syntax" accesskey="p" rel="previous">Visium Syntax</a>, Up: <a href="#Visium_002dDependent" accesskey="u" rel="up">Visium-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-20"></a>
|
|
<h4 class="subsection">9.51.3 Opcodes</h4>
|
|
<p>All the standard opcodes of the architecture are implemented, along with the
|
|
following three pseudo-instructions: <code>cmp</code>, <code>cmpc</code>, <code>move</code>.
|
|
</p>
|
|
<p>In addition, the following two illegal opcodes are implemented and used by the simulation:
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">stop 5-bit immediate, SourceA
|
|
trace 5-bit immediate, SourceA
|
|
</pre></div>
|
|
|
|
|
|
<hr>
|
|
<a name="WebAssembly_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#XGATE_002dDependent" accesskey="n" rel="next">XGATE-Dependent</a>, Previous: <a href="#Visium_002dDependent" accesskey="p" rel="previous">Visium-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="WebAssembly-Dependent-Features"></a>
|
|
<h3 class="section">9.52 WebAssembly Dependent Features</h3>
|
|
|
|
|
|
<a name="index-WebAssembly-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#WebAssembly_002dNotes" accesskey="1">WebAssembly-Notes</a>:</td><td> </td><td align="left" valign="top">Notes
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#WebAssembly_002dSyntax" accesskey="2">WebAssembly-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#WebAssembly_002dFloating_002dPoint" accesskey="3">WebAssembly-Floating-Point</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#WebAssembly_002dOpcodes" accesskey="4">WebAssembly-Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#WebAssembly_002dmodule_002dlayout" accesskey="5">WebAssembly-module-layout</a>:</td><td> </td><td align="left" valign="top">Module Layout
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="WebAssembly_002dNotes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#WebAssembly_002dSyntax" accesskey="n" rel="next">WebAssembly-Syntax</a>, Up: <a href="#WebAssembly_002dDependent" accesskey="u" rel="up">WebAssembly-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Notes-3"></a>
|
|
<h4 class="subsection">9.52.1 Notes</h4>
|
|
<a name="index-WebAssembly-notes"></a>
|
|
<a name="index-notes-for-WebAssembly"></a>
|
|
|
|
<p>While WebAssembly provides its own module format for executables, this
|
|
documentation describes how to use <code>as</code> to produce
|
|
intermediate ELF object format files.
|
|
</p>
|
|
<hr>
|
|
<a name="WebAssembly_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#WebAssembly_002dFloating_002dPoint" accesskey="n" rel="next">WebAssembly-Floating-Point</a>, Previous: <a href="#WebAssembly_002dNotes" accesskey="p" rel="previous">WebAssembly-Notes</a>, Up: <a href="#WebAssembly_002dDependent" accesskey="u" rel="up">WebAssembly-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-32"></a>
|
|
<h4 class="subsection">9.52.2 Syntax</h4>
|
|
<a name="index-WebAssembly-Syntax"></a>
|
|
<p>The assembler syntax directly encodes sequences of opcodes as defined
|
|
in the WebAssembly binary encoding specification at
|
|
https://github.com/webassembly/spec/BinaryEncoding.md. Structured
|
|
sexp-style expressions are not supported as input.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#WebAssembly_002dChars" accesskey="1">WebAssembly-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#WebAssembly_002dRelocs" accesskey="2">WebAssembly-Relocs</a>:</td><td> </td><td align="left" valign="top">Relocations
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#WebAssembly_002dSignatures" accesskey="3">WebAssembly-Signatures</a>:</td><td> </td><td align="left" valign="top">Signatures
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="WebAssembly_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#WebAssembly_002dRelocs" accesskey="n" rel="next">WebAssembly-Relocs</a>, Up: <a href="#WebAssembly_002dSyntax" accesskey="u" rel="up">WebAssembly-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-40"></a>
|
|
<h4 class="subsubsection">9.52.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-WebAssembly"></a>
|
|
<a name="index-WebAssembly-line-comment-character"></a>
|
|
<p>‘<samp>#</samp>’ and ‘<samp>;</samp>’ are the line comment characters. Note that if
|
|
‘<samp>#</samp>’ is the first character on a line then it can also be a
|
|
logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<hr>
|
|
<a name="WebAssembly_002dRelocs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#WebAssembly_002dSignatures" accesskey="n" rel="next">WebAssembly-Signatures</a>, Previous: <a href="#WebAssembly_002dChars" accesskey="p" rel="previous">WebAssembly-Chars</a>, Up: <a href="#WebAssembly_002dSyntax" accesskey="u" rel="up">WebAssembly-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Relocations-5"></a>
|
|
<h4 class="subsubsection">9.52.2.2 Relocations</h4>
|
|
<a name="index-WebAssembly-relocations"></a>
|
|
<a name="index-relocations_002c-WebAssembly"></a>
|
|
|
|
<p>Special relocations are available by using the ‘<samp>@<var>plt</var></samp>’,
|
|
‘<samp>@<var>got</var></samp>’, or ‘<samp>@<var>got</var></samp>’ suffixes after a constant
|
|
expression, which correspond to the R_ASMJS_LEB128_PLT,
|
|
R_ASMJS_LEB128_GOT, and R_ASMJS_LEB128_GOT_CODE relocations,
|
|
respectively.
|
|
</p>
|
|
<p>The ‘<samp>@<var>plt</var></samp>’ suffix is followed by a symbol name in braces;
|
|
the symbol value is used to determine the function signature for which
|
|
a PLT stub is generated. Currently, the symbol <em>name</em> is parsed
|
|
from its last ‘<samp>F</samp>’ character to determine the argument count of
|
|
the function, which is also necessary for generating a PLT stub.
|
|
</p>
|
|
<hr>
|
|
<a name="WebAssembly_002dSignatures"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#WebAssembly_002dRelocs" accesskey="p" rel="previous">WebAssembly-Relocs</a>, Up: <a href="#WebAssembly_002dSyntax" accesskey="u" rel="up">WebAssembly-Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Signatures"></a>
|
|
<h4 class="subsubsection">9.52.2.3 Signatures</h4>
|
|
<a name="index-WebAssembly-signatures"></a>
|
|
<a name="index-signatures_002c-WebAssembly"></a>
|
|
|
|
<p>Function signatures are specified with the <code>signature</code>
|
|
pseudo-opcode, followed by a simple function signature imitating a
|
|
C++-mangled function type: <code>F</code> followed by an optional <code>v</code>,
|
|
then a sequence of <code>i</code>, <code>l</code>, <code>f</code>, and <code>d</code>
|
|
characters to mark i32, i64, f32, and f64 parameters, respectively;
|
|
followed by a final <code>E</code> to mark the end of the function
|
|
signature.
|
|
</p>
|
|
<hr>
|
|
<a name="WebAssembly_002dFloating_002dPoint"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#WebAssembly_002dOpcodes" accesskey="n" rel="next">WebAssembly-Opcodes</a>, Previous: <a href="#WebAssembly_002dSyntax" accesskey="p" rel="previous">WebAssembly-Syntax</a>, Up: <a href="#WebAssembly_002dDependent" accesskey="u" rel="up">WebAssembly-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-17"></a>
|
|
<h4 class="subsection">9.52.3 Floating Point</h4>
|
|
<a name="index-floating-point_002c-WebAssembly-_0028IEEE_0029"></a>
|
|
<a name="index-WebAssembly-floating-point-_0028IEEE_0029"></a>
|
|
<p>WebAssembly uses little-endian <small>IEEE</small> floating-point numbers.
|
|
</p>
|
|
<hr>
|
|
<a name="WebAssembly_002dOpcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#WebAssembly_002dmodule_002dlayout" accesskey="n" rel="next">WebAssembly-module-layout</a>, Previous: <a href="#WebAssembly_002dFloating_002dPoint" accesskey="p" rel="previous">WebAssembly-Floating-Point</a>, Up: <a href="#WebAssembly_002dDependent" accesskey="u" rel="up">WebAssembly-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Regular-Opcodes"></a>
|
|
<h4 class="subsection">9.52.4 Regular Opcodes</h4>
|
|
<a name="index-opcodes_002c-WebAssembly"></a>
|
|
<a name="index-WebAssembly-opcodes"></a>
|
|
<p>Ordinary instructions are encoded with the WebAssembly mnemonics as
|
|
listed at:
|
|
<a href="https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md">https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md</a>.
|
|
</p>
|
|
<p>Opcodes are written directly in the order in which they are encoded,
|
|
without going through an intermediate sexp-style expression as in the
|
|
<code>was</code> format.
|
|
</p>
|
|
<p>For “typed” opcodes (block, if, etc.), the type of the block is
|
|
specified in square brackets following the opcode: <code>if[i]</code>,
|
|
<code>if[]</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="WebAssembly_002dmodule_002dlayout"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#WebAssembly_002dOpcodes" accesskey="p" rel="previous">WebAssembly-Opcodes</a>, Up: <a href="#WebAssembly_002dDependent" accesskey="u" rel="up">WebAssembly-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="WebAssembly-Module-Layout"></a>
|
|
<h4 class="subsection">9.52.5 WebAssembly Module Layout</h4>
|
|
<a name="index-module-layout_002c-WebAssembly"></a>
|
|
<a name="index-WebAssembly-module-layout"></a>
|
|
<p><code>as</code> will only produce ELF output, not a valid
|
|
WebAssembly module. It is possible to make <code>as</code> produce
|
|
output in a single ELF section which becomes a valid WebAssembly
|
|
module, but a linker script to do so may be preferable, as it doesn’t
|
|
require running the entire module through the assembler at once.
|
|
</p>
|
|
<hr>
|
|
<a name="XGATE_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#XSTORMY16_002dDependent" accesskey="n" rel="next">XSTORMY16-Dependent</a>, Previous: <a href="#WebAssembly_002dDependent" accesskey="p" rel="previous">WebAssembly-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="XGATE-Dependent-Features"></a>
|
|
<h3 class="section">9.53 XGATE Dependent Features</h3>
|
|
|
|
<a name="index-XGATE-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#XGATE_002dOpts" accesskey="1">XGATE-Opts</a>:</td><td> </td><td align="left" valign="top">XGATE Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#XGATE_002dSyntax" accesskey="2">XGATE-Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#XGATE_002dDirectives" accesskey="3">XGATE-Directives</a>:</td><td> </td><td align="left" valign="top">Assembler Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#XGATE_002dFloat" accesskey="4">XGATE-Float</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#XGATE_002dopcodes" accesskey="5">XGATE-opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="XGATE_002dOpts"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#XGATE_002dSyntax" accesskey="n" rel="next">XGATE-Syntax</a>, Up: <a href="#XGATE_002dDependent" accesskey="u" rel="up">XGATE-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="XGATE-Options"></a>
|
|
<h4 class="subsection">9.53.1 XGATE Options</h4>
|
|
|
|
<a name="index-options_002c-XGATE"></a>
|
|
<a name="index-XGATE-options"></a>
|
|
<p>The Freescale XGATE version of <code>as</code> has a few machine
|
|
dependent options.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dmshort-1"></a>
|
|
</dd>
|
|
<dt><code>-mshort</code></dt>
|
|
<dd><p>This option controls the ABI and indicates to use a 16-bit integer ABI.
|
|
It has no effect on the assembled instructions.
|
|
This is the default.
|
|
</p>
|
|
<a name="index-_002dmlong-1"></a>
|
|
</dd>
|
|
<dt><code>-mlong</code></dt>
|
|
<dd><p>This option controls the ABI and indicates to use a 32-bit integer ABI.
|
|
</p>
|
|
<a name="index-_002dmshort_002ddouble-1"></a>
|
|
</dd>
|
|
<dt><code>-mshort-double</code></dt>
|
|
<dd><p>This option controls the ABI and indicates to use a 32-bit float ABI.
|
|
This is the default.
|
|
</p>
|
|
<a name="index-_002dmlong_002ddouble-1"></a>
|
|
</dd>
|
|
<dt><code>-mlong-double</code></dt>
|
|
<dd><p>This option controls the ABI and indicates to use a 64-bit float ABI.
|
|
</p>
|
|
<a name="index-_002d_002dprint_002dinsn_002dsyntax-1"></a>
|
|
</dd>
|
|
<dt><code>--print-insn-syntax</code></dt>
|
|
<dd><p>You can use the ‘<samp>--print-insn-syntax</samp>’ option to obtain the
|
|
syntax description of the instruction when an error is detected.
|
|
</p>
|
|
<a name="index-_002d_002dprint_002dopcodes-1"></a>
|
|
</dd>
|
|
<dt><code>--print-opcodes</code></dt>
|
|
<dd><p>The ‘<samp>--print-opcodes</samp>’ option prints the list of all the
|
|
instructions with their syntax. Once the list is printed
|
|
<code>as</code> exits.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="XGATE_002dSyntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#XGATE_002dDirectives" accesskey="n" rel="next">XGATE-Directives</a>, Previous: <a href="#XGATE_002dOpts" accesskey="p" rel="previous">XGATE-Opts</a>, Up: <a href="#XGATE_002dDependent" accesskey="u" rel="up">XGATE-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-33"></a>
|
|
<h4 class="subsection">9.53.2 Syntax</h4>
|
|
|
|
<a name="index-XGATE-syntax"></a>
|
|
<a name="index-syntax_002c-XGATE"></a>
|
|
|
|
<p>In XGATE RISC syntax, the instruction name comes first and it may
|
|
be followed by up to three operands. Operands are separated by commas
|
|
(‘<samp>,</samp>’). <code>as</code> will complain if too many operands are specified
|
|
for a given instruction. The same will happen if you specified too few
|
|
operands.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">nop
|
|
ldl #23
|
|
CMP R1, R2
|
|
</pre></div>
|
|
|
|
<a name="index-line-comment-character_002c-XGATE"></a>
|
|
<a name="index-XGATE-line-comment-character"></a>
|
|
<p>The presence of a ‘<samp>;</samp>’ character or a ‘<samp>!</samp>’ character anywhere
|
|
on a line indicates the start of a comment that extends to the end of
|
|
that line.
|
|
</p>
|
|
<p>A ‘<samp>*</samp>’ or a ‘<samp>#</samp>’ character at the start of a line also
|
|
introduces a line comment, but these characters do not work elsewhere
|
|
on the line. If the first character of the line is a ‘<samp>#</samp>’ then as
|
|
well as starting a comment, the line could also be logical line number
|
|
directive (see <a href="#Comments">Comments</a>) or a preprocessor control command
|
|
(see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-XGATE"></a>
|
|
<a name="index-statement-separator_002c-XGATE"></a>
|
|
<a name="index-XGATE-line-separator"></a>
|
|
<p>The XGATE assembler does not currently support a line separator
|
|
character.
|
|
</p>
|
|
<a name="index-XGATE-addressing-modes"></a>
|
|
<a name="index-addressing-modes_002c-XGATE"></a>
|
|
<p>The following addressing modes are understood for XGATE:
|
|
</p><dl compact="compact">
|
|
<dt><em>Inherent</em></dt>
|
|
<dd><p>‘<samp></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Immediate 3 Bit Wide</em></dt>
|
|
<dd><p>‘<samp>#<var>number</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Immediate 4 Bit Wide</em></dt>
|
|
<dd><p>‘<samp>#<var>number</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Immediate 8 Bit Wide</em></dt>
|
|
<dd><p>‘<samp>#<var>number</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Monadic Addressing</em></dt>
|
|
<dd><p>‘<samp><var>reg</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Dyadic Addressing</em></dt>
|
|
<dd><p>‘<samp><var>reg</var>, <var>reg</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Triadic Addressing</em></dt>
|
|
<dd><p>‘<samp><var>reg</var>, <var>reg</var>, <var>reg</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Relative Addressing 9 Bit Wide</em></dt>
|
|
<dd><p>‘<samp>*<var>symbol</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Relative Addressing 10 Bit Wide</em></dt>
|
|
<dd><p>‘<samp>*<var>symbol</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Index Register plus Immediate Offset</em></dt>
|
|
<dd><p>‘<samp><var>reg</var>, (<var>reg</var>, #<var>number</var>)</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Index Register plus Register Offset</em></dt>
|
|
<dd><p>‘<samp><var>reg</var>, <var>reg</var>, <var>reg</var></samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Index Register plus Register Offset with Post-increment</em></dt>
|
|
<dd><p>‘<samp><var>reg</var>, <var>reg</var>, <var>reg</var>+</samp>’
|
|
</p>
|
|
</dd>
|
|
<dt><em>Index Register plus Register Offset with Pre-decrement</em></dt>
|
|
<dd><p>‘<samp><var>reg</var>, <var>reg</var>, -<var>reg</var></samp>’
|
|
</p>
|
|
<p>The register can be either ‘<samp>R0</samp>’, ‘<samp>R1</samp>’, ‘<samp>R2</samp>’, ‘<samp>R3</samp>’,
|
|
‘<samp>R4</samp>’, ‘<samp>R5</samp>’, ‘<samp>R6</samp>’ or ‘<samp>R7</samp>’.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Convene macro opcodes to deal with 16-bit values have been added.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><em>Immediate 16 Bit Wide</em></dt>
|
|
<dd><p>‘<samp>#<var>number</var></samp>’, or ‘<samp>*<var>symbol</var></samp>’
|
|
</p>
|
|
<p>For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">ldw R1, #1024
|
|
ldw R3, timer
|
|
ldw R1, (R1, #0)
|
|
COM R1
|
|
stw R2, (R1, #0)
|
|
</pre></div>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="XGATE_002dDirectives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#XGATE_002dFloat" accesskey="n" rel="next">XGATE-Float</a>, Previous: <a href="#XGATE_002dSyntax" accesskey="p" rel="previous">XGATE-Syntax</a>, Up: <a href="#XGATE_002dDependent" accesskey="u" rel="up">XGATE-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-Directives-8"></a>
|
|
<h4 class="subsection">9.53.3 Assembler Directives</h4>
|
|
|
|
<a name="index-assembler-directives_002c-XGATE"></a>
|
|
<a name="index-XGATE-assembler-directives"></a>
|
|
|
|
<p>The XGATE version of <code>as</code> have the following
|
|
specific assembler directives:
|
|
</p>
|
|
<hr>
|
|
<a name="XGATE_002dFloat"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#XGATE_002dopcodes" accesskey="n" rel="next">XGATE-opcodes</a>, Previous: <a href="#XGATE_002dDirectives" accesskey="p" rel="previous">XGATE-Directives</a>, Up: <a href="#XGATE_002dDependent" accesskey="u" rel="up">XGATE-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-18"></a>
|
|
<h4 class="subsection">9.53.4 Floating Point</h4>
|
|
|
|
<a name="index-floating-point_002c-XGATE"></a>
|
|
<a name="index-XGATE-floating-point"></a>
|
|
<p>Packed decimal (P) format floating literals are not supported(yet).
|
|
</p>
|
|
<p>The floating point formats generated by directives are these.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-float-directive_002c-XGATE"></a>
|
|
</dd>
|
|
<dt><code>.float</code></dt>
|
|
<dd><p><code>Single</code> precision floating point constants.
|
|
</p>
|
|
<a name="index-double-directive_002c-XGATE"></a>
|
|
</dd>
|
|
<dt><code>.double</code></dt>
|
|
<dd><p><code>Double</code> precision floating point constants.
|
|
</p>
|
|
<a name="index-extend-directive-XGATE"></a>
|
|
<a name="index-ldouble-directive-XGATE"></a>
|
|
</dd>
|
|
<dt><code>.extend</code></dt>
|
|
<dt><code>.ldouble</code></dt>
|
|
<dd><p><code>Extended</code> precision (<code>long double</code>) floating point constants.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="XGATE_002dopcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#XGATE_002dFloat" accesskey="p" rel="previous">XGATE-Float</a>, Up: <a href="#XGATE_002dDependent" accesskey="u" rel="up">XGATE-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-21"></a>
|
|
<h4 class="subsection">9.53.5 Opcodes</h4>
|
|
|
|
<a name="index-XGATE-opcodes"></a>
|
|
<a name="index-instruction-set_002c-XGATE"></a>
|
|
|
|
|
|
|
|
<hr>
|
|
<a name="XSTORMY16_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Xtensa_002dDependent" accesskey="n" rel="next">Xtensa-Dependent</a>, Previous: <a href="#XGATE_002dDependent" accesskey="p" rel="previous">XGATE-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="XStormy16-Dependent-Features"></a>
|
|
<h3 class="section">9.54 XStormy16 Dependent Features</h3>
|
|
|
|
<a name="index-XStormy16-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#XStormy16-Syntax" accesskey="1">XStormy16 Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#XStormy16-Directives" accesskey="2">XStormy16 Directives</a>:</td><td> </td><td align="left" valign="top">Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#XStormy16-Opcodes" accesskey="3">XStormy16 Opcodes</a>:</td><td> </td><td align="left" valign="top">Pseudo-Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="XStormy16-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#XStormy16-Directives" accesskey="n" rel="next">XStormy16 Directives</a>, Up: <a href="#XSTORMY16_002dDependent" accesskey="u" rel="up">XSTORMY16-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-34"></a>
|
|
<h4 class="subsection">9.54.1 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#XStormy16_002dChars" accesskey="1">XStormy16-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="XStormy16_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Up: <a href="#XStormy16-Syntax" accesskey="u" rel="up">XStormy16 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-41"></a>
|
|
<h4 class="subsubsection">9.54.1.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-XStormy16"></a>
|
|
<a name="index-XStormy16-line-comment-character"></a>
|
|
<p>‘<samp>#</samp>’ is the line comment character. If a ‘<samp>#</samp>’ appears as the
|
|
first character of a line, the whole line is treated as a comment, but
|
|
in this case the line can also be a logical line number directive
|
|
(see <a href="#Comments">Comments</a>) or a preprocessor control command
|
|
(see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-comment-character_002c-XStormy16"></a>
|
|
<a name="index-XStormy16-comment-character"></a>
|
|
<p>A semicolon (‘<samp>;</samp>’) can be used to start a comment that extends
|
|
from wherever the character appears on the line up to the end of the
|
|
line.
|
|
</p>
|
|
<a name="index-line-separator_002c-XStormy16"></a>
|
|
<a name="index-statement-separator_002c-XStormy16"></a>
|
|
<a name="index-XStormy16-line-separator"></a>
|
|
|
|
<p>The ‘<samp>|</samp>’ character can be used to separate statements on the same
|
|
line.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="XStormy16-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#XStormy16-Opcodes" accesskey="n" rel="next">XStormy16 Opcodes</a>, Previous: <a href="#XStormy16-Syntax" accesskey="p" rel="previous">XStormy16 Syntax</a>, Up: <a href="#XSTORMY16_002dDependent" accesskey="u" rel="up">XSTORMY16-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="XStormy16-Machine-Directives"></a>
|
|
<h4 class="subsection">9.54.2 XStormy16 Machine Directives</h4>
|
|
|
|
<a name="index-machine-directives_002c-XStormy16"></a>
|
|
<a name="index-XStormy16-machine-directives"></a>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-16bit_005fpointers-directive_002c-XStormy16"></a>
|
|
</dd>
|
|
<dt><code>.16bit_pointers</code></dt>
|
|
<dd><p>Like the <samp>--16bit-pointers</samp> command-line option this directive
|
|
indicates that the assembly code makes use of 16-bit pointers.
|
|
</p>
|
|
<a name="index-32bit_005fpointers-directive_002c-XStormy16"></a>
|
|
</dd>
|
|
<dt><code>.32bit_pointers</code></dt>
|
|
<dd><p>Like the <samp>--32bit-pointers</samp> command-line option this directive
|
|
indicates that the assembly code makes use of 32-bit pointers.
|
|
</p>
|
|
<a name="index-_002eno_005fpointers-directive_002c-XStormy16"></a>
|
|
</dd>
|
|
<dt><code>.no_pointers</code></dt>
|
|
<dd><p>Like the <samp>--no-pointers</samp> command-line option this directive
|
|
indicates that the assembly code does not makes use pointers.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="XStormy16-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#XStormy16-Directives" accesskey="p" rel="previous">XStormy16 Directives</a>, Up: <a href="#XSTORMY16_002dDependent" accesskey="u" rel="up">XSTORMY16-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="XStormy16-Pseudo_002dOpcodes"></a>
|
|
<h4 class="subsection">9.54.3 XStormy16 Pseudo-Opcodes</h4>
|
|
|
|
<a name="index-XStormy16-pseudo_002dopcodes"></a>
|
|
<a name="index-pseudo_002dopcodes-for-XStormy16"></a>
|
|
<p><code>as</code> implements all the standard XStormy16 opcodes.
|
|
</p>
|
|
<p><code>as</code> also implements the following pseudo ops:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_0040lo-pseudo_002dop_002c-XStormy16"></a>
|
|
</dd>
|
|
<dt><code>@lo()</code></dt>
|
|
<dd><p>Computes the lower 16 bits of the given expression and stores it into
|
|
the immediate operand field of the given instruction. For example:
|
|
</p>
|
|
<p>‘<samp>add r6, @lo(here - there)</samp>’
|
|
</p>
|
|
<p>computes the difference between the address of labels ’here’ and
|
|
’there’, takes the lower 16 bits of this difference and adds it to
|
|
register 6.
|
|
</p>
|
|
<a name="index-_0040hi-pseudo_002dop_002c-XStormy16"></a>
|
|
</dd>
|
|
<dt><code>@hi()</code></dt>
|
|
<dd><p>Computes the higher 16 bits of the given expression and stores it into
|
|
the immediate operand field of the given instruction. For example:
|
|
</p>
|
|
<p>‘<samp>addc r7, @hi(here - there)</samp>’
|
|
</p>
|
|
<p>computes the difference between the address of labels ’here’ and
|
|
’there’, takes the upper 16 bits of this difference, shifts it down 16
|
|
bits and then adds it, along with the carry bit, to the value in
|
|
register 7.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Xtensa_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z80_002dDependent" accesskey="n" rel="next">Z80-Dependent</a>, Previous: <a href="#XSTORMY16_002dDependent" accesskey="p" rel="previous">XSTORMY16-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Xtensa-Dependent-Features"></a>
|
|
<h3 class="section">9.55 Xtensa Dependent Features</h3>
|
|
|
|
<a name="index-Xtensa-architecture"></a>
|
|
<p>This chapter covers features of the <small>GNU</small> assembler that are specific
|
|
to the Xtensa architecture. For details about the Xtensa instruction
|
|
set, please consult the <cite>Xtensa Instruction Set Architecture (ISA)
|
|
Reference Manual</cite>.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Xtensa-Options" accesskey="1">Xtensa Options</a>:</td><td> </td><td align="left" valign="top">Command-line Options.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Xtensa-Syntax" accesskey="2">Xtensa Syntax</a>:</td><td> </td><td align="left" valign="top">Assembler Syntax for Xtensa Processors.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Xtensa-Optimizations" accesskey="3">Xtensa Optimizations</a>:</td><td> </td><td align="left" valign="top">Assembler Optimizations.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Xtensa-Relaxation" accesskey="4">Xtensa Relaxation</a>:</td><td> </td><td align="left" valign="top">Other Automatic Transformations.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Xtensa-Directives" accesskey="5">Xtensa Directives</a>:</td><td> </td><td align="left" valign="top">Directives for Xtensa Processors.
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Xtensa-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Xtensa-Syntax" accesskey="n" rel="next">Xtensa Syntax</a>, Up: <a href="#Xtensa_002dDependent" accesskey="u" rel="up">Xtensa-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Command_002dline-Options-2"></a>
|
|
<h4 class="subsection">9.55.1 Command-line Options</h4>
|
|
|
|
<dl compact="compact">
|
|
<dt><code>--text-section-literals | --no-text-section-literals</code></dt>
|
|
<dd><a name="index-_002d_002dtext_002dsection_002dliterals"></a>
|
|
<a name="index-_002d_002dno_002dtext_002dsection_002dliterals"></a>
|
|
<p>Control the treatment of literal pools. The default is
|
|
‘<samp>--no-text-section-literals</samp>’, which places literals in
|
|
separate sections in the output file. This allows the literal pool to be
|
|
placed in a data RAM/ROM. With ‘<samp>--text-section-literals</samp>’, the
|
|
literals are interspersed in the text section in order to keep them as
|
|
close as possible to their references. This may be necessary for large
|
|
assembly files, where the literals would otherwise be out of range of the
|
|
<code>L32R</code> instructions in the text section. Literals are grouped into
|
|
pools following <code>.literal_position</code> directives or preceding
|
|
<code>ENTRY</code> instructions. These options only affect literals referenced
|
|
via PC-relative <code>L32R</code> instructions; literals for absolute mode
|
|
<code>L32R</code> instructions are handled separately.
|
|
See <a href="#Literal-Directive">literal</a>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--auto-litpools | --no-auto-litpools</code></dt>
|
|
<dd><a name="index-_002d_002dauto_002dlitpools"></a>
|
|
<a name="index-_002d_002dno_002dauto_002dlitpools"></a>
|
|
<p>Control the treatment of literal pools. The default is
|
|
‘<samp>--no-auto-litpools</samp>’, which in the absence of
|
|
‘<samp>--text-section-literals</samp>’ places literals in separate sections
|
|
in the output file. This allows the literal pool to be placed in a data
|
|
RAM/ROM. With ‘<samp>--auto-litpools</samp>’, the literals are interspersed
|
|
in the text section in order to keep them as close as possible to their
|
|
references, explicit <code>.literal_position</code> directives are not
|
|
required. This may be necessary for very large functions, where single
|
|
literal pool at the beginning of the function may not be reachable by
|
|
<code>L32R</code> instructions at the end. These options only affect
|
|
literals referenced via PC-relative <code>L32R</code> instructions; literals
|
|
for absolute mode <code>L32R</code> instructions are handled separately.
|
|
When used together with ‘<samp>--text-section-literals</samp>’,
|
|
‘<samp>--auto-litpools</samp>’ takes precedence.
|
|
See <a href="#Literal-Directive">literal</a>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--absolute-literals | --no-absolute-literals</code></dt>
|
|
<dd><a name="index-_002d_002dabsolute_002dliterals"></a>
|
|
<a name="index-_002d_002dno_002dabsolute_002dliterals"></a>
|
|
<p>Indicate to the assembler whether <code>L32R</code> instructions use absolute
|
|
or PC-relative addressing. If the processor includes the absolute
|
|
addressing option, the default is to use absolute <code>L32R</code>
|
|
relocations. Otherwise, only the PC-relative <code>L32R</code> relocations
|
|
can be used.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--target-align | --no-target-align</code></dt>
|
|
<dd><a name="index-_002d_002dtarget_002dalign"></a>
|
|
<a name="index-_002d_002dno_002dtarget_002dalign"></a>
|
|
<p>Enable or disable automatic alignment to reduce branch penalties at some
|
|
expense in code size. See <a href="#Xtensa-Automatic-Alignment">Automatic
|
|
Instruction Alignment</a>. This optimization is enabled by default. Note
|
|
that the assembler will always align instructions like <code>LOOP</code> that
|
|
have fixed alignment requirements.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--longcalls | --no-longcalls</code></dt>
|
|
<dd><a name="index-_002d_002dlongcalls"></a>
|
|
<a name="index-_002d_002dno_002dlongcalls"></a>
|
|
<p>Enable or disable transformation of call instructions to allow calls
|
|
across a greater range of addresses. See <a href="#Xtensa-Call-Relaxation">Function Call Relaxation</a>. This option should be used when call
|
|
targets can potentially be out of range. It may degrade both code size
|
|
and performance, but the linker can generally optimize away the
|
|
unnecessary overhead when a call ends up within range. The default is
|
|
‘<samp>--no-longcalls</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--transform | --no-transform</code></dt>
|
|
<dd><a name="index-_002d_002dtransform"></a>
|
|
<a name="index-_002d_002dno_002dtransform"></a>
|
|
<p>Enable or disable all assembler transformations of Xtensa instructions,
|
|
including both relaxation and optimization. The default is
|
|
‘<samp>--transform</samp>’; ‘<samp>--no-transform</samp>’ should only be used in the
|
|
rare cases when the instructions must be exactly as specified in the
|
|
assembly source. Using ‘<samp>--no-transform</samp>’ causes out of range
|
|
instruction operands to be errors.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--rename-section <var>oldname</var>=<var>newname</var></code></dt>
|
|
<dd><a name="index-_002d_002drename_002dsection"></a>
|
|
<p>Rename the <var>oldname</var> section to <var>newname</var>. This option can be used
|
|
multiple times to rename multiple sections.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--trampolines | --no-trampolines</code></dt>
|
|
<dd><a name="index-_002d_002dtrampolines"></a>
|
|
<a name="index-_002d_002dno_002dtrampolines"></a>
|
|
<p>Enable or disable transformation of jump instructions to allow jumps
|
|
across a greater range of addresses. See <a href="#Xtensa-Jump-Relaxation">Jump Trampolines</a>. This option should be used when jump targets can
|
|
potentially be out of range. In the absence of such jumps this option
|
|
does not affect code size or performance. The default is
|
|
‘<samp>--trampolines</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code>--abi-windowed | --abi-call0</code></dt>
|
|
<dd><a name="index-_002d_002dabi_002dwindowed"></a>
|
|
<a name="index-_002d_002dabi_002dcall0"></a>
|
|
<p>Choose ABI tag written to the <code>.xtensa.info</code> section. ABI tag
|
|
indicates ABI of the assembly code. A warning is issued by the linker
|
|
on an attempt to link object files with inconsistent ABI tags.
|
|
Default ABI is chosen by the Xtensa core configuration.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<hr>
|
|
<a name="Xtensa-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Xtensa-Optimizations" accesskey="n" rel="next">Xtensa Optimizations</a>, Previous: <a href="#Xtensa-Options" accesskey="p" rel="previous">Xtensa Options</a>, Up: <a href="#Xtensa_002dDependent" accesskey="u" rel="up">Xtensa-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-Syntax"></a>
|
|
<h4 class="subsection">9.55.2 Assembler Syntax</h4>
|
|
<a name="index-syntax_002c-Xtensa-assembler"></a>
|
|
<a name="index-Xtensa-assembler-syntax"></a>
|
|
<a name="index-FLIX-syntax"></a>
|
|
|
|
<p>Block comments are delimited by ‘<samp>/*</samp>’ and ‘<samp>*/</samp>’. End of line
|
|
comments may be introduced with either ‘<samp>#</samp>’ or ‘<samp>//</samp>’.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line then the whole
|
|
line is treated as a comment, but in this case the line could also be
|
|
a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<p>Instructions consist of a leading opcode or macro name followed by
|
|
whitespace and an optional comma-separated list of operands:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><var>opcode</var> [<var>operand</var>, …]
|
|
</pre></div>
|
|
|
|
<p>Instructions must be separated by a newline or semicolon (‘<samp>;</samp>’).
|
|
</p>
|
|
<p>FLIX instructions, which bundle multiple opcodes together in a single
|
|
instruction, are specified by enclosing the bundled opcodes inside
|
|
braces:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">{
|
|
[<var>format</var>]
|
|
<var>opcode0</var> [<var>operands</var>]
|
|
</pre><pre class="smallexample"><var>opcode1</var> [<var>operands</var>]
|
|
</pre><pre class="smallexample"><var>opcode2</var> [<var>operands</var>]
|
|
…
|
|
}
|
|
</pre></div>
|
|
|
|
<p>The opcodes in a FLIX instruction are listed in the same order as the
|
|
corresponding instruction slots in the TIE format declaration.
|
|
Directives and labels are not allowed inside the braces of a FLIX
|
|
instruction. A particular TIE format name can optionally be specified
|
|
immediately after the opening brace, but this is usually unnecessary.
|
|
The assembler will automatically search for a format that can encode the
|
|
specified opcodes, so the format name need only be specified in rare
|
|
cases where there is more than one applicable format and where it
|
|
matters which of those formats is used. A FLIX instruction can also be
|
|
specified on a single line by separating the opcodes with semicolons:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">{ [<var>format</var>;] <var>opcode0</var> [<var>operands</var>]; <var>opcode1</var> [<var>operands</var>]; <var>opcode2</var> [<var>operands</var>]; … }
|
|
</pre></div>
|
|
|
|
<p>If an opcode can only be encoded in a FLIX instruction but is not
|
|
specified as part of a FLIX bundle, the assembler will choose the
|
|
smallest format where the opcode can be encoded and
|
|
will fill unused instruction slots with no-ops.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Xtensa-Opcodes" accesskey="1">Xtensa Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcode Naming Conventions.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Xtensa-Registers" accesskey="2">Xtensa Registers</a>:</td><td> </td><td align="left" valign="top">Register Naming.
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Xtensa-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Xtensa-Registers" accesskey="n" rel="next">Xtensa Registers</a>, Up: <a href="#Xtensa-Syntax" accesskey="u" rel="up">Xtensa Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcode-Names-2"></a>
|
|
<h4 class="subsubsection">9.55.2.1 Opcode Names</h4>
|
|
<a name="index-Xtensa-opcode-names"></a>
|
|
<a name="index-opcode-names_002c-Xtensa"></a>
|
|
|
|
<p>See the <cite>Xtensa Instruction Set Architecture (ISA) Reference
|
|
Manual</cite> for a complete list of opcodes and descriptions of their
|
|
semantics.
|
|
</p>
|
|
<a name="index-_005f-opcode-prefix"></a>
|
|
<p>If an opcode name is prefixed with an underscore character (‘<samp>_</samp>’),
|
|
<code>as</code> will not transform that instruction in any way. The
|
|
underscore prefix disables both optimization (see <a href="#Xtensa-Optimizations">Xtensa Optimizations</a>) and relaxation (see <a href="#Xtensa-Relaxation">Xtensa Relaxation</a>) for that particular instruction. Only
|
|
use the underscore prefix when it is essential to select the exact
|
|
opcode produced by the assembler. Using this feature unnecessarily
|
|
makes the code less efficient by disabling assembler optimization and
|
|
less flexible by disabling relaxation.
|
|
</p>
|
|
<p>Note that this special handling of underscore prefixes only applies to
|
|
Xtensa opcodes, not to either built-in macros or user-defined macros.
|
|
When an underscore prefix is used with a macro (e.g., <code>_MOV</code>), it
|
|
refers to a different macro. The assembler generally provides built-in
|
|
macros both with and without the underscore prefix, where the underscore
|
|
versions behave as if the underscore carries through to the instructions
|
|
in the macros. For example, <code>_MOV</code> may expand to <code>_MOV.N</code>.
|
|
</p>
|
|
<p>The underscore prefix only applies to individual instructions, not to
|
|
series of instructions. For example, if a series of instructions have
|
|
underscore prefixes, the assembler will not transform the individual
|
|
instructions, but it may insert other instructions between them (e.g.,
|
|
to align a <code>LOOP</code> instruction). To prevent the assembler from
|
|
modifying a series of instructions as a whole, use the
|
|
<code>no-transform</code> directive. See <a href="#Transform-Directive">transform</a>.
|
|
</p>
|
|
<hr>
|
|
<a name="Xtensa-Registers"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Xtensa-Opcodes" accesskey="p" rel="previous">Xtensa Opcodes</a>, Up: <a href="#Xtensa-Syntax" accesskey="u" rel="up">Xtensa Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-21"></a>
|
|
<h4 class="subsubsection">9.55.2.2 Register Names</h4>
|
|
<a name="index-Xtensa-register-names"></a>
|
|
<a name="index-register-names_002c-Xtensa"></a>
|
|
<a name="index-sp-register"></a>
|
|
|
|
<p>The assembly syntax for a register file entry is the “short” name for
|
|
a TIE register file followed by the index into that register file. For
|
|
example, the general-purpose <code>AR</code> register file has a short name of
|
|
<code>a</code>, so these registers are named <code>a0</code>…<code>a15</code>.
|
|
As a special feature, <code>sp</code> is also supported as a synonym for
|
|
<code>a1</code>. Additional registers may be added by processor configuration
|
|
options and by designer-defined TIE extensions. An initial ‘<samp>$</samp>’
|
|
character is optional in all register names.
|
|
</p>
|
|
<hr>
|
|
<a name="Xtensa-Optimizations"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Xtensa-Relaxation" accesskey="n" rel="next">Xtensa Relaxation</a>, Previous: <a href="#Xtensa-Syntax" accesskey="p" rel="previous">Xtensa Syntax</a>, Up: <a href="#Xtensa_002dDependent" accesskey="u" rel="up">Xtensa-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Xtensa-Optimizations-1"></a>
|
|
<h4 class="subsection">9.55.3 Xtensa Optimizations</h4>
|
|
<a name="index-optimizations"></a>
|
|
|
|
<p>The optimizations currently supported by <code>as</code> are
|
|
generation of density instructions where appropriate and automatic
|
|
branch target alignment.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Density-Instructions" accesskey="1">Density Instructions</a>:</td><td> </td><td align="left" valign="top">Using Density Instructions.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Xtensa-Automatic-Alignment" accesskey="2">Xtensa Automatic Alignment</a>:</td><td> </td><td align="left" valign="top">Automatic Instruction Alignment.
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Density-Instructions"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Xtensa-Automatic-Alignment" accesskey="n" rel="next">Xtensa Automatic Alignment</a>, Up: <a href="#Xtensa-Optimizations" accesskey="u" rel="up">Xtensa Optimizations</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Using-Density-Instructions"></a>
|
|
<h4 class="subsubsection">9.55.3.1 Using Density Instructions</h4>
|
|
<a name="index-density-instructions"></a>
|
|
|
|
<p>The Xtensa instruction set has a code density option that provides
|
|
16-bit versions of some of the most commonly used opcodes. Use of these
|
|
opcodes can significantly reduce code size. When possible, the
|
|
assembler automatically translates instructions from the core
|
|
Xtensa instruction set into equivalent instructions from the Xtensa code
|
|
density option. This translation can be disabled by using underscore
|
|
prefixes (see <a href="#Xtensa-Opcodes">Opcode Names</a>), by using the
|
|
‘<samp>--no-transform</samp>’ command-line option (see <a href="#Xtensa-Options">Command
|
|
Line Options</a>), or by using the <code>no-transform</code> directive
|
|
(see <a href="#Transform-Directive">transform</a>).
|
|
</p>
|
|
<p>It is a good idea <em>not</em> to use the density instructions directly.
|
|
The assembler will automatically select dense instructions where
|
|
possible. If you later need to use an Xtensa processor without the code
|
|
density option, the same assembly code will then work without modification.
|
|
</p>
|
|
<hr>
|
|
<a name="Xtensa-Automatic-Alignment"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Density-Instructions" accesskey="p" rel="previous">Density Instructions</a>, Up: <a href="#Xtensa-Optimizations" accesskey="u" rel="up">Xtensa Optimizations</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Automatic-Instruction-Alignment"></a>
|
|
<h4 class="subsubsection">9.55.3.2 Automatic Instruction Alignment</h4>
|
|
<a name="index-alignment-of-LOOP-instructions"></a>
|
|
<a name="index-alignment-of-branch-targets"></a>
|
|
<a name="index-LOOP-instructions_002c-alignment"></a>
|
|
<a name="index-branch-target-alignment"></a>
|
|
|
|
<p>The Xtensa assembler will automatically align certain instructions, both
|
|
to optimize performance and to satisfy architectural requirements.
|
|
</p>
|
|
<p>As an optimization to improve performance, the assembler attempts to
|
|
align branch targets so they do not cross instruction fetch boundaries.
|
|
(Xtensa processors can be configured with either 32-bit or 64-bit
|
|
instruction fetch widths.) An
|
|
instruction immediately following a call is treated as a branch target
|
|
in this context, because it will be the target of a return from the
|
|
call. This alignment has the potential to reduce branch penalties at
|
|
some expense in code size.
|
|
This optimization is enabled by default. You can disable it with the
|
|
‘<samp>--no-target-align</samp>’ command-line option (see <a href="#Xtensa-Options">Command-line Options</a>).
|
|
</p>
|
|
<p>The target alignment optimization is done without adding instructions
|
|
that could increase the execution time of the program. If there are
|
|
density instructions in the code preceding a target, the assembler can
|
|
change the target alignment by widening some of those instructions to
|
|
the equivalent 24-bit instructions. Extra bytes of padding can be
|
|
inserted immediately following unconditional jump and return
|
|
instructions.
|
|
This approach is usually successful in aligning many, but not all,
|
|
branch targets.
|
|
</p>
|
|
<p>The <code>LOOP</code> family of instructions must be aligned such that the
|
|
first instruction in the loop body does not cross an instruction fetch
|
|
boundary (e.g., with a 32-bit fetch width, a <code>LOOP</code> instruction
|
|
must be on either a 1 or 2 mod 4 byte boundary). The assembler knows
|
|
about this restriction and inserts the minimal number of 2 or 3 byte
|
|
no-op instructions to satisfy it. When no-op instructions are added,
|
|
any label immediately preceding the original loop will be moved in order
|
|
to refer to the loop instruction, not the newly generated no-op
|
|
instruction. To preserve binary compatibility across processors with
|
|
different fetch widths, the assembler conservatively assumes a 32-bit
|
|
fetch width when aligning <code>LOOP</code> instructions (except if the first
|
|
instruction in the loop is a 64-bit instruction).
|
|
</p>
|
|
<p>Previous versions of the assembler automatically aligned <code>ENTRY</code>
|
|
instructions to 4-byte boundaries, but that alignment is now the
|
|
programmer’s responsibility.
|
|
</p>
|
|
<hr>
|
|
<a name="Xtensa-Relaxation"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Xtensa-Directives" accesskey="n" rel="next">Xtensa Directives</a>, Previous: <a href="#Xtensa-Optimizations" accesskey="p" rel="previous">Xtensa Optimizations</a>, Up: <a href="#Xtensa_002dDependent" accesskey="u" rel="up">Xtensa-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Xtensa-Relaxation-1"></a>
|
|
<h4 class="subsection">9.55.4 Xtensa Relaxation</h4>
|
|
<a name="index-relaxation"></a>
|
|
|
|
<p>When an instruction operand is outside the range allowed for that
|
|
particular instruction field, <code>as</code> can transform the code
|
|
to use a functionally-equivalent instruction or sequence of
|
|
instructions. This process is known as <em>relaxation</em>. This is
|
|
typically done for branch instructions because the distance of the
|
|
branch targets is not known until assembly-time. The Xtensa assembler
|
|
offers branch relaxation and also extends this concept to function
|
|
calls, <code>MOVI</code> instructions and other instructions with immediate
|
|
fields.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Xtensa-Branch-Relaxation" accesskey="1">Xtensa Branch Relaxation</a>:</td><td> </td><td align="left" valign="top">Relaxation of Branches.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Xtensa-Call-Relaxation" accesskey="2">Xtensa Call Relaxation</a>:</td><td> </td><td align="left" valign="top">Relaxation of Function Calls.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Xtensa-Jump-Relaxation" accesskey="3">Xtensa Jump Relaxation</a>:</td><td> </td><td align="left" valign="top">Relaxation of Jumps.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Xtensa-Immediate-Relaxation" accesskey="4">Xtensa Immediate Relaxation</a>:</td><td> </td><td align="left" valign="top">Relaxation of other Immediate Fields.
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Xtensa-Branch-Relaxation"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Xtensa-Call-Relaxation" accesskey="n" rel="next">Xtensa Call Relaxation</a>, Up: <a href="#Xtensa-Relaxation" accesskey="u" rel="up">Xtensa Relaxation</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Conditional-Branch-Relaxation"></a>
|
|
<h4 class="subsubsection">9.55.4.1 Conditional Branch Relaxation</h4>
|
|
<a name="index-relaxation-of-branch-instructions"></a>
|
|
<a name="index-branch-instructions_002c-relaxation"></a>
|
|
|
|
<p>When the target of a branch is too far away from the branch itself,
|
|
i.e., when the offset from the branch to the target is too large to fit
|
|
in the immediate field of the branch instruction, it may be necessary to
|
|
replace the branch with a branch around a jump. For example,
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> beqz a2, L
|
|
</pre></div>
|
|
|
|
<p>may result in:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> bnez.n a2, M
|
|
j L
|
|
M:
|
|
</pre></div>
|
|
|
|
<p>(The <code>BNEZ.N</code> instruction would be used in this example only if the
|
|
density option is available. Otherwise, <code>BNEZ</code> would be used.)
|
|
</p>
|
|
<p>This relaxation works well because the unconditional jump instruction
|
|
has a much larger offset range than the various conditional branches.
|
|
However, an error will occur if a branch target is beyond the range of a
|
|
jump instruction. <code>as</code> cannot relax unconditional jumps.
|
|
Similarly, an error will occur if the original input contains an
|
|
unconditional jump to a target that is out of range.
|
|
</p>
|
|
<p>Branch relaxation is enabled by default. It can be disabled by using
|
|
underscore prefixes (see <a href="#Xtensa-Opcodes">Opcode Names</a>), the
|
|
‘<samp>--no-transform</samp>’ command-line option (see <a href="#Xtensa-Options">Command-line Options</a>), or the <code>no-transform</code> directive
|
|
(see <a href="#Transform-Directive">transform</a>).
|
|
</p>
|
|
<hr>
|
|
<a name="Xtensa-Call-Relaxation"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Xtensa-Jump-Relaxation" accesskey="n" rel="next">Xtensa Jump Relaxation</a>, Previous: <a href="#Xtensa-Branch-Relaxation" accesskey="p" rel="previous">Xtensa Branch Relaxation</a>, Up: <a href="#Xtensa-Relaxation" accesskey="u" rel="up">Xtensa Relaxation</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Function-Call-Relaxation"></a>
|
|
<h4 class="subsubsection">9.55.4.2 Function Call Relaxation</h4>
|
|
<a name="index-relaxation-of-call-instructions"></a>
|
|
<a name="index-call-instructions_002c-relaxation"></a>
|
|
|
|
<p>Function calls may require relaxation because the Xtensa immediate call
|
|
instructions (<code>CALL0</code>, <code>CALL4</code>, <code>CALL8</code> and
|
|
<code>CALL12</code>) provide a PC-relative offset of only 512 Kbytes in either
|
|
direction. For larger programs, it may be necessary to use indirect
|
|
calls (<code>CALLX0</code>, <code>CALLX4</code>, <code>CALLX8</code> and <code>CALLX12</code>)
|
|
where the target address is specified in a register. The Xtensa
|
|
assembler can automatically relax immediate call instructions into
|
|
indirect call instructions. This relaxation is done by loading the
|
|
address of the called function into the callee’s return address register
|
|
and then using a <code>CALLX</code> instruction. So, for example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> call8 func
|
|
</pre></div>
|
|
|
|
<p>might be relaxed to:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .literal .L1, func
|
|
l32r a8, .L1
|
|
callx8 a8
|
|
</pre></div>
|
|
|
|
<p>Because the addresses of targets of function calls are not generally
|
|
known until link-time, the assembler must assume the worst and relax all
|
|
the calls to functions in other source files, not just those that really
|
|
will be out of range. The linker can recognize calls that were
|
|
unnecessarily relaxed, and it will remove the overhead introduced by the
|
|
assembler for those cases where direct calls are sufficient.
|
|
</p>
|
|
<p>Call relaxation is disabled by default because it can have a negative
|
|
effect on both code size and performance, although the linker can
|
|
usually eliminate the unnecessary overhead. If a program is too large
|
|
and some of the calls are out of range, function call relaxation can be
|
|
enabled using the ‘<samp>--longcalls</samp>’ command-line option or the
|
|
<code>longcalls</code> directive (see <a href="#Longcalls-Directive">longcalls</a>).
|
|
</p>
|
|
<hr>
|
|
<a name="Xtensa-Jump-Relaxation"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Xtensa-Immediate-Relaxation" accesskey="n" rel="next">Xtensa Immediate Relaxation</a>, Previous: <a href="#Xtensa-Call-Relaxation" accesskey="p" rel="previous">Xtensa Call Relaxation</a>, Up: <a href="#Xtensa-Relaxation" accesskey="u" rel="up">Xtensa Relaxation</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Jump-Relaxation"></a>
|
|
<h4 class="subsubsection">9.55.4.3 Jump Relaxation</h4>
|
|
<a name="index-relaxation-of-jump-instructions"></a>
|
|
<a name="index-jump-instructions_002c-relaxation"></a>
|
|
|
|
<p>Jump instruction may require relaxation because the Xtensa jump instruction
|
|
(<code>J</code>) provide a PC-relative offset of only 128 Kbytes in either
|
|
direction. One option is to use jump long (<code>J.L</code>) instruction, which
|
|
depending on jump distance may be assembled as jump (<code>J</code>) or indirect
|
|
jump (<code>JX</code>). However it needs a free register. When there’s no spare
|
|
register it is possible to plant intermediate jump sites (trampolines)
|
|
between the jump instruction and its target. These sites may be located in
|
|
areas unreachable by normal code execution flow, in that case they only
|
|
contain intermediate jumps, or they may be inserted in the middle of code
|
|
block, in which case there’s an additional jump from the beginning of the
|
|
trampoline to the instruction past its end. So, for example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> j 1f
|
|
...
|
|
retw
|
|
...
|
|
mov a10, a2
|
|
call8 func
|
|
...
|
|
1:
|
|
...
|
|
</pre></div>
|
|
|
|
<p>might be relaxed to:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> j .L0_TR_1
|
|
...
|
|
retw
|
|
.L0_TR_1:
|
|
j 1f
|
|
...
|
|
mov a10, a2
|
|
call8 func
|
|
...
|
|
1:
|
|
...
|
|
</pre></div>
|
|
|
|
<p>or to:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> j .L0_TR_1
|
|
...
|
|
retw
|
|
...
|
|
mov a10, a2
|
|
j .L0_TR_0
|
|
.L0_TR_1:
|
|
j 1f
|
|
.L0_TR_0:
|
|
call8 func
|
|
...
|
|
1:
|
|
...
|
|
</pre></div>
|
|
|
|
<p>The Xtensa assembler uses trampolines with jump around only when it cannot
|
|
find suitable unreachable trampoline. There may be multiple trampolines
|
|
between the jump instruction and its target.
|
|
</p>
|
|
<p>This relaxation does not apply to jumps to undefined symbols, assuming they
|
|
will reach their targets once resolved.
|
|
</p>
|
|
<p>Jump relaxation is enabled by default because it does not affect code size
|
|
or performance while the code itself is small. This relaxation may be
|
|
disabled completely with ‘<samp>--no-trampolines</samp>’ or ‘<samp>--no-transform</samp>’
|
|
command-line options (see <a href="#Xtensa-Options">Command-line Options</a>).
|
|
</p>
|
|
<hr>
|
|
<a name="Xtensa-Immediate-Relaxation"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Xtensa-Jump-Relaxation" accesskey="p" rel="previous">Xtensa Jump Relaxation</a>, Up: <a href="#Xtensa-Relaxation" accesskey="u" rel="up">Xtensa Relaxation</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Other-Immediate-Field-Relaxation"></a>
|
|
<h4 class="subsubsection">9.55.4.4 Other Immediate Field Relaxation</h4>
|
|
<a name="index-immediate-fields_002c-relaxation"></a>
|
|
<a name="index-relaxation-of-immediate-fields"></a>
|
|
|
|
<p>The assembler normally performs the following other relaxations. They
|
|
can be disabled by using underscore prefixes (see <a href="#Xtensa-Opcodes">Opcode Names</a>), the ‘<samp>--no-transform</samp>’ command-line option
|
|
(see <a href="#Xtensa-Options">Command-line Options</a>), or the
|
|
<code>no-transform</code> directive (see <a href="#Transform-Directive">transform</a>).
|
|
</p>
|
|
<a name="index-MOVI-instructions_002c-relaxation"></a>
|
|
<a name="index-relaxation-of-MOVI-instructions"></a>
|
|
<p>The <code>MOVI</code> machine instruction can only materialize values in the
|
|
range from -2048 to 2047. Values outside this range are best
|
|
materialized with <code>L32R</code> instructions. Thus:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> movi a0, 100000
|
|
</pre></div>
|
|
|
|
<p>is assembled into the following machine code:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .literal .L1, 100000
|
|
l32r a0, .L1
|
|
</pre></div>
|
|
|
|
<a name="index-L8UI-instructions_002c-relaxation"></a>
|
|
<a name="index-L16SI-instructions_002c-relaxation"></a>
|
|
<a name="index-L16UI-instructions_002c-relaxation"></a>
|
|
<a name="index-L32I-instructions_002c-relaxation"></a>
|
|
<a name="index-relaxation-of-L8UI-instructions"></a>
|
|
<a name="index-relaxation-of-L16SI-instructions"></a>
|
|
<a name="index-relaxation-of-L16UI-instructions"></a>
|
|
<a name="index-relaxation-of-L32I-instructions"></a>
|
|
<p>The <code>L8UI</code> machine instruction can only be used with immediate
|
|
offsets in the range from 0 to 255. The <code>L16SI</code> and <code>L16UI</code>
|
|
machine instructions can only be used with offsets from 0 to 510. The
|
|
<code>L32I</code> machine instruction can only be used with offsets from 0 to
|
|
1020. A load offset outside these ranges can be materialized with
|
|
an <code>L32R</code> instruction if the destination register of the load
|
|
is different than the source address register. For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> l32i a1, a0, 2040
|
|
</pre></div>
|
|
|
|
<p>is translated to:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .literal .L1, 2040
|
|
l32r a1, .L1
|
|
</pre><pre class="smallexample"> add a1, a0, a1
|
|
l32i a1, a1, 0
|
|
</pre></div>
|
|
|
|
<p>If the load destination and source address register are the same, an
|
|
out-of-range offset causes an error.
|
|
</p>
|
|
<a name="index-ADDI-instructions_002c-relaxation"></a>
|
|
<a name="index-relaxation-of-ADDI-instructions"></a>
|
|
<p>The Xtensa <code>ADDI</code> instruction only allows immediate operands in the
|
|
range from -128 to 127. There are a number of alternate instruction
|
|
sequences for the <code>ADDI</code> operation. First, if the
|
|
immediate is 0, the <code>ADDI</code> will be turned into a <code>MOV.N</code>
|
|
instruction (or the equivalent <code>OR</code> instruction if the code density
|
|
option is not available). If the <code>ADDI</code> immediate is outside of
|
|
the range -128 to 127, but inside the range -32896 to 32639, an
|
|
<code>ADDMI</code> instruction or <code>ADDMI</code>/<code>ADDI</code> sequence will be
|
|
used. Finally, if the immediate is outside of this range and a free
|
|
register is available, an <code>L32R</code>/<code>ADD</code> sequence will be used
|
|
with a literal allocated from the literal pool.
|
|
</p>
|
|
<p>For example:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> addi a5, a6, 0
|
|
addi a5, a6, 512
|
|
</pre><pre class="smallexample"> addi a5, a6, 513
|
|
addi a5, a6, 50000
|
|
</pre></div>
|
|
|
|
<p>is assembled into the following:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .literal .L1, 50000
|
|
mov.n a5, a6
|
|
</pre><pre class="smallexample"> addmi a5, a6, 0x200
|
|
addmi a5, a6, 0x200
|
|
addi a5, a5, 1
|
|
</pre><pre class="smallexample"> l32r a5, .L1
|
|
add a5, a6, a5
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="Xtensa-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Xtensa-Relaxation" accesskey="p" rel="previous">Xtensa Relaxation</a>, Up: <a href="#Xtensa_002dDependent" accesskey="u" rel="up">Xtensa-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Directives-3"></a>
|
|
<h4 class="subsection">9.55.5 Directives</h4>
|
|
<a name="index-Xtensa-directives"></a>
|
|
<a name="index-directives_002c-Xtensa"></a>
|
|
|
|
<p>The Xtensa assembler supports a region-based directive syntax:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .begin <var>directive</var> [<var>options</var>]
|
|
…
|
|
.end <var>directive</var>
|
|
</pre></div>
|
|
|
|
<p>All the Xtensa-specific directives that apply to a region of code use
|
|
this syntax.
|
|
</p>
|
|
<p>The directive applies to code between the <code>.begin</code> and the
|
|
<code>.end</code>. The state of the option after the <code>.end</code> reverts to
|
|
what it was before the <code>.begin</code>.
|
|
A nested <code>.begin</code>/<code>.end</code> region can further
|
|
change the state of the directive without having to be aware of its
|
|
outer state. For example, consider:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .begin no-transform
|
|
L: add a0, a1, a2
|
|
</pre><pre class="smallexample"> .begin transform
|
|
M: add a0, a1, a2
|
|
.end transform
|
|
</pre><pre class="smallexample">N: add a0, a1, a2
|
|
.end no-transform
|
|
</pre></div>
|
|
|
|
<p>The <code>ADD</code> opcodes at <code>L</code> and <code>N</code> in the outer
|
|
<code>no-transform</code> region both result in <code>ADD</code> machine instructions,
|
|
but the assembler selects an <code>ADD.N</code> instruction for the
|
|
<code>ADD</code> at <code>M</code> in the inner <code>transform</code> region.
|
|
</p>
|
|
<p>The advantage of this style is that it works well inside macros which can
|
|
preserve the context of their callers.
|
|
</p>
|
|
<p>The following directives are available:
|
|
</p><table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Schedule-Directive" accesskey="1">Schedule Directive</a>:</td><td> </td><td align="left" valign="top">Enable instruction scheduling.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Longcalls-Directive" accesskey="2">Longcalls Directive</a>:</td><td> </td><td align="left" valign="top">Use Indirect Calls for Greater Range.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Transform-Directive" accesskey="3">Transform Directive</a>:</td><td> </td><td align="left" valign="top">Disable All Assembler Transformations.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Literal-Directive" accesskey="4">Literal Directive</a>:</td><td> </td><td align="left" valign="top">Intermix Literals with Instructions.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Literal-Position-Directive" accesskey="5">Literal Position Directive</a>:</td><td> </td><td align="left" valign="top">Specify Inline Literal Pool Locations.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Literal-Prefix-Directive" accesskey="6">Literal Prefix Directive</a>:</td><td> </td><td align="left" valign="top">Specify Literal Section Name Prefix.
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Absolute-Literals-Directive" accesskey="7">Absolute Literals Directive</a>:</td><td> </td><td align="left" valign="top">Control PC-Relative vs. Absolute Literals.
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Schedule-Directive"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Longcalls-Directive" accesskey="n" rel="next">Longcalls Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="schedule"></a>
|
|
<h4 class="subsubsection">9.55.5.1 schedule</h4>
|
|
<a name="index-schedule-directive"></a>
|
|
<a name="index-no_002dschedule-directive"></a>
|
|
|
|
<p>The <code>schedule</code> directive is recognized only for compatibility with
|
|
Tensilica’s assembler.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .begin [no-]schedule
|
|
.end [no-]schedule
|
|
</pre></div>
|
|
|
|
<p>This directive is ignored and has no effect on <code>as</code>.
|
|
</p>
|
|
<hr>
|
|
<a name="Longcalls-Directive"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Transform-Directive" accesskey="n" rel="next">Transform Directive</a>, Previous: <a href="#Schedule-Directive" accesskey="p" rel="previous">Schedule Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="longcalls"></a>
|
|
<h4 class="subsubsection">9.55.5.2 longcalls</h4>
|
|
<a name="index-longcalls-directive"></a>
|
|
<a name="index-no_002dlongcalls-directive"></a>
|
|
|
|
<p>The <code>longcalls</code> directive enables or disables function call
|
|
relaxation. See <a href="#Xtensa-Call-Relaxation">Function Call Relaxation</a>.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .begin [no-]longcalls
|
|
.end [no-]longcalls
|
|
</pre></div>
|
|
|
|
<p>Call relaxation is disabled by default unless the ‘<samp>--longcalls</samp>’
|
|
command-line option is specified. The <code>longcalls</code> directive
|
|
overrides the default determined by the command-line options.
|
|
</p>
|
|
<hr>
|
|
<a name="Transform-Directive"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Literal-Directive" accesskey="n" rel="next">Literal Directive</a>, Previous: <a href="#Longcalls-Directive" accesskey="p" rel="previous">Longcalls Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="transform"></a>
|
|
<h4 class="subsubsection">9.55.5.3 transform</h4>
|
|
<a name="index-transform-directive"></a>
|
|
<a name="index-no_002dtransform-directive"></a>
|
|
|
|
<p>This directive enables or disables all assembler transformation,
|
|
including relaxation (see <a href="#Xtensa-Relaxation">Xtensa Relaxation</a>) and
|
|
optimization (see <a href="#Xtensa-Optimizations">Xtensa Optimizations</a>).
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .begin [no-]transform
|
|
.end [no-]transform
|
|
</pre></div>
|
|
|
|
<p>Transformations are enabled by default unless the ‘<samp>--no-transform</samp>’
|
|
option is used. The <code>transform</code> directive overrides the default
|
|
determined by the command-line options. An underscore opcode prefix,
|
|
disabling transformation of that opcode, always takes precedence over
|
|
both directives and command-line flags.
|
|
</p>
|
|
<hr>
|
|
<a name="Literal-Directive"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Literal-Position-Directive" accesskey="n" rel="next">Literal Position Directive</a>, Previous: <a href="#Transform-Directive" accesskey="p" rel="previous">Transform Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="literal"></a>
|
|
<h4 class="subsubsection">9.55.5.4 literal</h4>
|
|
<a name="index-literal-directive"></a>
|
|
|
|
<p>The <code>.literal</code> directive is used to define literal pool data, i.e.,
|
|
read-only 32-bit data accessed via <code>L32R</code> instructions.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .literal <var>label</var>, <var>value</var>[, <var>value</var>…]
|
|
</pre></div>
|
|
|
|
<p>This directive is similar to the standard <code>.word</code> directive, except
|
|
that the actual location of the literal data is determined by the
|
|
assembler and linker, not by the position of the <code>.literal</code>
|
|
directive. Using this directive gives the assembler freedom to locate
|
|
the literal data in the most appropriate place and possibly to combine
|
|
identical literals. For example, the code:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> entry sp, 40
|
|
.literal .L1, sym
|
|
l32r a4, .L1
|
|
</pre></div>
|
|
|
|
<p>can be used to load a pointer to the symbol <code>sym</code> into register
|
|
<code>a4</code>. The value of <code>sym</code> will not be placed between the
|
|
<code>ENTRY</code> and <code>L32R</code> instructions; instead, the assembler puts
|
|
the data in a literal pool.
|
|
</p>
|
|
<p>Literal pools are placed by default in separate literal sections;
|
|
however, when using the ‘<samp>--text-section-literals</samp>’
|
|
option (see <a href="#Xtensa-Options">Command-line Options</a>), the literal
|
|
pools for PC-relative mode <code>L32R</code> instructions
|
|
are placed in the current section.<a name="DOCF3" href="#FOOT3"><sup>3</sup></a>
|
|
These text section literal
|
|
pools are created automatically before <code>ENTRY</code> instructions and
|
|
manually after ‘<samp>.literal_position</samp>’ directives (see <a href="#Literal-Position-Directive">literal_position</a>). If there are no preceding
|
|
<code>ENTRY</code> instructions, explicit <code>.literal_position</code> directives
|
|
must be used to place the text section literal pools; otherwise,
|
|
<code>as</code> will report an error.
|
|
</p>
|
|
<p>When literals are placed in separate sections, the literal section names
|
|
are derived from the names of the sections where the literals are
|
|
defined. The base literal section names are <code>.literal</code> for
|
|
PC-relative mode <code>L32R</code> instructions and <code>.lit4</code> for absolute
|
|
mode <code>L32R</code> instructions (see <a href="#Absolute-Literals-Directive">absolute-literals</a>). These base names are used for literals defined in
|
|
the default <code>.text</code> section. For literals defined in other
|
|
sections or within the scope of a <code>literal_prefix</code> directive
|
|
(see <a href="#Literal-Prefix-Directive">literal_prefix</a>), the following rules
|
|
determine the literal section name:
|
|
</p>
|
|
<ol>
|
|
<li> If the current section is a member of a section group, the literal
|
|
section name includes the group name as a suffix to the base
|
|
<code>.literal</code> or <code>.lit4</code> name, with a period to separate the base
|
|
name and group name. The literal section is also made a member of the
|
|
group.
|
|
|
|
</li><li> If the current section name (or <code>literal_prefix</code> value) begins with
|
|
“<code>.gnu.linkonce.<var>kind</var>.</code>”, the literal section name is formed
|
|
by replacing “<code>.<var>kind</var></code>” with the base <code>.literal</code> or
|
|
<code>.lit4</code> name. For example, for literals defined in a section named
|
|
<code>.gnu.linkonce.t.func</code>, the literal section will be
|
|
<code>.gnu.linkonce.literal.func</code> or <code>.gnu.linkonce.lit4.func</code>.
|
|
|
|
</li><li> If the current section name (or <code>literal_prefix</code> value) ends with
|
|
<code>.text</code>, the literal section name is formed by replacing that
|
|
suffix with the base <code>.literal</code> or <code>.lit4</code> name. For example,
|
|
for literals defined in a section named <code>.iram0.text</code>, the literal
|
|
section will be <code>.iram0.literal</code> or <code>.iram0.lit4</code>.
|
|
|
|
</li><li> If none of the preceding conditions apply, the literal section name is
|
|
formed by adding the base <code>.literal</code> or <code>.lit4</code> name as a
|
|
suffix to the current section name (or <code>literal_prefix</code> value).
|
|
</li></ol>
|
|
|
|
<hr>
|
|
<a name="Literal-Position-Directive"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Literal-Prefix-Directive" accesskey="n" rel="next">Literal Prefix Directive</a>, Previous: <a href="#Literal-Directive" accesskey="p" rel="previous">Literal Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="literal_005fposition"></a>
|
|
<h4 class="subsubsection">9.55.5.5 literal_position</h4>
|
|
<a name="index-literal_005fposition-directive"></a>
|
|
|
|
<p>When using ‘<samp>--text-section-literals</samp>’ to place literals inline
|
|
in the section being assembled, the <code>.literal_position</code> directive
|
|
can be used to mark a potential location for a literal pool.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .literal_position
|
|
</pre></div>
|
|
|
|
<p>The <code>.literal_position</code> directive is ignored when the
|
|
‘<samp>--text-section-literals</samp>’ option is not used or when
|
|
<code>L32R</code> instructions use the absolute addressing mode.
|
|
</p>
|
|
<p>The assembler will automatically place text section literal pools
|
|
before <code>ENTRY</code> instructions, so the <code>.literal_position</code>
|
|
directive is only needed to specify some other location for a literal
|
|
pool. You may need to add an explicit jump instruction to skip over an
|
|
inline literal pool.
|
|
</p>
|
|
<p>For example, an interrupt vector does not begin with an <code>ENTRY</code>
|
|
instruction so the assembler will be unable to automatically find a good
|
|
place to put a literal pool. Moreover, the code for the interrupt
|
|
vector must be at a specific starting address, so the literal pool
|
|
cannot come before the start of the code. The literal pool for the
|
|
vector must be explicitly positioned in the middle of the vector (before
|
|
any uses of the literals, due to the negative offsets used by
|
|
PC-relative <code>L32R</code> instructions). The <code>.literal_position</code>
|
|
directive can be used to do this. In the following code, the literal
|
|
for ‘<samp>M</samp>’ will automatically be aligned correctly and is placed after
|
|
the unconditional jump.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .global M
|
|
code_start:
|
|
</pre><pre class="smallexample"> j continue
|
|
.literal_position
|
|
.align 4
|
|
</pre><pre class="smallexample">continue:
|
|
movi a4, M
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="Literal-Prefix-Directive"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Absolute-Literals-Directive" accesskey="n" rel="next">Absolute Literals Directive</a>, Previous: <a href="#Literal-Position-Directive" accesskey="p" rel="previous">Literal Position Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="literal_005fprefix"></a>
|
|
<h4 class="subsubsection">9.55.5.6 literal_prefix</h4>
|
|
<a name="index-literal_005fprefix-directive"></a>
|
|
|
|
<p>The <code>literal_prefix</code> directive allows you to override the default
|
|
literal section names, which are derived from the names of the sections
|
|
where the literals are defined.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .begin literal_prefix [<var>name</var>]
|
|
.end literal_prefix
|
|
</pre></div>
|
|
|
|
<p>For literals defined within the delimited region, the literal section
|
|
names are derived from the <var>name</var> argument instead of the name of
|
|
the current section. The rules used to derive the literal section names
|
|
do not change. See <a href="#Literal-Directive">literal</a>. If the <var>name</var>
|
|
argument is omitted, the literal sections revert to the defaults. This
|
|
directive has no effect when using the
|
|
‘<samp>--text-section-literals</samp>’ option (see <a href="#Xtensa-Options">Command-line Options</a>).
|
|
</p>
|
|
<hr>
|
|
<a name="Absolute-Literals-Directive"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Literal-Prefix-Directive" accesskey="p" rel="previous">Literal Prefix Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="absolute_002dliterals"></a>
|
|
<h4 class="subsubsection">9.55.5.7 absolute-literals</h4>
|
|
<a name="index-absolute_002dliterals-directive"></a>
|
|
<a name="index-no_002dabsolute_002dliterals-directive"></a>
|
|
|
|
<p>The <code>absolute-literals</code> and <code>no-absolute-literals</code>
|
|
directives control the absolute vs. PC-relative mode for <code>L32R</code>
|
|
instructions. These are relevant only for Xtensa configurations that
|
|
include the absolute addressing option for <code>L32R</code> instructions.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> .begin [no-]absolute-literals
|
|
.end [no-]absolute-literals
|
|
</pre></div>
|
|
|
|
<p>These directives do not change the <code>L32R</code> mode—they only cause
|
|
the assembler to emit the appropriate kind of relocation for <code>L32R</code>
|
|
instructions and to place the literal values in the appropriate section.
|
|
To change the <code>L32R</code> mode, the program must write the
|
|
<code>LITBASE</code> special register. It is the programmer’s responsibility
|
|
to keep track of the mode and indicate to the assembler which mode is
|
|
used in each region of code.
|
|
</p>
|
|
<p>If the Xtensa configuration includes the absolute <code>L32R</code> addressing
|
|
option, the default is to assume absolute <code>L32R</code> addressing unless
|
|
the ‘<samp>--no-absolute-literals</samp>’ command-line option is specified.
|
|
Otherwise, the default is to assume PC-relative <code>L32R</code> addressing.
|
|
The <code>absolute-literals</code> directive can then be used to override
|
|
the default determined by the command-line options.
|
|
</p>
|
|
|
|
|
|
<hr>
|
|
<a name="Z80_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z8000_002dDependent" accesskey="n" rel="next">Z8000-Dependent</a>, Previous: <a href="#Xtensa_002dDependent" accesskey="p" rel="previous">Xtensa-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Z80-Dependent-Features"></a>
|
|
<h3 class="section">9.56 Z80 Dependent Features</h3>
|
|
|
|
|
|
|
|
<a name="index-Z80-support"></a>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Z80-Options" accesskey="1">Z80 Options</a>:</td><td> </td><td align="left" valign="top">Options
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z80-Syntax" accesskey="2">Z80 Syntax</a>:</td><td> </td><td align="left" valign="top">Syntax
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z80-Floating-Point" accesskey="3">Z80 Floating Point</a>:</td><td> </td><td align="left" valign="top">Floating Point
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z80-Directives" accesskey="4">Z80 Directives</a>:</td><td> </td><td align="left" valign="top">Z80 Machine Directives
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z80-Opcodes" accesskey="5">Z80 Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Z80-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z80-Syntax" accesskey="n" rel="next">Z80 Syntax</a>, Up: <a href="#Z80_002dDependent" accesskey="u" rel="up">Z80-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Command_002dline-Options-3"></a>
|
|
<h4 class="subsection">9.56.1 Command-line Options</h4>
|
|
<a name="index-Z80-options"></a>
|
|
<a name="index-options-for-Z80"></a>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<a name="index-_002dmarch_003d-command_002dline-option_002c-Z80"></a>
|
|
</dd>
|
|
<dt><code>-march=<var>CPU</var>[-<var>EXT</var>…][+<var>EXT</var>…]</code></dt>
|
|
<dd><p>This option specifies the target processor. The assembler will issue
|
|
an error message if an attempt is made to assemble an instruction which
|
|
will not execute on the target processor. The following processor names
|
|
are recognized:
|
|
<code>z80</code>,
|
|
<code>z180</code>,
|
|
<code>ez80</code>,
|
|
<code>gbz80</code>,
|
|
<code>z80n</code>,
|
|
<code>r800</code>.
|
|
In addition to the basic instruction set, the assembler can be told to
|
|
accept some extention mnemonics. For example,
|
|
<code>-march=z180+sli+infc</code> extends <var>z180</var> with <var>SLI</var> instructions and
|
|
<var>IN F,(C)</var>. The following extentions are currently supported:
|
|
<code>full</code> (all known instructions),
|
|
<code>adl</code> (ADL CPU mode by default, eZ80 only),
|
|
<code>sli</code> (instruction known as <var>SLI</var>, <var>SLL</var> or <var>SL1</var>),
|
|
<code>xyhl</code> (instructions with halves of index registers: <var>IXL</var>, <var>IXH</var>,
|
|
<var>IYL</var>, <var>IYH</var>),
|
|
<code>xdcb</code> (instructions like <var>RotOp (II+d),R</var> and <var>BitOp n,(II+d),R</var>),
|
|
<code>infc</code> (instruction <var>IN F,(C)</var> or <var>IN (C)</var>),
|
|
<code>outc0</code> (instruction <var>OUT (C),0</var>).
|
|
Note that rather than extending a basic instruction set, the extention
|
|
mnemonics starting with <code>-</code> revoke the respective functionality:
|
|
<code>-march=z80-full+xyhl</code> first removes all default extentions and adds
|
|
support for index registers halves only.
|
|
</p>
|
|
<p>If this option is not specified then <code>-march=z80+xyhl+infc</code> is assumed.
|
|
</p>
|
|
<a name="index-_002dlocal_002dprefix-command_002dline-option_002c-Z80"></a>
|
|
</dd>
|
|
<dt><code>-local-prefix=<var>prefix</var></code></dt>
|
|
<dd><p>Mark all labels with specified prefix as local. But such label can be
|
|
marked global explicitly in the code. This option do not change default
|
|
local label prefix <code>.L</code>, it is just adds new one.
|
|
</p>
|
|
<a name="index-_002dcolonless-command_002dline-option_002c-Z80"></a>
|
|
</dd>
|
|
<dt><code>-colonless</code></dt>
|
|
<dd><p>Accept colonless labels. All symbols at line begin are treated as labels.
|
|
</p>
|
|
<a name="index-_002dsdcc-command_002dline-option_002c-Z80"></a>
|
|
</dd>
|
|
<dt><code>-sdcc</code></dt>
|
|
<dd><p>Accept assembler code produced by SDCC.
|
|
</p>
|
|
<a name="index-_002dfp_002ds-command_002dline-option_002c-Z80"></a>
|
|
</dd>
|
|
<dt><code>-fp-s=<var>FORMAT</var></code></dt>
|
|
<dd><p>Single precision floating point numbers format. Default: ieee754 (32 bit).
|
|
</p>
|
|
<a name="index-_002dfp_002dd-command_002dline-option_002c-Z80"></a>
|
|
</dd>
|
|
<dt><code>-fp-d=<var>FORMAT</var></code></dt>
|
|
<dd><p>Double precision floating point numbers format. Default: ieee754 (64 bit).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Floating point numbers formats.
|
|
</p><dl compact="compact">
|
|
<dt><samp><code>ieee754</code></samp></dt>
|
|
<dd><p>Single or double precision IEEE754 compatible format.
|
|
</p>
|
|
</dd>
|
|
<dt><samp><code>half</code></samp></dt>
|
|
<dd><p>Half precision IEEE754 compatible format (16 bits).
|
|
</p>
|
|
</dd>
|
|
<dt><samp><code>single</code></samp></dt>
|
|
<dd><p>Single precision IEEE754 compatible format (32 bits).
|
|
</p>
|
|
</dd>
|
|
<dt><samp><code>double</code></samp></dt>
|
|
<dd><p>Double precision IEEE754 compatible format (64 bits).
|
|
</p>
|
|
</dd>
|
|
<dt><samp><code>zeda32</code></samp></dt>
|
|
<dd><p>32 bit floating point format from z80float library by Zeda.
|
|
</p>
|
|
</dd>
|
|
<dt><samp><code>math48</code></samp></dt>
|
|
<dd><p>48 bit floating point format from Math48 package by Anders Hejlsberg.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="index-Z80-Syntax"></a>
|
|
<hr>
|
|
<a name="Z80-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z80-Floating-Point" accesskey="n" rel="next">Z80 Floating Point</a>, Previous: <a href="#Z80-Options" accesskey="p" rel="previous">Z80 Options</a>, Up: <a href="#Z80_002dDependent" accesskey="u" rel="up">Z80-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-35"></a>
|
|
<h4 class="subsection">9.56.2 Syntax</h4>
|
|
<p>The assembler syntax closely follows the ’Z80 family CPU User Manual’ by
|
|
Zilog.
|
|
In expressions a single ‘<samp>=</samp>’ may be used as “is equal to”
|
|
comparison operator.
|
|
</p>
|
|
<p>Suffices can be used to indicate the radix of integer constants;
|
|
‘<samp>H</samp>’ or ‘<samp>h</samp>’ for hexadecimal, ‘<samp>D</samp>’ or ‘<samp>d</samp>’ for decimal,
|
|
‘<samp>Q</samp>’, ‘<samp>O</samp>’, ‘<samp>q</samp>’ or ‘<samp>o</samp>’ for octal, and ‘<samp>B</samp>’ for
|
|
binary.
|
|
</p>
|
|
<p>The suffix ‘<samp>b</samp>’ denotes a backreference to local label.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Z80_002dChars" accesskey="1">Z80-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z80_002dRegs" accesskey="2">Z80-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z80_002dCase" accesskey="3">Z80-Case</a>:</td><td> </td><td align="left" valign="top">Case Sensitivity
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z80_002dLabels" accesskey="4">Z80-Labels</a>:</td><td> </td><td align="left" valign="top">Labels
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Z80_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z80_002dRegs" accesskey="n" rel="next">Z80-Regs</a>, Up: <a href="#Z80-Syntax" accesskey="u" rel="up">Z80 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-42"></a>
|
|
<h4 class="subsubsection">9.56.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-Z80"></a>
|
|
<a name="index-Z80-line-comment-character"></a>
|
|
<p>The semicolon ‘<samp>;</samp>’ is the line comment character;
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line then the whole
|
|
line is treated as a comment, but in this case the line could also be
|
|
a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-Z80"></a>
|
|
<a name="index-statement-separator_002c-Z80"></a>
|
|
<a name="index-Z80-line-separator"></a>
|
|
<p>The Z80 assembler does not support a line separator character.
|
|
</p>
|
|
<a name="index-location-counter_002c-Z80"></a>
|
|
<a name="index-hexadecimal-prefix_002c-Z80"></a>
|
|
<a name="index-Z80-_0024"></a>
|
|
<p>The dollar sign ‘<samp>$</samp>’ can be used as a prefix for hexadecimal numbers
|
|
and as a symbol denoting the current location counter.
|
|
</p>
|
|
<a name="index-character-escapes_002c-Z80"></a>
|
|
<a name="index-Z80_002c-_005c"></a>
|
|
<p>A backslash ‘<samp>\</samp>’ is an ordinary character for the Z80 assembler.
|
|
</p>
|
|
<a name="index-character-constant_002c-Z80"></a>
|
|
<a name="index-single-quote_002c-Z80"></a>
|
|
<a name="index-Z80-_0027"></a>
|
|
<p>The single quote ‘<samp>'</samp>’ must be followed by a closing quote. If there
|
|
is one character in between, it is a character constant, otherwise it is
|
|
a string constant.
|
|
</p>
|
|
<hr>
|
|
<a name="Z80_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z80_002dCase" accesskey="n" rel="next">Z80-Case</a>, Previous: <a href="#Z80_002dChars" accesskey="p" rel="previous">Z80-Chars</a>, Up: <a href="#Z80-Syntax" accesskey="u" rel="up">Z80 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-22"></a>
|
|
<h4 class="subsubsection">9.56.2.2 Register Names</h4>
|
|
<a name="index-Z80-registers"></a>
|
|
<a name="index-register-names_002c-Z80"></a>
|
|
|
|
<p>The registers are referred to with the letters assigned to them by
|
|
Zilog. In addition <code>as</code> recognizes ‘<samp>ixl</samp>’ and
|
|
‘<samp>ixh</samp>’ as the least and most significant octet in ‘<samp>ix</samp>’, and
|
|
similarly ‘<samp>iyl</samp>’ and ‘<samp>iyh</samp>’ as parts of ‘<samp>iy</samp>’.
|
|
</p>
|
|
|
|
<hr>
|
|
<a name="Z80_002dCase"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z80_002dLabels" accesskey="n" rel="next">Z80-Labels</a>, Previous: <a href="#Z80_002dRegs" accesskey="p" rel="previous">Z80-Regs</a>, Up: <a href="#Z80-Syntax" accesskey="u" rel="up">Z80 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Case-Sensitivity"></a>
|
|
<h4 class="subsubsection">9.56.2.3 Case Sensitivity</h4>
|
|
<a name="index-Z80_002c-case-sensitivity"></a>
|
|
<a name="index-case-sensitivity_002c-Z80"></a>
|
|
|
|
<p>Upper and lower case are equivalent in register names, opcodes,
|
|
condition codes and assembler directives.
|
|
The case of letters is significant in labels and symbol names. The case
|
|
is also important to distinguish the suffix ‘<samp>b</samp>’ for a backward reference
|
|
to a local label from the suffix ‘<samp>B</samp>’ for a number in binary notation.
|
|
</p>
|
|
<hr>
|
|
<a name="Z80_002dLabels"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Z80_002dCase" accesskey="p" rel="previous">Z80-Case</a>, Up: <a href="#Z80-Syntax" accesskey="u" rel="up">Z80 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Labels-2"></a>
|
|
<h4 class="subsubsection">9.56.2.4 Labels</h4>
|
|
|
|
<a name="index-labels_002c-Z80"></a>
|
|
<a name="index-Z80-labels"></a>
|
|
<p>Labels started by <code>.L</code> acts as local labels. You may specify custom local
|
|
label prefix by <code>-local-prefix</code> command-line option.
|
|
Dollar, forward and backward local labels are supported. By default, all labels
|
|
are followed by colon.
|
|
Legacy code with colonless labels can be built with <code>-colonless</code>
|
|
command-line option specified. In this case all tokens at line begin are treated
|
|
as labels.
|
|
</p>
|
|
<hr>
|
|
<a name="Z80-Floating-Point"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z80-Directives" accesskey="n" rel="next">Z80 Directives</a>, Previous: <a href="#Z80-Syntax" accesskey="p" rel="previous">Z80 Syntax</a>, Up: <a href="#Z80_002dDependent" accesskey="u" rel="up">Z80-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Floating-Point-19"></a>
|
|
<h4 class="subsection">9.56.3 Floating Point</h4>
|
|
<a name="index-floating-point_002c-Z80"></a>
|
|
<a name="index-Z80-floating-point"></a>
|
|
<p>Floating-point numbers of following types are supported:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><samp><code>ieee754</code></samp></dt>
|
|
<dd><p>Supported half, single and double precision IEEE754 compatible numbers.
|
|
</p>
|
|
</dd>
|
|
<dt><samp><code>zeda32</code></samp></dt>
|
|
<dd><p>32 bit floating point numbers from z80float library by Zeda.
|
|
</p>
|
|
</dd>
|
|
<dt><samp><code>math48</code></samp></dt>
|
|
<dd><p>48 bit floating point numbers from Math48 package by Anders Hejlsberg.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Z80-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z80-Opcodes" accesskey="n" rel="next">Z80 Opcodes</a>, Previous: <a href="#Z80-Floating-Point" accesskey="p" rel="previous">Z80 Floating Point</a>, Up: <a href="#Z80_002dDependent" accesskey="u" rel="up">Z80-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Z80-Assembler-Directives"></a>
|
|
<h4 class="subsection">9.56.4 Z80 Assembler Directives</h4>
|
|
<a name="index-Z80_002donly-directives"></a>
|
|
|
|
<p><code>as</code> for the Z80 supports some additional directives for
|
|
compatibility with other assemblers.
|
|
</p>
|
|
<p>These are the additional directives in <code>as</code> for the Z80:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code><code>.assume ADL = <var>expression</var></code></code></dt>
|
|
<dd><a name="index-_002eassume-directive_002c-Z80"></a>
|
|
<p>Set ADL status for eZ80. Non-zero value enable compilation in ADL mode else
|
|
used Z80 mode. ADL and Z80 mode produces incompatible object code. Mixing
|
|
both of them within one binary may lead problems with disassembler.
|
|
</p>
|
|
</dd>
|
|
<dt><code><code>db <var>expression</var>|<var>string</var>[,<var>expression</var>|<var>string</var>...]</code></code></dt>
|
|
<dd><a name="index-db-directive_002c-Z80"></a>
|
|
</dd>
|
|
<dt><code><code>defb <var>expression</var>|<var>string</var>[,<var>expression</var>|<var>string</var>...]</code></code></dt>
|
|
<dd><a name="index-defb-directive_002c-Z80"></a>
|
|
</dd>
|
|
<dt><code><code>defm <var>string</var>[,<var>string</var>...]</code></code></dt>
|
|
<dd><a name="index-defm-directive_002c-Z80"></a>
|
|
<p>For each <var>string</var> the characters are copied to the object file, for
|
|
each other <var>expression</var> the value is stored in one byte.
|
|
A warning is issued in case of an overflow.
|
|
Backslash symbol in the strings is generic symbol, it cannot be used as
|
|
escape character. See <a href="#Ascii"><code>.ascii</code></a>.
|
|
</p>
|
|
</dd>
|
|
<dt><code><code>dw <var>expression</var>[,<var>expression</var>...]</code></code></dt>
|
|
<dd><a name="index-dw-directive_002c-Z80"></a>
|
|
</dd>
|
|
<dt><code><code>defw <var>expression</var>[,<var>expression</var>...]</code></code></dt>
|
|
<dd><a name="index-defw-directive_002c-Z80"></a>
|
|
<p>For each <var>expression</var> the value is stored in two bytes, ignoring
|
|
overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code><code>d24 <var>expression</var>[,<var>expression</var>...]</code></code></dt>
|
|
<dd><a name="index-d24-directive_002c-Z80"></a>
|
|
</dd>
|
|
<dt><code><code>def24 <var>expression</var>[,<var>expression</var>...]</code></code></dt>
|
|
<dd><a name="index-def24-directive_002c-Z80"></a>
|
|
<p>For each <var>expression</var> the value is stored in three bytes, ignoring
|
|
overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code><code>d32 <var>expression</var>[,<var>expression</var>...]</code></code></dt>
|
|
<dd><a name="index-d32-directive_002c-Z80"></a>
|
|
</dd>
|
|
<dt><code><code>def32 <var>expression</var>[,<var>expression</var>...]</code></code></dt>
|
|
<dd><a name="index-def32-directive_002c-Z80"></a>
|
|
<p>For each <var>expression</var> the value is stored in four bytes, ignoring
|
|
overflow.
|
|
</p>
|
|
</dd>
|
|
<dt><code><code>ds <var>count</var>[, <var>value</var>]</code></code></dt>
|
|
<dd><a name="index-ds-directive_002c-Z80"></a>
|
|
</dd>
|
|
<dt><code><code>defs <var>count</var>[, <var>value</var>]</code></code></dt>
|
|
<dd><a name="index-defs-directive_002c-Z80"></a>
|
|
<p>Fill <var>count</var> bytes in the object file with <var>value</var>, if
|
|
<var>value</var> is omitted it defaults to zero.
|
|
</p>
|
|
</dd>
|
|
<dt><code><code><var>symbol</var> defl <var>expression</var></code></code></dt>
|
|
<dd><a name="index-defl-directive_002c-Z80"></a>
|
|
<p>The <code>defl</code> directive is like <code>.set</code> but with different
|
|
syntax. See <a href="#Set"><code>.set</code></a>.
|
|
It set the value of <var>symbol</var> to <var>expression</var>. Symbols defined
|
|
with <code>defl</code> are not protected from redefinition.
|
|
</p>
|
|
</dd>
|
|
<dt><code><code><var>symbol</var> equ <var>expression</var></code></code></dt>
|
|
<dd><a name="index-equ-directive_002c-Z80"></a>
|
|
<p>The <code>equ</code> directive is like <code>.equiv</code> but with different
|
|
syntax. See <a href="#Equiv"><code>.equiv</code></a>.
|
|
It set the value of <var>symbol</var> to <var>expression</var>. It is an error
|
|
if <var>symbol</var> is already defined. Symbols defined with <code>equ</code>
|
|
are not protected from redefinition.
|
|
</p>
|
|
</dd>
|
|
<dt><code><code>psect <var>name</var></code></code></dt>
|
|
<dd><a name="index-psect-directive_002c-Z80"></a>
|
|
<p>A synonym for <code>.section</code>, no second argument should be given.
|
|
See <a href="#Section"><code>.section</code></a>.
|
|
</p>
|
|
</dd>
|
|
<dt><code><code>xdef <var>symbol</var></code></code></dt>
|
|
<dd><a name="index-xdef-directive_002c-Z80"></a>
|
|
<p>A synonym for <code>.global</code>, make <var>symbol</var> is visible to linker.
|
|
See <a href="#Global"><code>.global</code></a>.
|
|
</p>
|
|
</dd>
|
|
<dt><code><code>xref <var>name</var></code></code></dt>
|
|
<dd><a name="index-xref-directive_002c-Z80"></a>
|
|
<p>A synonym for <code>.extern</code> (<a href="#Extern"><code>.extern</code></a>).
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Z80-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Z80-Directives" accesskey="p" rel="previous">Z80 Directives</a>, Up: <a href="#Z80_002dDependent" accesskey="u" rel="up">Z80-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-22"></a>
|
|
<h4 class="subsection">9.56.5 Opcodes</h4>
|
|
<p>In line with common practice, Z80 mnemonics are used for the Z80,
|
|
Z80N, Z180, eZ80, Ascii R800 and the GameBoy Z80.
|
|
</p>
|
|
<p>In many instructions it is possible to use one of the half index
|
|
registers (‘<samp>ixl</samp>’,‘<samp>ixh</samp>’,‘<samp>iyl</samp>’,‘<samp>iyh</samp>’) in stead of an
|
|
8-bit general purpose register. This yields instructions that are
|
|
documented on the eZ80 and the R800, undocumented on the Z80 and
|
|
unsupported on the Z180.
|
|
Similarly <code>in f,(c)</code> is documented on the R800, undocumented on
|
|
the Z80 and unsupported on the Z180 and the eZ80.
|
|
</p>
|
|
<p>The assembler also supports the following undocumented Z80-instructions,
|
|
that have not been adopted in any other instruction set:
|
|
</p><dl compact="compact">
|
|
<dt><code>out (c),0</code></dt>
|
|
<dd><p>Sends zero to the port pointed to by register <code>C</code>.
|
|
</p>
|
|
</dd>
|
|
<dt><code>sli <var>m</var></code></dt>
|
|
<dd><p>Equivalent to <code><var>m</var> = (<var>m</var><<1)+1</code>, the operand <var>m</var> can
|
|
be any operand that is valid for ‘<samp>sla</samp>’. One can use ‘<samp>sll</samp>’ as a
|
|
synonym for ‘<samp>sli</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code><var>op</var> (ix+<var>d</var>), <var>r</var></code></dt>
|
|
<dd><p>This is equivalent to
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example">ld <var>r</var>, (ix+<var>d</var>)
|
|
<var>op</var> <var>r</var>
|
|
ld (ix+<var>d</var>), <var>r</var>
|
|
</pre></div>
|
|
|
|
<p>The operation ‘<samp><var>op</var></samp>’ may be any of ‘<samp>res <var>b</var>,</samp>’,
|
|
‘<samp>set <var>b</var>,</samp>’, ‘<samp>rl</samp>’, ‘<samp>rlc</samp>’, ‘<samp>rr</samp>’, ‘<samp>rrc</samp>’,
|
|
‘<samp>sla</samp>’, ‘<samp>sli</samp>’, ‘<samp>sra</samp>’ and ‘<samp>srl</samp>’, and the register
|
|
‘<samp><var>r</var></samp>’ may be any of ‘<samp>a</samp>’, ‘<samp>b</samp>’, ‘<samp>c</samp>’, ‘<samp>d</samp>’,
|
|
‘<samp>e</samp>’, ‘<samp>h</samp>’ and ‘<samp>l</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt><code><var>op</var> (iy+<var>d</var>), <var>r</var></code></dt>
|
|
<dd><p>As above, but with ‘<samp>iy</samp>’ instead of ‘<samp>ix</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The web site at <a href="http://www.z80.info">http://www.z80.info</a> is a good starting place to
|
|
find more information on programming the Z80.
|
|
</p>
|
|
<p>You may enable or disable any of these instructions for any target CPU
|
|
even this instruction is not supported by any real CPU of this type.
|
|
Useful for custom CPU cores.
|
|
</p>
|
|
<hr>
|
|
<a name="Z8000_002dDependent"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Z80_002dDependent" accesskey="p" rel="previous">Z80-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Z8000-Dependent-Features"></a>
|
|
<h3 class="section">9.57 Z8000 Dependent Features</h3>
|
|
|
|
<a name="index-Z8000-support"></a>
|
|
<p>The Z8000 as supports both members of the Z8000 family: the
|
|
unsegmented Z8002, with 16 bit addresses, and the segmented Z8001 with
|
|
24 bit addresses.
|
|
</p>
|
|
<p>When the assembler is in unsegmented mode (specified with the
|
|
<code>unsegm</code> directive), an address takes up one word (16 bit)
|
|
sized register. When the assembler is in segmented mode (specified with
|
|
the <code>segm</code> directive), a 24-bit address takes up a long (32 bit)
|
|
register. See <a href="#Z8000-Directives">Assembler Directives for the Z8000</a>,
|
|
for a list of other Z8000 specific assembler directives.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Z8000-Options" accesskey="1">Z8000 Options</a>:</td><td> </td><td align="left" valign="top">Command-line options for the Z8000
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z8000-Syntax" accesskey="2">Z8000 Syntax</a>:</td><td> </td><td align="left" valign="top">Assembler syntax for the Z8000
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z8000-Directives" accesskey="3">Z8000 Directives</a>:</td><td> </td><td align="left" valign="top">Special directives for the Z8000
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z8000-Opcodes" accesskey="4">Z8000 Opcodes</a>:</td><td> </td><td align="left" valign="top">Opcodes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Z8000-Options"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z8000-Syntax" accesskey="n" rel="next">Z8000 Syntax</a>, Up: <a href="#Z8000_002dDependent" accesskey="u" rel="up">Z8000-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Options-30"></a>
|
|
<h4 class="subsection">9.57.1 Options</h4>
|
|
|
|
<a name="index-Z8000-options"></a>
|
|
<a name="index-options_002c-Z8000"></a>
|
|
<dl compact="compact">
|
|
<dd><a name="index-_002dz8001-command_002dline-option_002c-Z8000"></a>
|
|
</dd>
|
|
<dt><samp>-z8001</samp></dt>
|
|
<dd><p>Generate segmented code by default.
|
|
</p>
|
|
<a name="index-_002dz8002-command_002dline-option_002c-Z8000"></a>
|
|
</dd>
|
|
<dt><samp>-z8002</samp></dt>
|
|
<dd><p>Generate unsegmented code by default.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Z8000-Syntax"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z8000-Directives" accesskey="n" rel="next">Z8000 Directives</a>, Previous: <a href="#Z8000-Options" accesskey="p" rel="previous">Z8000 Options</a>, Up: <a href="#Z8000_002dDependent" accesskey="u" rel="up">Z8000-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Syntax-36"></a>
|
|
<h4 class="subsection">9.57.2 Syntax</h4>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Z8000_002dChars" accesskey="1">Z8000-Chars</a>:</td><td> </td><td align="left" valign="top">Special Characters
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z8000_002dRegs" accesskey="2">Z8000-Regs</a>:</td><td> </td><td align="left" valign="top">Register Names
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Z8000_002dAddressing" accesskey="3">Z8000-Addressing</a>:</td><td> </td><td align="left" valign="top">Addressing Modes
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Z8000_002dChars"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z8000_002dRegs" accesskey="n" rel="next">Z8000-Regs</a>, Up: <a href="#Z8000-Syntax" accesskey="u" rel="up">Z8000 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Special-Characters-43"></a>
|
|
<h4 class="subsubsection">9.57.2.1 Special Characters</h4>
|
|
|
|
<a name="index-line-comment-character_002c-Z8000"></a>
|
|
<a name="index-Z8000-line-comment-character"></a>
|
|
<p>‘<samp>!</samp>’ is the line comment character.
|
|
</p>
|
|
<p>If a ‘<samp>#</samp>’ appears as the first character of a line then the whole
|
|
line is treated as a comment, but in this case the line could also be
|
|
a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
|
|
control command (see <a href="#Preprocessing">Preprocessing</a>).
|
|
</p>
|
|
<a name="index-line-separator_002c-Z8000"></a>
|
|
<a name="index-statement-separator_002c-Z8000"></a>
|
|
<a name="index-Z8000-line-separator"></a>
|
|
<p>You can use ‘<samp>;</samp>’ instead of a newline to separate statements.
|
|
</p>
|
|
<hr>
|
|
<a name="Z8000_002dRegs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z8000_002dAddressing" accesskey="n" rel="next">Z8000-Addressing</a>, Previous: <a href="#Z8000_002dChars" accesskey="p" rel="previous">Z8000-Chars</a>, Up: <a href="#Z8000-Syntax" accesskey="u" rel="up">Z8000 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Register-Names-23"></a>
|
|
<h4 class="subsubsection">9.57.2.2 Register Names</h4>
|
|
|
|
<a name="index-Z8000-registers"></a>
|
|
<a name="index-registers_002c-Z8000"></a>
|
|
<p>The Z8000 has sixteen 16 bit registers, numbered 0 to 15. You can refer
|
|
to different sized groups of registers by register number, with the
|
|
prefix ‘<samp>r</samp>’ for 16 bit registers, ‘<samp>rr</samp>’ for 32 bit registers and
|
|
‘<samp>rq</samp>’ for 64 bit registers. You can also refer to the contents of
|
|
the first eight (of the sixteen 16 bit registers) by bytes. They are
|
|
named ‘<samp>rl<var>n</var></samp>’ and ‘<samp>rh<var>n</var></samp>’.
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"><em>byte registers</em>
|
|
</pre><pre class="smallexample">rl0 rh0 rl1 rh1 rl2 rh2 rl3 rh3
|
|
rl4 rh4 rl5 rh5 rl6 rh6 rl7 rh7
|
|
|
|
</pre><pre class="smallexample"><em>word registers</em>
|
|
</pre><pre class="smallexample">r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
|
|
|
|
</pre><pre class="smallexample"><em>long word registers</em>
|
|
</pre><pre class="smallexample">rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14
|
|
|
|
</pre><pre class="smallexample"><em>quad word registers</em>
|
|
</pre><pre class="smallexample">rq0 rq4 rq8 rq12
|
|
</pre></div>
|
|
|
|
<hr>
|
|
<a name="Z8000_002dAddressing"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Z8000_002dRegs" accesskey="p" rel="previous">Z8000-Regs</a>, Up: <a href="#Z8000-Syntax" accesskey="u" rel="up">Z8000 Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Addressing-Modes-5"></a>
|
|
<h4 class="subsubsection">9.57.2.3 Addressing Modes</h4>
|
|
|
|
<a name="index-addressing-modes_002c-Z8000"></a>
|
|
<a name="index-Z800-addressing-modes"></a>
|
|
<p>as understands the following addressing modes for the Z8000:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt><code>rl<var>n</var></code></dt>
|
|
<dt><code>rh<var>n</var></code></dt>
|
|
<dt><code>r<var>n</var></code></dt>
|
|
<dt><code>rr<var>n</var></code></dt>
|
|
<dt><code>rq<var>n</var></code></dt>
|
|
<dd><p>Register direct: 8bit, 16bit, 32bit, and 64bit registers.
|
|
</p>
|
|
</dd>
|
|
<dt><code>@r<var>n</var></code></dt>
|
|
<dt><code>@rr<var>n</var></code></dt>
|
|
<dd><p>Indirect register: @rr<var>n</var> in segmented mode, @r<var>n</var> in unsegmented
|
|
mode.
|
|
</p>
|
|
</dd>
|
|
<dt><code><var>addr</var></code></dt>
|
|
<dd><p>Direct: the 16 bit or 24 bit address (depending on whether the assembler
|
|
is in segmented or unsegmented mode) of the operand is in the instruction.
|
|
</p>
|
|
</dd>
|
|
<dt><code>address(r<var>n</var>)</code></dt>
|
|
<dd><p>Indexed: the 16 or 24 bit address is added to the 16 bit register to produce
|
|
the final address in memory of the operand.
|
|
</p>
|
|
</dd>
|
|
<dt><code>r<var>n</var>(#<var>imm</var>)</code></dt>
|
|
<dt><code>rr<var>n</var>(#<var>imm</var>)</code></dt>
|
|
<dd><p>Base Address: the 16 or 24 bit register is added to the 16 bit sign
|
|
extended immediate displacement to produce the final address in memory
|
|
of the operand.
|
|
</p>
|
|
</dd>
|
|
<dt><code>r<var>n</var>(r<var>m</var>)</code></dt>
|
|
<dt><code>rr<var>n</var>(r<var>m</var>)</code></dt>
|
|
<dd><p>Base Index: the 16 or 24 bit register r<var>n</var> or rr<var>n</var> is added to
|
|
the sign extended 16 bit index register r<var>m</var> to produce the final
|
|
address in memory of the operand.
|
|
</p>
|
|
</dd>
|
|
<dt><code>#<var>xx</var></code></dt>
|
|
<dd><p>Immediate data <var>xx</var>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Z8000-Directives"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Z8000-Opcodes" accesskey="n" rel="next">Z8000 Opcodes</a>, Previous: <a href="#Z8000-Syntax" accesskey="p" rel="previous">Z8000 Syntax</a>, Up: <a href="#Z8000_002dDependent" accesskey="u" rel="up">Z8000-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Assembler-Directives-for-the-Z8000"></a>
|
|
<h4 class="subsection">9.57.3 Assembler Directives for the Z8000</h4>
|
|
|
|
<a name="index-Z8000-directives"></a>
|
|
<a name="index-directives_002c-Z8000"></a>
|
|
<p>The Z8000 port of as includes additional assembler directives,
|
|
for compatibility with other Z8000 assemblers. These do not begin with
|
|
‘<samp>.</samp>’ (unlike the ordinary as directives).
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd><a name="index-segm"></a>
|
|
</dd>
|
|
<dt><code>segm</code></dt>
|
|
<dd><a name="index-_002ez8001"></a>
|
|
</dd>
|
|
<dt><code>.z8001</code></dt>
|
|
<dd><p>Generate code for the segmented Z8001.
|
|
</p>
|
|
<a name="index-unsegm"></a>
|
|
</dd>
|
|
<dt><code>unsegm</code></dt>
|
|
<dd><a name="index-_002ez8002"></a>
|
|
</dd>
|
|
<dt><code>.z8002</code></dt>
|
|
<dd><p>Generate code for the unsegmented Z8002.
|
|
</p>
|
|
<a name="index-name"></a>
|
|
</dd>
|
|
<dt><code>name</code></dt>
|
|
<dd><p>Synonym for <code>.file</code>
|
|
</p>
|
|
<a name="index-global"></a>
|
|
</dd>
|
|
<dt><code>global</code></dt>
|
|
<dd><p>Synonym for <code>.global</code>
|
|
</p>
|
|
<a name="index-wval"></a>
|
|
</dd>
|
|
<dt><code>wval</code></dt>
|
|
<dd><p>Synonym for <code>.word</code>
|
|
</p>
|
|
<a name="index-lval"></a>
|
|
</dd>
|
|
<dt><code>lval</code></dt>
|
|
<dd><p>Synonym for <code>.long</code>
|
|
</p>
|
|
<a name="index-bval"></a>
|
|
</dd>
|
|
<dt><code>bval</code></dt>
|
|
<dd><p>Synonym for <code>.byte</code>
|
|
</p>
|
|
<a name="index-sval"></a>
|
|
</dd>
|
|
<dt><code>sval</code></dt>
|
|
<dd><p>Assemble a string. <code>sval</code> expects one string literal, delimited by
|
|
single quotes. It assembles each byte of the string into consecutive
|
|
addresses. You can use the escape sequence ‘<samp>%<var>xx</var></samp>’ (where
|
|
<var>xx</var> represents a two-digit hexadecimal number) to represent the
|
|
character whose <small>ASCII</small> value is <var>xx</var>. Use this feature to
|
|
describe single quote and other characters that may not appear in string
|
|
literals as themselves. For example, the C statement ‘<samp>char *a = "he said \"it's 50% off\"";</samp>’<!-- /@w --> is represented in Z8000 assembly language
|
|
(shown with the assembler output in hex at the left) as
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample">68652073 sval 'he said %22it%27s 50%25 off%22%00'
|
|
61696420
|
|
22697427
|
|
73203530
|
|
25206F66
|
|
662200
|
|
</pre></div>
|
|
|
|
<a name="index-rsect"></a>
|
|
</dd>
|
|
<dt><code>rsect</code></dt>
|
|
<dd><p>synonym for <code>.section</code>
|
|
</p>
|
|
<a name="index-block"></a>
|
|
</dd>
|
|
<dt><code>block</code></dt>
|
|
<dd><p>synonym for <code>.space</code>
|
|
</p>
|
|
<a name="index-even"></a>
|
|
</dd>
|
|
<dt><code>even</code></dt>
|
|
<dd><p>special case of <code>.align</code>; aligns output to even byte boundary.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<hr>
|
|
<a name="Z8000-Opcodes"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Z8000-Directives" accesskey="p" rel="previous">Z8000 Directives</a>, Up: <a href="#Z8000_002dDependent" accesskey="u" rel="up">Z8000-Dependent</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Opcodes-23"></a>
|
|
<h4 class="subsection">9.57.4 Opcodes</h4>
|
|
|
|
<a name="index-Z8000-opcode-summary"></a>
|
|
<a name="index-opcode-summary_002c-Z8000"></a>
|
|
<a name="index-mnemonics_002c-Z8000"></a>
|
|
<a name="index-instruction-summary_002c-Z8000"></a>
|
|
<p>For detailed information on the Z8000 machine instruction set, see
|
|
<cite>Z8000 Technical Manual</cite>.
|
|
</p>
|
|
|
|
|
|
|
|
<hr>
|
|
<a name="Reporting-Bugs"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Acknowledgements" accesskey="n" rel="next">Acknowledgements</a>, Previous: <a href="#Machine-Dependencies" accesskey="p" rel="previous">Machine Dependencies</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Reporting-Bugs-1"></a>
|
|
<h2 class="chapter">10 Reporting Bugs</h2>
|
|
<a name="index-bugs-in-assembler"></a>
|
|
<a name="index-reporting-bugs-in-assembler"></a>
|
|
|
|
<p>Your bug reports play an essential role in making <code>as</code> reliable.
|
|
</p>
|
|
<p>Reporting a bug may help you by bringing a solution to your problem, or it may
|
|
not. But in any case the principal function of a bug report is to help the
|
|
entire community by making the next version of <code>as</code> work better.
|
|
Bug reports are your contribution to the maintenance of <code>as</code>.
|
|
</p>
|
|
<p>In order for a bug report to serve its purpose, you must include the
|
|
information that enables us to fix the bug.
|
|
</p>
|
|
<table class="menu" border="0" cellspacing="0">
|
|
<tr><td align="left" valign="top">• <a href="#Bug-Criteria" accesskey="1">Bug Criteria</a>:</td><td> </td><td align="left" valign="top">Have you found a bug?
|
|
</td></tr>
|
|
<tr><td align="left" valign="top">• <a href="#Bug-Reporting" accesskey="2">Bug Reporting</a>:</td><td> </td><td align="left" valign="top">How to report bugs
|
|
</td></tr>
|
|
</table>
|
|
|
|
<hr>
|
|
<a name="Bug-Criteria"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#Bug-Reporting" accesskey="n" rel="next">Bug Reporting</a>, Up: <a href="#Reporting-Bugs" accesskey="u" rel="up">Reporting Bugs</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Have-You-Found-a-Bug_003f"></a>
|
|
<h3 class="section">10.1 Have You Found a Bug?</h3>
|
|
<a name="index-bug-criteria"></a>
|
|
|
|
<p>If you are not sure whether you have found a bug, here are some guidelines:
|
|
</p>
|
|
<ul>
|
|
<li> <a name="index-fatal-signal"></a>
|
|
<a name="index-assembler-crash"></a>
|
|
<a name="index-crash-of-assembler"></a>
|
|
If the assembler gets a fatal signal, for any input whatever, that is a
|
|
<code>as</code> bug. Reliable assemblers never crash.
|
|
|
|
</li><li> <a name="index-error-on-valid-input"></a>
|
|
If <code>as</code> produces an error message for valid input, that is a bug.
|
|
|
|
</li><li> <a name="index-invalid-input"></a>
|
|
If <code>as</code> does not produce an error message for invalid input, that
|
|
is a bug. However, you should note that your idea of “invalid input” might
|
|
be our idea of “an extension” or “support for traditional practice”.
|
|
|
|
</li><li> If you are an experienced user of assemblers, your suggestions for improvement
|
|
of <code>as</code> are welcome in any case.
|
|
</li></ul>
|
|
|
|
<hr>
|
|
<a name="Bug-Reporting"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#Bug-Criteria" accesskey="p" rel="previous">Bug Criteria</a>, Up: <a href="#Reporting-Bugs" accesskey="u" rel="up">Reporting Bugs</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="How-to-Report-Bugs"></a>
|
|
<h3 class="section">10.2 How to Report Bugs</h3>
|
|
<a name="index-bug-reports"></a>
|
|
<a name="index-assembler-bugs_002c-reporting"></a>
|
|
|
|
<p>A number of companies and individuals offer support for <small>GNU</small> products. If
|
|
you obtained <code>as</code> from a support organization, we recommend you
|
|
contact that organization first.
|
|
</p>
|
|
<p>You can find contact information for many support companies and
|
|
individuals in the file <samp>etc/SERVICE</samp> in the <small>GNU</small> Emacs
|
|
distribution.
|
|
</p>
|
|
<p>In any event, we also recommend that you send bug reports for <code>as</code>
|
|
to <a href="https://bugs.linaro.org/">https://bugs.linaro.org/</a>.
|
|
</p>
|
|
<p>The fundamental principle of reporting bugs usefully is this:
|
|
<strong>report all the facts</strong>. If you are not sure whether to state a
|
|
fact or leave it out, state it!
|
|
</p>
|
|
<p>Often people omit facts because they think they know what causes the problem
|
|
and assume that some details do not matter. Thus, you might assume that the
|
|
name of a symbol you use in an example does not matter. Well, probably it does
|
|
not, but one cannot be sure. Perhaps the bug is a stray memory reference which
|
|
happens to fetch from the location where that name is stored in memory;
|
|
perhaps, if the name were different, the contents of that location would fool
|
|
the assembler into doing the right thing despite the bug. Play it safe and
|
|
give a specific, complete example. That is the easiest thing for you to do,
|
|
and the most helpful.
|
|
</p>
|
|
<p>Keep in mind that the purpose of a bug report is to enable us to fix the bug if
|
|
it is new to us. Therefore, always write your bug reports on the assumption
|
|
that the bug has not been reported previously.
|
|
</p>
|
|
<p>Sometimes people give a few sketchy facts and ask, “Does this ring a
|
|
bell?” This cannot help us fix a bug, so it is basically useless. We
|
|
respond by asking for enough details to enable us to investigate.
|
|
You might as well expedite matters by sending them to begin with.
|
|
</p>
|
|
<p>To enable us to fix the bug, you should include all these things:
|
|
</p>
|
|
<ul>
|
|
<li> The version of <code>as</code>. <code>as</code> announces it if you start
|
|
it with the ‘<samp>--version</samp>’ argument.
|
|
|
|
<p>Without this, we will not know whether there is any point in looking for
|
|
the bug in the current version of <code>as</code>.
|
|
</p>
|
|
</li><li> Any patches you may have applied to the <code>as</code> source.
|
|
|
|
</li><li> The type of machine you are using, and the operating system name and
|
|
version number.
|
|
|
|
</li><li> What compiler (and its version) was used to compile <code>as</code>—e.g.
|
|
“<code>gcc-2.7</code>”.
|
|
|
|
</li><li> The command arguments you gave the assembler to assemble your example and
|
|
observe the bug. To guarantee you will not omit something important, list them
|
|
all. A copy of the Makefile (or the output from make) is sufficient.
|
|
|
|
<p>If we were to try to guess the arguments, we would probably guess wrong
|
|
and then we might not encounter the bug.
|
|
</p>
|
|
</li><li> A complete input file that will reproduce the bug. If the bug is observed when
|
|
the assembler is invoked via a compiler, send the assembler source, not the
|
|
high level language source. Most compilers will produce the assembler source
|
|
when run with the ‘<samp>-S</samp>’ option. If you are using <code>gcc</code>, use
|
|
the options ‘<samp>-v --save-temps</samp>’; this will save the assembler source in a
|
|
file with an extension of <samp>.s</samp>, and also show you exactly how
|
|
<code>as</code> is being run.
|
|
|
|
</li><li> A description of what behavior you observe that you believe is
|
|
incorrect. For example, “It gets a fatal signal.”
|
|
|
|
<p>Of course, if the bug is that <code>as</code> gets a fatal signal, then we
|
|
will certainly notice it. But if the bug is incorrect output, we might not
|
|
notice unless it is glaringly wrong. You might as well not give us a chance to
|
|
make a mistake.
|
|
</p>
|
|
<p>Even if the problem you experience is a fatal signal, you should still say so
|
|
explicitly. Suppose something strange is going on, such as, your copy of
|
|
<code>as</code> is out of sync, or you have encountered a bug in the C
|
|
library on your system. (This has happened!) Your copy might crash and ours
|
|
would not. If you told us to expect a crash, then when ours fails to crash, we
|
|
would know that the bug was not happening for us. If you had not told us to
|
|
expect a crash, then we would not be able to draw any conclusion from our
|
|
observations.
|
|
</p>
|
|
</li><li> If you wish to suggest changes to the <code>as</code> source, send us context
|
|
diffs, as generated by <code>diff</code> with the ‘<samp>-u</samp>’, ‘<samp>-c</samp>’, or ‘<samp>-p</samp>’
|
|
option. Always send diffs from the old file to the new file. If you even
|
|
discuss something in the <code>as</code> source, refer to it by context, not
|
|
by line number.
|
|
|
|
<p>The line numbers in our development sources will not match those in your
|
|
sources. Your line numbers would convey no useful information to us.
|
|
</p></li></ul>
|
|
|
|
<p>Here are some things that are not necessary:
|
|
</p>
|
|
<ul>
|
|
<li> A description of the envelope of the bug.
|
|
|
|
<p>Often people who encounter a bug spend a lot of time investigating
|
|
which changes to the input file will make the bug go away and which
|
|
changes will not affect it.
|
|
</p>
|
|
<p>This is often time consuming and not very useful, because the way we
|
|
will find the bug is by running a single example under the debugger
|
|
with breakpoints, not by pure deduction from a series of examples.
|
|
We recommend that you save your time for something else.
|
|
</p>
|
|
<p>Of course, if you can find a simpler example to report <em>instead</em>
|
|
of the original one, that is a convenience for us. Errors in the
|
|
output will be easier to spot, running under the debugger will take
|
|
less time, and so on.
|
|
</p>
|
|
<p>However, simplification is not vital; if you do not want to do this,
|
|
report the bug anyway and send us the entire test case you used.
|
|
</p>
|
|
</li><li> A patch for the bug.
|
|
|
|
<p>A patch for the bug does help us if it is a good one. But do not omit
|
|
the necessary information, such as the test case, on the assumption that
|
|
a patch is all we need. We might see problems with your patch and decide
|
|
to fix the problem another way, or we might not understand it at all.
|
|
</p>
|
|
<p>Sometimes with a program as complicated as <code>as</code> it is very hard to
|
|
construct an example that will make the program follow a certain path through
|
|
the code. If you do not send us the example, we will not be able to construct
|
|
one, so we will not be able to verify that the bug is fixed.
|
|
</p>
|
|
<p>And if we cannot understand what bug you are trying to fix, or why your
|
|
patch should be an improvement, we will not install it. A test case will
|
|
help us to understand.
|
|
</p>
|
|
</li><li> A guess about what the bug is or what it depends on.
|
|
|
|
<p>Such guesses are usually wrong. Even we cannot guess right about such
|
|
things without first using the debugger to find the facts.
|
|
</p></li></ul>
|
|
|
|
<hr>
|
|
<a name="Acknowledgements"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#GNU-Free-Documentation-License" accesskey="n" rel="next">GNU Free Documentation License</a>, Previous: <a href="#Reporting-Bugs" accesskey="p" rel="previous">Reporting Bugs</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="Acknowledgements-1"></a>
|
|
<h2 class="chapter">11 Acknowledgements</h2>
|
|
|
|
<p>If you have contributed to GAS and your name isn’t listed here,
|
|
it is not meant as a slight. We just don’t know about it. Send mail to the
|
|
maintainer, and we’ll correct the situation. Currently
|
|
the maintainer is Nick Clifton (email address <code>nickc@redhat.com</code>).
|
|
</p>
|
|
<p>Dean Elsner wrote the original <small>GNU</small> assembler for the VAX.<a name="DOCF4" href="#FOOT4"><sup>4</sup></a>
|
|
</p>
|
|
<p>Jay Fenlason maintained GAS for a while, adding support for GDB-specific debug
|
|
information and the 68k series machines, most of the preprocessing pass, and
|
|
extensive changes in <samp>messages.c</samp>, <samp>input-file.c</samp>, <samp>write.c</samp>.
|
|
</p>
|
|
<p>K. Richard Pixley maintained GAS for a while, adding various enhancements and
|
|
many bug fixes, including merging support for several processors, breaking GAS
|
|
up to handle multiple object file format back ends (including heavy rewrite,
|
|
testing, an integration of the coff and b.out back ends), adding configuration
|
|
including heavy testing and verification of cross assemblers and file splits
|
|
and renaming, converted GAS to strictly ANSI C including full prototypes, added
|
|
support for m680[34]0 and cpu32, did considerable work on i960 including a COFF
|
|
port (including considerable amounts of reverse engineering), a SPARC opcode
|
|
file rewrite, DECstation, rs6000, and hp300hpux host ports, updated “know”
|
|
assertions and made them work, much other reorganization, cleanup, and lint.
|
|
</p>
|
|
<p>Ken Raeburn wrote the high-level BFD interface code to replace most of the code
|
|
in format-specific I/O modules.
|
|
</p>
|
|
<p>The original VMS support was contributed by David L. Kashtan. Eric Youngdale
|
|
has done much work with it since.
|
|
</p>
|
|
<p>The Intel 80386 machine description was written by Eliot Dresselhaus.
|
|
</p>
|
|
<p>Minh Tran-Le at IntelliCorp contributed some AIX 386 support.
|
|
</p>
|
|
<p>The Motorola 88k machine description was contributed by Devon Bowen of Buffalo
|
|
University and Torbjorn Granlund of the Swedish Institute of Computer Science.
|
|
</p>
|
|
<p>Keith Knowles at the Open Software Foundation wrote the original MIPS back end
|
|
(<samp>tc-mips.c</samp>, <samp>tc-mips.h</samp>), and contributed Rose format support
|
|
(which hasn’t been merged in yet). Ralph Campbell worked with the MIPS code to
|
|
support a.out format.
|
|
</p>
|
|
<p>Support for the Zilog Z8k and Renesas H8/300 processors (tc-z8k,
|
|
tc-h8300), and IEEE 695 object file format (obj-ieee), was written by
|
|
Steve Chamberlain of Cygnus Support. Steve also modified the COFF back end to
|
|
use BFD for some low-level operations, for use with the H8/300 and AMD 29k
|
|
targets.
|
|
</p>
|
|
<p>John Gilmore built the AMD 29000 support, added <code>.include</code> support, and
|
|
simplified the configuration of which versions accept which directives. He
|
|
updated the 68k machine description so that Motorola’s opcodes always produced
|
|
fixed-size instructions (e.g., <code>jsr</code>), while synthetic instructions
|
|
remained shrinkable (<code>jbsr</code>). John fixed many bugs, including true tested
|
|
cross-compilation support, and one bug in relaxation that took a week and
|
|
required the proverbial one-bit fix.
|
|
</p>
|
|
<p>Ian Lance Taylor of Cygnus Support merged the Motorola and MIT syntax for the
|
|
68k, completed support for some COFF targets (68k, i386 SVR3, and SCO Unix),
|
|
added support for MIPS ECOFF and ELF targets, wrote the initial RS/6000 and
|
|
PowerPC assembler, and made a few other minor patches.
|
|
</p>
|
|
<p>Steve Chamberlain made GAS able to generate listings.
|
|
</p>
|
|
<p>Hewlett-Packard contributed support for the HP9000/300.
|
|
</p>
|
|
<p>Jeff Law wrote GAS and BFD support for the native HPPA object format (SOM)
|
|
along with a fairly extensive HPPA testsuite (for both SOM and ELF object
|
|
formats). This work was supported by both the Center for Software Science at
|
|
the University of Utah and Cygnus Support.
|
|
</p>
|
|
<p>Support for ELF format files has been worked on by Mark Eichin of Cygnus
|
|
Support (original, incomplete implementation for SPARC), Pete Hoogenboom and
|
|
Jeff Law at the University of Utah (HPPA mainly), Michael Meissner of the Open
|
|
Software Foundation (i386 mainly), and Ken Raeburn of Cygnus Support (sparc,
|
|
and some initial 64-bit support).
|
|
</p>
|
|
<p>Linas Vepstas added GAS support for the ESA/390 “IBM 370” architecture.
|
|
</p>
|
|
<p>Richard Henderson rewrote the Alpha assembler. Klaus Kaempf wrote GAS and BFD
|
|
support for openVMS/Alpha.
|
|
</p>
|
|
<p>Timothy Wall, Michael Hayes, and Greg Smart contributed to the various tic*
|
|
flavors.
|
|
</p>
|
|
<p>David Heine, Sterling Augustine, Bob Wilson and John Ruttenberg from Tensilica,
|
|
Inc. added support for Xtensa processors.
|
|
</p>
|
|
<p>Several engineers at Cygnus Support have also provided many small bug fixes and
|
|
configuration enhancements.
|
|
</p>
|
|
<p>Jon Beniston added support for the Lattice Mico32 architecture.
|
|
</p>
|
|
<p>Many others have contributed large or small bugfixes and enhancements. If
|
|
you have contributed significant work and are not mentioned on this list, and
|
|
want to be, let us know. Some of the history has been lost; we are not
|
|
intentionally leaving anyone out.
|
|
</p>
|
|
<hr>
|
|
<a name="GNU-Free-Documentation-License"></a>
|
|
<div class="header">
|
|
<p>
|
|
Next: <a href="#AS-Index" accesskey="n" rel="next">AS Index</a>, Previous: <a href="#Acknowledgements" accesskey="p" rel="previous">Acknowledgements</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="GNU-Free-Documentation-License-1"></a>
|
|
<h2 class="appendix">Appendix A GNU Free Documentation License</h2>
|
|
<div align="center">Version 1.3, 3 November 2008
|
|
</div>
|
|
|
|
<div class="display">
|
|
<pre class="display">Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
|
|
<a href="http://fsf.org/">http://fsf.org/</a>
|
|
|
|
Everyone is permitted to copy and distribute verbatim copies
|
|
of this license document, but changing it is not allowed.
|
|
</pre></div>
|
|
|
|
<ol>
|
|
<li> PREAMBLE
|
|
|
|
<p>The purpose of this License is to make a manual, textbook, or other
|
|
functional and useful document <em>free</em> in the sense of freedom: to
|
|
assure everyone the effective freedom to copy and redistribute it,
|
|
with or without modifying it, either commercially or noncommercially.
|
|
Secondarily, this License preserves for the author and publisher a way
|
|
to get credit for their work, while not being considered responsible
|
|
for modifications made by others.
|
|
</p>
|
|
<p>This License is a kind of “copyleft”, which means that derivative
|
|
works of the document must themselves be free in the same sense. It
|
|
complements the GNU General Public License, which is a copyleft
|
|
license designed for free software.
|
|
</p>
|
|
<p>We have designed this License in order to use it for manuals for free
|
|
software, because free software needs free documentation: a free
|
|
program should come with manuals providing the same freedoms that the
|
|
software does. But this License is not limited to software manuals;
|
|
it can be used for any textual work, regardless of subject matter or
|
|
whether it is published as a printed book. We recommend this License
|
|
principally for works whose purpose is instruction or reference.
|
|
</p>
|
|
</li><li> APPLICABILITY AND DEFINITIONS
|
|
|
|
<p>This License applies to any manual or other work, in any medium, that
|
|
contains a notice placed by the copyright holder saying it can be
|
|
distributed under the terms of this License. Such a notice grants a
|
|
world-wide, royalty-free license, unlimited in duration, to use that
|
|
work under the conditions stated herein. The “Document”, below,
|
|
refers to any such manual or work. Any member of the public is a
|
|
licensee, and is addressed as “you”. You accept the license if you
|
|
copy, modify or distribute the work in a way requiring permission
|
|
under copyright law.
|
|
</p>
|
|
<p>A “Modified Version” of the Document means any work containing the
|
|
Document or a portion of it, either copied verbatim, or with
|
|
modifications and/or translated into another language.
|
|
</p>
|
|
<p>A “Secondary Section” is a named appendix or a front-matter section
|
|
of the Document that deals exclusively with the relationship of the
|
|
publishers or authors of the Document to the Document’s overall
|
|
subject (or to related matters) and contains nothing that could fall
|
|
directly within that overall subject. (Thus, if the Document is in
|
|
part a textbook of mathematics, a Secondary Section may not explain
|
|
any mathematics.) The relationship could be a matter of historical
|
|
connection with the subject or with related matters, or of legal,
|
|
commercial, philosophical, ethical or political position regarding
|
|
them.
|
|
</p>
|
|
<p>The “Invariant Sections” are certain Secondary Sections whose titles
|
|
are designated, as being those of Invariant Sections, in the notice
|
|
that says that the Document is released under this License. If a
|
|
section does not fit the above definition of Secondary then it is not
|
|
allowed to be designated as Invariant. The Document may contain zero
|
|
Invariant Sections. If the Document does not identify any Invariant
|
|
Sections then there are none.
|
|
</p>
|
|
<p>The “Cover Texts” are certain short passages of text that are listed,
|
|
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
|
the Document is released under this License. A Front-Cover Text may
|
|
be at most 5 words, and a Back-Cover Text may be at most 25 words.
|
|
</p>
|
|
<p>A “Transparent” copy of the Document means a machine-readable copy,
|
|
represented in a format whose specification is available to the
|
|
general public, that is suitable for revising the document
|
|
straightforwardly with generic text editors or (for images composed of
|
|
pixels) generic paint programs or (for drawings) some widely available
|
|
drawing editor, and that is suitable for input to text formatters or
|
|
for automatic translation to a variety of formats suitable for input
|
|
to text formatters. A copy made in an otherwise Transparent file
|
|
format whose markup, or absence of markup, has been arranged to thwart
|
|
or discourage subsequent modification by readers is not Transparent.
|
|
An image format is not Transparent if used for any substantial amount
|
|
of text. A copy that is not “Transparent” is called “Opaque”.
|
|
</p>
|
|
<p>Examples of suitable formats for Transparent copies include plain
|
|
<small>ASCII</small> without markup, Texinfo input format, LaTeX input
|
|
format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
|
|
<acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
|
|
PostScript or <acronym>PDF</acronym> designed for human modification. Examples
|
|
of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
|
|
<acronym>JPG</acronym>. Opaque formats include proprietary formats that can be
|
|
read and edited only by proprietary word processors, <acronym>SGML</acronym> or
|
|
<acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
|
|
not generally available, and the machine-generated <acronym>HTML</acronym>,
|
|
PostScript or <acronym>PDF</acronym> produced by some word processors for
|
|
output purposes only.
|
|
</p>
|
|
<p>The “Title Page” means, for a printed book, the title page itself,
|
|
plus such following pages as are needed to hold, legibly, the material
|
|
this License requires to appear in the title page. For works in
|
|
formats which do not have any title page as such, “Title Page” means
|
|
the text near the most prominent appearance of the work’s title,
|
|
preceding the beginning of the body of the text.
|
|
</p>
|
|
<p>The “publisher” means any person or entity that distributes copies
|
|
of the Document to the public.
|
|
</p>
|
|
<p>A section “Entitled XYZ” means a named subunit of the Document whose
|
|
title either is precisely XYZ or contains XYZ in parentheses following
|
|
text that translates XYZ in another language. (Here XYZ stands for a
|
|
specific section name mentioned below, such as “Acknowledgements”,
|
|
“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title”
|
|
of such a section when you modify the Document means that it remains a
|
|
section “Entitled XYZ” according to this definition.
|
|
</p>
|
|
<p>The Document may include Warranty Disclaimers next to the notice which
|
|
states that this License applies to the Document. These Warranty
|
|
Disclaimers are considered to be included by reference in this
|
|
License, but only as regards disclaiming warranties: any other
|
|
implication that these Warranty Disclaimers may have is void and has
|
|
no effect on the meaning of this License.
|
|
</p>
|
|
</li><li> VERBATIM COPYING
|
|
|
|
<p>You may copy and distribute the Document in any medium, either
|
|
commercially or noncommercially, provided that this License, the
|
|
copyright notices, and the license notice saying this License applies
|
|
to the Document are reproduced in all copies, and that you add no other
|
|
conditions whatsoever to those of this License. You may not use
|
|
technical measures to obstruct or control the reading or further
|
|
copying of the copies you make or distribute. However, you may accept
|
|
compensation in exchange for copies. If you distribute a large enough
|
|
number of copies you must also follow the conditions in section 3.
|
|
</p>
|
|
<p>You may also lend copies, under the same conditions stated above, and
|
|
you may publicly display copies.
|
|
</p>
|
|
</li><li> COPYING IN QUANTITY
|
|
|
|
<p>If you publish printed copies (or copies in media that commonly have
|
|
printed covers) of the Document, numbering more than 100, and the
|
|
Document’s license notice requires Cover Texts, you must enclose the
|
|
copies in covers that carry, clearly and legibly, all these Cover
|
|
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
|
the back cover. Both covers must also clearly and legibly identify
|
|
you as the publisher of these copies. The front cover must present
|
|
the full title with all words of the title equally prominent and
|
|
visible. You may add other material on the covers in addition.
|
|
Copying with changes limited to the covers, as long as they preserve
|
|
the title of the Document and satisfy these conditions, can be treated
|
|
as verbatim copying in other respects.
|
|
</p>
|
|
<p>If the required texts for either cover are too voluminous to fit
|
|
legibly, you should put the first ones listed (as many as fit
|
|
reasonably) on the actual cover, and continue the rest onto adjacent
|
|
pages.
|
|
</p>
|
|
<p>If you publish or distribute Opaque copies of the Document numbering
|
|
more than 100, you must either include a machine-readable Transparent
|
|
copy along with each Opaque copy, or state in or with each Opaque copy
|
|
a computer-network location from which the general network-using
|
|
public has access to download using public-standard network protocols
|
|
a complete Transparent copy of the Document, free of added material.
|
|
If you use the latter option, you must take reasonably prudent steps,
|
|
when you begin distribution of Opaque copies in quantity, to ensure
|
|
that this Transparent copy will remain thus accessible at the stated
|
|
location until at least one year after the last time you distribute an
|
|
Opaque copy (directly or through your agents or retailers) of that
|
|
edition to the public.
|
|
</p>
|
|
<p>It is requested, but not required, that you contact the authors of the
|
|
Document well before redistributing any large number of copies, to give
|
|
them a chance to provide you with an updated version of the Document.
|
|
</p>
|
|
</li><li> MODIFICATIONS
|
|
|
|
<p>You may copy and distribute a Modified Version of the Document under
|
|
the conditions of sections 2 and 3 above, provided that you release
|
|
the Modified Version under precisely this License, with the Modified
|
|
Version filling the role of the Document, thus licensing distribution
|
|
and modification of the Modified Version to whoever possesses a copy
|
|
of it. In addition, you must do these things in the Modified Version:
|
|
</p>
|
|
<ol>
|
|
<li> Use in the Title Page (and on the covers, if any) a title distinct
|
|
from that of the Document, and from those of previous versions
|
|
(which should, if there were any, be listed in the History section
|
|
of the Document). You may use the same title as a previous version
|
|
if the original publisher of that version gives permission.
|
|
|
|
</li><li> List on the Title Page, as authors, one or more persons or entities
|
|
responsible for authorship of the modifications in the Modified
|
|
Version, together with at least five of the principal authors of the
|
|
Document (all of its principal authors, if it has fewer than five),
|
|
unless they release you from this requirement.
|
|
|
|
</li><li> State on the Title page the name of the publisher of the
|
|
Modified Version, as the publisher.
|
|
|
|
</li><li> Preserve all the copyright notices of the Document.
|
|
|
|
</li><li> Add an appropriate copyright notice for your modifications
|
|
adjacent to the other copyright notices.
|
|
|
|
</li><li> Include, immediately after the copyright notices, a license notice
|
|
giving the public permission to use the Modified Version under the
|
|
terms of this License, in the form shown in the Addendum below.
|
|
|
|
</li><li> Preserve in that license notice the full lists of Invariant Sections
|
|
and required Cover Texts given in the Document’s license notice.
|
|
|
|
</li><li> Include an unaltered copy of this License.
|
|
|
|
</li><li> Preserve the section Entitled “History”, Preserve its Title, and add
|
|
to it an item stating at least the title, year, new authors, and
|
|
publisher of the Modified Version as given on the Title Page. If
|
|
there is no section Entitled “History” in the Document, create one
|
|
stating the title, year, authors, and publisher of the Document as
|
|
given on its Title Page, then add an item describing the Modified
|
|
Version as stated in the previous sentence.
|
|
|
|
</li><li> Preserve the network location, if any, given in the Document for
|
|
public access to a Transparent copy of the Document, and likewise
|
|
the network locations given in the Document for previous versions
|
|
it was based on. These may be placed in the “History” section.
|
|
You may omit a network location for a work that was published at
|
|
least four years before the Document itself, or if the original
|
|
publisher of the version it refers to gives permission.
|
|
|
|
</li><li> For any section Entitled “Acknowledgements” or “Dedications”, Preserve
|
|
the Title of the section, and preserve in the section all the
|
|
substance and tone of each of the contributor acknowledgements and/or
|
|
dedications given therein.
|
|
|
|
</li><li> Preserve all the Invariant Sections of the Document,
|
|
unaltered in their text and in their titles. Section numbers
|
|
or the equivalent are not considered part of the section titles.
|
|
|
|
</li><li> Delete any section Entitled “Endorsements”. Such a section
|
|
may not be included in the Modified Version.
|
|
|
|
</li><li> Do not retitle any existing section to be Entitled “Endorsements” or
|
|
to conflict in title with any Invariant Section.
|
|
|
|
</li><li> Preserve any Warranty Disclaimers.
|
|
</li></ol>
|
|
|
|
<p>If the Modified Version includes new front-matter sections or
|
|
appendices that qualify as Secondary Sections and contain no material
|
|
copied from the Document, you may at your option designate some or all
|
|
of these sections as invariant. To do this, add their titles to the
|
|
list of Invariant Sections in the Modified Version’s license notice.
|
|
These titles must be distinct from any other section titles.
|
|
</p>
|
|
<p>You may add a section Entitled “Endorsements”, provided it contains
|
|
nothing but endorsements of your Modified Version by various
|
|
parties—for example, statements of peer review or that the text has
|
|
been approved by an organization as the authoritative definition of a
|
|
standard.
|
|
</p>
|
|
<p>You may add a passage of up to five words as a Front-Cover Text, and a
|
|
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
|
of Cover Texts in the Modified Version. Only one passage of
|
|
Front-Cover Text and one of Back-Cover Text may be added by (or
|
|
through arrangements made by) any one entity. If the Document already
|
|
includes a cover text for the same cover, previously added by you or
|
|
by arrangement made by the same entity you are acting on behalf of,
|
|
you may not add another; but you may replace the old one, on explicit
|
|
permission from the previous publisher that added the old one.
|
|
</p>
|
|
<p>The author(s) and publisher(s) of the Document do not by this License
|
|
give permission to use their names for publicity for or to assert or
|
|
imply endorsement of any Modified Version.
|
|
</p>
|
|
</li><li> COMBINING DOCUMENTS
|
|
|
|
<p>You may combine the Document with other documents released under this
|
|
License, under the terms defined in section 4 above for modified
|
|
versions, provided that you include in the combination all of the
|
|
Invariant Sections of all of the original documents, unmodified, and
|
|
list them all as Invariant Sections of your combined work in its
|
|
license notice, and that you preserve all their Warranty Disclaimers.
|
|
</p>
|
|
<p>The combined work need only contain one copy of this License, and
|
|
multiple identical Invariant Sections may be replaced with a single
|
|
copy. If there are multiple Invariant Sections with the same name but
|
|
different contents, make the title of each such section unique by
|
|
adding at the end of it, in parentheses, the name of the original
|
|
author or publisher of that section if known, or else a unique number.
|
|
Make the same adjustment to the section titles in the list of
|
|
Invariant Sections in the license notice of the combined work.
|
|
</p>
|
|
<p>In the combination, you must combine any sections Entitled “History”
|
|
in the various original documents, forming one section Entitled
|
|
“History”; likewise combine any sections Entitled “Acknowledgements”,
|
|
and any sections Entitled “Dedications”. You must delete all
|
|
sections Entitled “Endorsements.”
|
|
</p>
|
|
</li><li> COLLECTIONS OF DOCUMENTS
|
|
|
|
<p>You may make a collection consisting of the Document and other documents
|
|
released under this License, and replace the individual copies of this
|
|
License in the various documents with a single copy that is included in
|
|
the collection, provided that you follow the rules of this License for
|
|
verbatim copying of each of the documents in all other respects.
|
|
</p>
|
|
<p>You may extract a single document from such a collection, and distribute
|
|
it individually under this License, provided you insert a copy of this
|
|
License into the extracted document, and follow this License in all
|
|
other respects regarding verbatim copying of that document.
|
|
</p>
|
|
</li><li> AGGREGATION WITH INDEPENDENT WORKS
|
|
|
|
<p>A compilation of the Document or its derivatives with other separate
|
|
and independent documents or works, in or on a volume of a storage or
|
|
distribution medium, is called an “aggregate” if the copyright
|
|
resulting from the compilation is not used to limit the legal rights
|
|
of the compilation’s users beyond what the individual works permit.
|
|
When the Document is included in an aggregate, this License does not
|
|
apply to the other works in the aggregate which are not themselves
|
|
derivative works of the Document.
|
|
</p>
|
|
<p>If the Cover Text requirement of section 3 is applicable to these
|
|
copies of the Document, then if the Document is less than one half of
|
|
the entire aggregate, the Document’s Cover Texts may be placed on
|
|
covers that bracket the Document within the aggregate, or the
|
|
electronic equivalent of covers if the Document is in electronic form.
|
|
Otherwise they must appear on printed covers that bracket the whole
|
|
aggregate.
|
|
</p>
|
|
</li><li> TRANSLATION
|
|
|
|
<p>Translation is considered a kind of modification, so you may
|
|
distribute translations of the Document under the terms of section 4.
|
|
Replacing Invariant Sections with translations requires special
|
|
permission from their copyright holders, but you may include
|
|
translations of some or all Invariant Sections in addition to the
|
|
original versions of these Invariant Sections. You may include a
|
|
translation of this License, and all the license notices in the
|
|
Document, and any Warranty Disclaimers, provided that you also include
|
|
the original English version of this License and the original versions
|
|
of those notices and disclaimers. In case of a disagreement between
|
|
the translation and the original version of this License or a notice
|
|
or disclaimer, the original version will prevail.
|
|
</p>
|
|
<p>If a section in the Document is Entitled “Acknowledgements”,
|
|
“Dedications”, or “History”, the requirement (section 4) to Preserve
|
|
its Title (section 1) will typically require changing the actual
|
|
title.
|
|
</p>
|
|
</li><li> TERMINATION
|
|
|
|
<p>You may not copy, modify, sublicense, or distribute the Document
|
|
except as expressly provided under this License. Any attempt
|
|
otherwise to copy, modify, sublicense, or distribute it is void, and
|
|
will automatically terminate your rights under this License.
|
|
</p>
|
|
<p>However, if you cease all violation of this License, then your license
|
|
from a particular copyright holder is reinstated (a) provisionally,
|
|
unless and until the copyright holder explicitly and finally
|
|
terminates your license, and (b) permanently, if the copyright holder
|
|
fails to notify you of the violation by some reasonable means prior to
|
|
60 days after the cessation.
|
|
</p>
|
|
<p>Moreover, your license from a particular copyright holder is
|
|
reinstated permanently if the copyright holder notifies you of the
|
|
violation by some reasonable means, this is the first time you have
|
|
received notice of violation of this License (for any work) from that
|
|
copyright holder, and you cure the violation prior to 30 days after
|
|
your receipt of the notice.
|
|
</p>
|
|
<p>Termination of your rights under this section does not terminate the
|
|
licenses of parties who have received copies or rights from you under
|
|
this License. If your rights have been terminated and not permanently
|
|
reinstated, receipt of a copy of some or all of the same material does
|
|
not give you any rights to use it.
|
|
</p>
|
|
</li><li> FUTURE REVISIONS OF THIS LICENSE
|
|
|
|
<p>The Free Software Foundation may publish new, revised versions
|
|
of the GNU Free Documentation License from time to time. Such new
|
|
versions will be similar in spirit to the present version, but may
|
|
differ in detail to address new problems or concerns. See
|
|
<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
|
|
</p>
|
|
<p>Each version of the License is given a distinguishing version number.
|
|
If the Document specifies that a particular numbered version of this
|
|
License “or any later version” applies to it, you have the option of
|
|
following the terms and conditions either of that specified version or
|
|
of any later version that has been published (not as a draft) by the
|
|
Free Software Foundation. If the Document does not specify a version
|
|
number of this License, you may choose any version ever published (not
|
|
as a draft) by the Free Software Foundation. If the Document
|
|
specifies that a proxy can decide which future versions of this
|
|
License can be used, that proxy’s public statement of acceptance of a
|
|
version permanently authorizes you to choose that version for the
|
|
Document.
|
|
</p>
|
|
</li><li> RELICENSING
|
|
|
|
<p>“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any
|
|
World Wide Web server that publishes copyrightable works and also
|
|
provides prominent facilities for anybody to edit those works. A
|
|
public wiki that anybody can edit is an example of such a server. A
|
|
“Massive Multiauthor Collaboration” (or “MMC”) contained in the
|
|
site means any set of copyrightable works thus published on the MMC
|
|
site.
|
|
</p>
|
|
<p>“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0
|
|
license published by Creative Commons Corporation, a not-for-profit
|
|
corporation with a principal place of business in San Francisco,
|
|
California, as well as future copyleft versions of that license
|
|
published by that same organization.
|
|
</p>
|
|
<p>“Incorporate” means to publish or republish a Document, in whole or
|
|
in part, as part of another Document.
|
|
</p>
|
|
<p>An MMC is “eligible for relicensing” if it is licensed under this
|
|
License, and if all works that were first published under this License
|
|
somewhere other than this MMC, and subsequently incorporated in whole
|
|
or in part into the MMC, (1) had no cover texts or invariant sections,
|
|
and (2) were thus incorporated prior to November 1, 2008.
|
|
</p>
|
|
<p>The operator of an MMC Site may republish an MMC contained in the site
|
|
under CC-BY-SA on the same site at any time before August 1, 2009,
|
|
provided the MMC is eligible for relicensing.
|
|
</p>
|
|
</li></ol>
|
|
|
|
<a name="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></a>
|
|
<h3 class="heading">ADDENDUM: How to use this License for your documents</h3>
|
|
|
|
<p>To use this License in a document you have written, include a copy of
|
|
the License in the document and put the following copyright and
|
|
license notices just after the title page:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> Copyright (C) <var>year</var> <var>your name</var>.
|
|
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, no Front-Cover Texts, and no Back-Cover
|
|
Texts. A copy of the license is included in the section entitled ``GNU
|
|
Free Documentation License''.
|
|
</pre></div>
|
|
|
|
<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
|
replace the “with…Texts.” line with this:
|
|
</p>
|
|
<div class="smallexample">
|
|
<pre class="smallexample"> with the Invariant Sections being <var>list their titles</var>, with
|
|
the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
|
|
being <var>list</var>.
|
|
</pre></div>
|
|
|
|
<p>If you have Invariant Sections without Cover Texts, or some other
|
|
combination of the three, merge those two alternatives to suit the
|
|
situation.
|
|
</p>
|
|
<p>If your document contains nontrivial examples of program code, we
|
|
recommend releasing these examples in parallel under your choice of
|
|
free software license, such as the GNU General Public License,
|
|
to permit their use in free software.
|
|
</p>
|
|
|
|
|
|
<hr>
|
|
<a name="AS-Index"></a>
|
|
<div class="header">
|
|
<p>
|
|
Previous: <a href="#GNU-Free-Documentation-License" accesskey="p" rel="previous">GNU Free Documentation License</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<a name="AS-Index-1"></a>
|
|
<h2 class="unnumbered">AS Index</h2>
|
|
|
|
<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#AS-Index_cp_symbol-1"><b> </b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-2"><b>#</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-3"><b>$</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-4"><b>%</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-5"><b>-</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-6"><b>.</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-7"><b>1</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-8"><b>2</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-9"><b>3</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-10"><b>4</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-11"><b>8</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-12"><b>:</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-13"><b>@</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-14"><b>_</b></a>
|
|
|
|
<br>
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-A"><b>A</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-B"><b>B</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-C"><b>C</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-D"><b>D</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-E"><b>E</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-F"><b>F</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-G"><b>G</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-H"><b>H</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-I"><b>I</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-J"><b>J</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-L"><b>L</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-M"><b>M</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-N"><b>N</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-O"><b>O</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-P"><b>P</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-Q"><b>Q</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-R"><b>R</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-S"><b>S</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-T"><b>T</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-U"><b>U</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-V"><b>V</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-W"><b>W</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-X"><b>X</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-Z"><b>Z</b></a>
|
|
|
|
</td></tr></table>
|
|
<table class="index-cp" border="0">
|
|
<tr><td></td><th align="left">Index Entry</th><td> </td><th align="left"> Section</th></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-1"> </a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index--_005c_0022-_0028doublequote-character_0029"><code> \"</code> (doublequote character)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index--_005cb-_0028backspace-character_0029"><code> \b</code> (backspace character)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index--_005cddd-_0028octal-character-code_0029"><code> \<var>ddd</var></code> (octal character code)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index--_005cf-_0028formfeed-character_0029"><code> \f</code> (formfeed character)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index--_005cn-_0028newline-character_0029"><code> \n</code> (newline character)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index--_005cr-_0028carriage-return-character_0029"><code> \r</code> (carriage return character)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index--_005ct-_0028tab_0029"><code> \t</code> (tab)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index--_005cxd_002e_002e_002e-_0028hex-character-code_0029"><code> \<var>xd...</var></code> (hex character code)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index--_005c_005c-_0028_005c-character_0029"><code> \\</code> (‘<samp>\</samp>’ character)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-2">#</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0023"><code>#</code></a>:</td><td> </td><td valign="top"><a href="#Comments">Comments</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0023APP"><code>#APP</code></a>:</td><td> </td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0023NO_005fAPP"><code>#NO_APP</code></a>:</td><td> </td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-3">$</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024-in-symbol-names"><code>$</code> in symbol names</a>:</td><td> </td><td valign="top"><a href="#D10V_002dChars">D10V-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024-in-symbol-names-1"><code>$</code> in symbol names</a>:</td><td> </td><td valign="top"><a href="#D30V_002dChars">D30V-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024-in-symbol-names-2"><code>$</code> in symbol names</a>:</td><td> </td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024-in-symbol-names-3"><code>$</code> in symbol names</a>:</td><td> </td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024a"><code>$a</code></a>:</td><td> </td><td valign="top"><a href="#ARM-Mapping-Symbols">ARM Mapping Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024acos-math-builtin_002c-TIC54X"><code>$acos</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024asin-math-builtin_002c-TIC54X"><code>$asin</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024atan-math-builtin_002c-TIC54X"><code>$atan</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024atan2-math-builtin_002c-TIC54X"><code>$atan2</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024ceil-math-builtin_002c-TIC54X"><code>$ceil</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024cos-math-builtin_002c-TIC54X"><code>$cos</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024cosh-math-builtin_002c-TIC54X"><code>$cosh</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024cvf-math-builtin_002c-TIC54X"><code>$cvf</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024cvi-math-builtin_002c-TIC54X"><code>$cvi</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024d"><code>$d</code></a>:</td><td> </td><td valign="top"><a href="#AArch64-Mapping-Symbols">AArch64 Mapping Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024d-1"><code>$d</code></a>:</td><td> </td><td valign="top"><a href="#ARM-Mapping-Symbols">ARM Mapping Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024exp-math-builtin_002c-TIC54X"><code>$exp</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024fabs-math-builtin_002c-TIC54X"><code>$fabs</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024firstch-subsym-builtin_002c-TIC54X"><code>$firstch</code> subsym builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024floor-math-builtin_002c-TIC54X"><code>$floor</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024fmod-math-builtin_002c-TIC54X"><code>$fmod</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024int-math-builtin_002c-TIC54X"><code>$int</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024iscons-subsym-builtin_002c-TIC54X"><code>$iscons</code> subsym builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024isdefed-subsym-builtin_002c-TIC54X"><code>$isdefed</code> subsym builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024ismember-subsym-builtin_002c-TIC54X"><code>$ismember</code> subsym builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024isname-subsym-builtin_002c-TIC54X"><code>$isname</code> subsym builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024isreg-subsym-builtin_002c-TIC54X"><code>$isreg</code> subsym builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024lastch-subsym-builtin_002c-TIC54X"><code>$lastch</code> subsym builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024ldexp-math-builtin_002c-TIC54X"><code>$ldexp</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024log-math-builtin_002c-TIC54X"><code>$log</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024log10-math-builtin_002c-TIC54X"><code>$log10</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024max-math-builtin_002c-TIC54X"><code>$max</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024min-math-builtin_002c-TIC54X"><code>$min</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024pow-math-builtin_002c-TIC54X"><code>$pow</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024round-math-builtin_002c-TIC54X"><code>$round</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024sgn-math-builtin_002c-TIC54X"><code>$sgn</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024sin-math-builtin_002c-TIC54X"><code>$sin</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024sinh-math-builtin_002c-TIC54X"><code>$sinh</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024sqrt-math-builtin_002c-TIC54X"><code>$sqrt</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024structacc-subsym-builtin_002c-TIC54X"><code>$structacc</code> subsym builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024structsz-subsym-builtin_002c-TIC54X"><code>$structsz</code> subsym builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024symcmp-subsym-builtin_002c-TIC54X"><code>$symcmp</code> subsym builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024symlen-subsym-builtin_002c-TIC54X"><code>$symlen</code> subsym builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024t"><code>$t</code></a>:</td><td> </td><td valign="top"><a href="#ARM-Mapping-Symbols">ARM Mapping Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024tan-math-builtin_002c-TIC54X"><code>$tan</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024tanh-math-builtin_002c-TIC54X"><code>$tanh</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024trunc-math-builtin_002c-TIC54X"><code>$trunc</code> math builtin, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0024x"><code>$x</code></a>:</td><td> </td><td valign="top"><a href="#AArch64-Mapping-Symbols">AArch64 Mapping Symbols</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-4">%</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0025gp">%gp</a>:</td><td> </td><td valign="top"><a href="#RX_002dModifiers">RX-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0025gpreg">‘<samp>%gpreg</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dModifiers">RX-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0025pidreg">‘<samp>%pidreg</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dModifiers">RX-Modifiers</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-5">-</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002b-option_002c-VAX_002fVMS">‘<samp>-+</samp>’ option, VAX/VMS</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002d"><code>--</code></a>:</td><td> </td><td valign="top"><a href="#Command-Line">Command Line</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002d32-option_002c-i386">‘<samp>--32</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002d32-option_002c-x86_002d64">‘<samp>--32</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002d64-option_002c-i386">‘<samp>--64</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002d64-option_002c-x86_002d64">‘<samp>--64</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dabi_002dcall0"><code>--abi-call0</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dabi_002dwindowed"><code>--abi-windowed</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dabsolute_002dliterals"><code>--absolute-literals</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dallow_002dreg_002dprefix"><code>--allow-reg-prefix</code></a>:</td><td> </td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dalternate"><code>--alternate</code></a>:</td><td> </td><td valign="top"><a href="#alternate">alternate</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dauto_002dlitpools"><code>--auto-litpools</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dbase_002dsize_002ddefault_002d16">‘<samp>--base-size-default-16</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dbase_002dsize_002ddefault_002d32">‘<samp>--base-size-default-32</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dbig"><code>--big</code></a>:</td><td> </td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dbitwise_002dor-option_002c-M680x0">‘<samp>--bitwise-or</samp>’ option, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dcompress_002ddebug_002dsections_003d-option">‘<samp>--compress-debug-sections=</samp>’ option</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002ddisp_002dsize_002ddefault_002d16">‘<samp>--disp-size-default-16</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002ddisp_002dsize_002ddefault_002d32">‘<samp>--disp-size-default-32</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002ddivide-option_002c-i386">‘<samp>--divide</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002ddsp"><code>--dsp</code></a>:</td><td> </td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002demulation_003dcrisaout-command_002dline-option_002c-CRIS"><samp>--emulation=crisaout</samp> command-line option, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002demulation_003dcriself-command_002dline-option_002c-CRIS"><samp>--emulation=criself</samp> command-line option, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002denforce_002daligned_002ddata"><code>--enforce-aligned-data</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dAligned_002dData">Sparc-Aligned-Data</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dfatal_002dwarnings"><code>--fatal-warnings</code></a>:</td><td> </td><td valign="top"><a href="#W">W</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dfdpic"><code>--fdpic</code></a>:</td><td> </td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dfix_002dv4bx-command_002dline-option_002c-ARM"><code>--fix-v4bx</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dfixed_002dspecial_002dregister_002dnames-command_002dline-option_002c-MMIX">‘<samp>--fixed-special-register-names</samp>’ command-line option, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dforce_002dlong_002dbranches">‘<samp>--force-long-branches</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dgenerate_002dexample">‘<samp>--generate-example</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dglobalize_002dsymbols-command_002dline-option_002c-MMIX">‘<samp>--globalize-symbols</samp>’ command-line option, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dgnu_002dsyntax-command_002dline-option_002c-MMIX">‘<samp>--gnu-syntax</samp>’ command-line option, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dlinker_002dallocated_002dgregs-command_002dline-option_002c-MMIX">‘<samp>--linker-allocated-gregs</samp>’ command-line option, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dlisting_002dcont_002dlines"><code>--listing-cont-lines</code></a>:</td><td> </td><td valign="top"><a href="#listing">listing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dlisting_002dlhs_002dwidth"><code>--listing-lhs-width</code></a>:</td><td> </td><td valign="top"><a href="#listing">listing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dlisting_002dlhs_002dwidth2"><code>--listing-lhs-width2</code></a>:</td><td> </td><td valign="top"><a href="#listing">listing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dlisting_002drhs_002dwidth"><code>--listing-rhs-width</code></a>:</td><td> </td><td valign="top"><a href="#listing">listing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dlittle"><code>--little</code></a>:</td><td> </td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dlongcalls"><code>--longcalls</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dmarch_003darchitecture-command_002dline-option_002c-CRIS"><samp>--march=<var>architecture</var></samp> command-line option, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dMD"><code>--MD</code></a>:</td><td> </td><td valign="top"><a href="#MD">MD</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dmul_002dbug_002dabort-command_002dline-option_002c-CRIS"><samp>--mul-bug-abort</samp> command-line option, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dabsolute_002dliterals"><code>--no-absolute-literals</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dauto_002dlitpools"><code>--no-auto-litpools</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dexpand-command_002dline-option_002c-MMIX">‘<samp>--no-expand</samp>’ command-line option, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dlongcalls"><code>--no-longcalls</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dmerge_002dgregs-command_002dline-option_002c-MMIX">‘<samp>--no-merge-gregs</samp>’ command-line option, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dmul_002dbug_002dabort-command_002dline-option_002c-CRIS"><samp>--no-mul-bug-abort</samp> command-line option, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dpad_002dsections"><code>--no-pad-sections</code></a>:</td><td> </td><td valign="top"><a href="#no_002dpad_002dsections">no-pad-sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dpredefined_002dsyms-command_002dline-option_002c-MMIX">‘<samp>--no-predefined-syms</samp>’ command-line option, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dpushj_002dstubs-command_002dline-option_002c-MMIX">‘<samp>--no-pushj-stubs</samp>’ command-line option, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dstubs-command_002dline-option_002c-MMIX">‘<samp>--no-stubs</samp>’ command-line option, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dtarget_002dalign"><code>--no-target-align</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dtext_002dsection_002dliterals"><code>--no-text-section-literals</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dtrampolines"><code>--no-trampolines</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dtransform"><code>--no-transform</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dunderscore-command_002dline-option_002c-CRIS"><samp>--no-underscore</samp> command-line option, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dwarn"><code>--no-warn</code></a>:</td><td> </td><td valign="top"><a href="#W">W</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dpcrel">‘<samp>--pcrel</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dpic-command_002dline-option_002c-CRIS"><samp>--pic</samp> command-line option, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dprint_002dinsn_002dsyntax">‘<samp>--print-insn-syntax</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dprint_002dinsn_002dsyntax-1">‘<samp>--print-insn-syntax</samp>’</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dprint_002dopcodes">‘<samp>--print-opcodes</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dprint_002dopcodes-1">‘<samp>--print-opcodes</samp>’</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dregister_002dprefix_002doptional-option_002c-M680x0">‘<samp>--register-prefix-optional</samp>’ option, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002drelax"><code>--relax</code></a>:</td><td> </td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002drelax-command_002dline-option_002c-MMIX">‘<samp>--relax</samp>’ command-line option, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002drename_002dsection"><code>--rename-section</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002drenesas"><code>--renesas</code></a>:</td><td> </td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dsectname_002dsubst"><code>--sectname-subst</code></a>:</td><td> </td><td valign="top"><a href="#Section">Section</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dshort_002dbranches">‘<samp>--short-branches</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dsmall"><code>--small</code></a>:</td><td> </td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dstatistics"><code>--statistics</code></a>:</td><td> </td><td valign="top"><a href="#statistics">statistics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dstrict_002ddirect_002dmode">‘<samp>--strict-direct-mode</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dtarget_002dalign"><code>--target-align</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dtext_002dsection_002dliterals"><code>--text-section-literals</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dtraditional_002dformat"><code>--traditional-format</code></a>:</td><td> </td><td valign="top"><a href="#traditional_002dformat">traditional-format</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dtrampolines"><code>--trampolines</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dtransform"><code>--transform</code></a>:</td><td> </td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dunderscore-command_002dline-option_002c-CRIS"><samp>--underscore</samp> command-line option, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dwarn"><code>--warn</code></a>:</td><td> </td><td valign="top"><a href="#W">W</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dx32-option_002c-i386">‘<samp>--x32</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dx32-option_002c-x86_002d64">‘<samp>--x32</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d_002dxgate_002dramoffset">‘<samp>--xgate-ramoffset</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d1-option_002c-VAX_002fVMS">‘<samp>-1</samp>’ option, VAX/VMS</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002d32addr-command_002dline-option_002c-Alpha"><code>-32addr</code> command-line option, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002da"><code>-a</code></a>:</td><td> </td><td valign="top"><a href="#a">a</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dac"><code>-ac</code></a>:</td><td> </td><td valign="top"><a href="#a">a</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dad"><code>-ad</code></a>:</td><td> </td><td valign="top"><a href="#a">a</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dag"><code>-ag</code></a>:</td><td> </td><td valign="top"><a href="#a">a</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dah"><code>-ah</code></a>:</td><td> </td><td valign="top"><a href="#a">a</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dal"><code>-al</code></a>:</td><td> </td><td valign="top"><a href="#a">a</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAleon"><code>-Aleon</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dan"><code>-an</code></a>:</td><td> </td><td valign="top"><a href="#a">a</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002das"><code>-as</code></a>:</td><td> </td><td valign="top"><a href="#a">a</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAsparc"><code>-Asparc</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAsparcfmaf"><code>-Asparcfmaf</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAsparcima"><code>-Asparcima</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAsparclet"><code>-Asparclet</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAsparclite"><code>-Asparclite</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAsparcvis"><code>-Asparcvis</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAsparcvis2"><code>-Asparcvis2</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAsparcvis3"><code>-Asparcvis3</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAsparcvis3r"><code>-Asparcvis3r</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAv6"><code>-Av6</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAv7"><code>-Av7</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAv8"><code>-Av8</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAv9"><code>-Av9</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAv9a"><code>-Av9a</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAv9b"><code>-Av9b</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAv9c"><code>-Av9c</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAv9d"><code>-Av9d</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAv9e"><code>-Av9e</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAv9m"><code>-Av9m</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dAv9v"><code>-Av9v</code></a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dbig-option_002c-M32R"><code>-big</code> option, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dcolonless-command_002dline-option_002c-Z80"><code>-colonless</code> command-line option, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dD"><code>-D</code></a>:</td><td> </td><td valign="top"><a href="#D">D</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dD_002c-ignored-on-VAX"><code>-D</code>, ignored on VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dd_002c-VAX-option"><code>-d</code>, VAX option</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002deabi_003d-command_002dline-option_002c-ARM"><code>-eabi=</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEB-command_002dline-option_002c-AArch64"><samp>-EB</samp> command-line option, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEB-command_002dline-option_002c-ARC"><code>-EB</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEB-command_002dline-option_002c-ARM"><code>-EB</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEB-command_002dline-option_002c-BPF"><samp>-EB</samp> command-line option, BPF</a>:</td><td> </td><td valign="top"><a href="#BPF-Options">BPF Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEB-option-_0028MIPS_0029"><code>-EB</code> option (MIPS)</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEB-option_002c-M32R"><code>-EB</code> option, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEB-option_002c-TILE_002dGx">‘<samp>-EB</samp>’ option, TILE-Gx</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Options">TILE-Gx Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEL-command_002dline-option_002c-AArch64"><samp>-EL</samp> command-line option, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEL-command_002dline-option_002c-ARC"><code>-EL</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEL-command_002dline-option_002c-ARM"><code>-EL</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEL-command_002dline-option_002c-BPF"><samp>-EL</samp> command-line option, BPF</a>:</td><td> </td><td valign="top"><a href="#BPF-Options">BPF Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEL-option-_0028MIPS_0029"><code>-EL</code> option (MIPS)</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEL-option_002c-M32R"><code>-EL</code> option, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dEL-option_002c-TILE_002dGx">‘<samp>-EL</samp>’ option, TILE-Gx</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Options">TILE-Gx Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002df"><code>-f</code></a>:</td><td> </td><td valign="top"><a href="#f">f</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dF-command_002dline-option_002c-Alpha"><code>-F</code> command-line option, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dfno_002dpic-option_002c-RISC_002dV">‘<samp>-fno-pic</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dfp_002dd-command_002dline-option_002c-Z80"><code>-fp-d</code> command-line option, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dfp_002ds-command_002dline-option_002c-Z80"><code>-fp-s</code> command-line option, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dfpic-option_002c-RISC_002dV">‘<samp>-fpic</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dg-command_002dline-option_002c-Alpha"><code>-g</code> command-line option, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dG-command_002dline-option_002c-Alpha"><code>-G</code> command-line option, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dG-option-_0028MIPS_0029"><code>-G</code> option (MIPS)</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dh-option_002c-VAX_002fVMS">‘<samp>-h</samp>’ option, VAX/VMS</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dH-option_002c-VAX_002fVMS">‘<samp>-H</samp>’ option, VAX/VMS</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dI-path"><code>-I <var>path</var></code></a>:</td><td> </td><td valign="top"><a href="#I">I</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dignore_002dparallel_002dconflicts-option_002c-M32RX">‘<samp>-ignore-parallel-conflicts</samp>’ option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dIp-option_002c-M32RX">‘<samp>-Ip</samp>’ option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dJ_002c-ignored-on-VAX"><code>-J</code>, ignored on VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dK"><code>-K</code></a>:</td><td> </td><td valign="top"><a href="#K">K</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dk-command_002dline-option_002c-ARM"><code>-k</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dKPIC-option_002c-M32R"><code>-KPIC</code> option, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dKPIC-option_002c-MIPS"><samp>-KPIC</samp> option, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dL"><code>-L</code></a>:</td><td> </td><td valign="top"><a href="#L">L</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dl-option_002c-M680x0">‘<samp>-l</samp>’ option, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dlittle-option_002c-M32R"><code>-little</code> option, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dlocal_002dprefix-command_002dline-option_002c-Z80"><code>-local-prefix</code> command-line option, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dM"><code>-M</code></a>:</td><td> </td><td valign="top"><a href="#M">M</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f03">-m11/03</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f04">-m11/04</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f05">-m11/05</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f10">-m11/10</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f15">-m11/15</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f20">-m11/20</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f21">-m11/21</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f23">-m11/23</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f24">-m11/24</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f34">-m11/34</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f34a">-m11/34a</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f35">-m11/35</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f40">-m11/40</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f44">-m11/44</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f45">-m11/45</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f50">-m11/50</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f53">-m11/53</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f55">-m11/55</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f60">-m11/60</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f70">-m11/70</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f73">-m11/73</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f83">-m11/83</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f84">-m11/84</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f93">-m11/93</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm11_002f94">-m11/94</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm16c-option_002c-M16C">‘<samp>-m16c</samp>’ option, M16C</a>:</td><td> </td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm31-option_002c-s390">‘<samp>-m31</samp>’ option, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm32-option_002c-TILE_002dGx">‘<samp>-m32</samp>’ option, TILE-Gx</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Options">TILE-Gx Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm32bit_002ddoubles">‘<samp>-m32bit-doubles</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm32c-option_002c-M32C">‘<samp>-m32c</samp>’ option, M32C</a>:</td><td> </td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm32r-option_002c-M32R">‘<samp>-m32r</samp>’ option, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm32rx-option_002c-M32R2">‘<samp>-m32rx</samp>’ option, M32R2</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm32rx-option_002c-M32RX">‘<samp>-m32rx</samp>’ option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm4byte_002dalign-command_002dline-option_002c-V850"><code>-m4byte-align</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm64-option_002c-s390">‘<samp>-m64</samp>’ option, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm64-option_002c-TILE_002dGx">‘<samp>-m64</samp>’ option, TILE-Gx</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Options">TILE-Gx Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm64bit_002ddoubles">‘<samp>-m64bit-doubles</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm68000-and-related-options">‘<samp>-m68000</samp>’ and related options</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm68hc11">‘<samp>-m68hc11</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm68hc12">‘<samp>-m68hc12</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm68hcs12">‘<samp>-m68hcs12</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm8byte_002dalign-command_002dline-option_002c-V850"><code>-m8byte-align</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmabi_003d-command_002dline-option_002c-AArch64"><samp>-mabi=</samp> command-line option, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmabi_003dABI-option_002c-RISC_002dV">‘<samp>-mabi=ABI</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmadd_002dbnd_002dprefix-option_002c-i386">‘<samp>-madd-bnd-prefix</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmadd_002dbnd_002dprefix-option_002c-x86_002d64">‘<samp>-madd-bnd-prefix</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmalign_002dbranch_002dboundary_003d-option_002c-i386">‘<samp>-malign-branch-boundary=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmalign_002dbranch_002dboundary_003d-option_002c-x86_002d64">‘<samp>-malign-branch-boundary=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmalign_002dbranch_002dprefix_002dsize_003d-option_002c-i386">‘<samp>-malign-branch-prefix-size=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmalign_002dbranch_002dprefix_002dsize_003d-option_002c-x86_002d64">‘<samp>-malign-branch-prefix-size=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmalign_002dbranch_003d-option_002c-i386">‘<samp>-malign-branch=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmalign_002dbranch_003d-option_002c-x86_002d64">‘<samp>-malign-branch=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmall">-mall</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmall_002denabled-command_002dline-option_002c-LM32"><code>-mall-enabled</code> command-line option, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmall_002dextensions">-mall-extensions</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmall_002dopcodes-command_002dline-option_002c-AVR"><code>-mall-opcodes</code> command-line option, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmamd64-option_002c-x86_002d64">‘<samp>-mamd64</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmapcs_002d26-command_002dline-option_002c-ARM"><code>-mapcs-26</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmapcs_002d32-command_002dline-option_002c-ARM"><code>-mapcs-32</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmapcs_002dfloat-command_002dline-option_002c-ARM"><code>-mapcs-float</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmapcs_002dreentrant-command_002dline-option_002c-ARM"><code>-mapcs-reentrant</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmarch_002dattr-option_002c-RISC_002dV">‘<samp>-march-attr</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-command_002dline-option_002c-AArch64"><samp>-march=</samp> command-line option, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-command_002dline-option_002c-ARM"><code>-march=</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-command_002dline-option_002c-M680x0">‘<samp>-march=</samp>’ command-line option, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-command_002dline-option_002c-TIC6X"><code>-march=</code> command-line option, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-command_002dline-option_002c-Z80"><code>-march=</code> command-line option, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-option_002c-i386">‘<samp>-march=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-option_002c-s390">‘<samp>-march=</samp>’ option, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-option_002c-x86_002d64">‘<samp>-march=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmarch_003dISA-option_002c-RISC_002dV">‘<samp>-march=ISA</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmatpcs-command_002dline-option_002c-ARM"><code>-matpcs</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmavxscalar_003d-option_002c-i386">‘<samp>-mavxscalar=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmavxscalar_003d-option_002c-x86_002d64">‘<samp>-mavxscalar=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmbarrel_002dshift_002denabled-command_002dline-option_002c-LM32"><code>-mbarrel-shift-enabled</code> command-line option, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmbig_002dendian">‘<samp>-mbig-endian</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmbig_002dendian-option_002c-RISC_002dV">‘<samp>-mbig-endian</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmbig_002dobj-option_002c-i386">‘<samp>-mbig-obj</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmbig_002dobj-option_002c-x86_002d64">‘<samp>-mbig-obj</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmbranches_002dwithin_002d32B_002dboundaries-option_002c-i386">‘<samp>-mbranches-within-32B-boundaries</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmbranches_002dwithin_002d32B_002dboundaries-option_002c-x86_002d64">‘<samp>-mbranches-within-32B-boundaries</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmbreak_002denabled-command_002dline-option_002c-LM32"><code>-mbreak-enabled</code> command-line option, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmccs-command_002dline-option_002c-ARM"><code>-mccs</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmcis">-mcis</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmcode_002ddensity-command_002dline-option_002c-ARC"><code>-mcode-density</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmconstant_002dgp-command_002dline-option_002c-IA_002d64"><code>-mconstant-gp</code> command-line option, IA-64</a>:</td><td> </td><td valign="top"><a href="#IA_002d64-Options">IA-64 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmcpu-command_002dline-option_002c-Alpha"><code>-m<var>cpu</var></code> command-line option, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmcpu-option_002c-cpu">‘<samp>-mcpu</samp>’ option, cpu</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmcpu_003d">‘<samp>-mcpu=</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmcpu_003d-command_002dline-option_002c-AArch64"><samp>-mcpu=</samp> command-line option, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmcpu_003d-command_002dline-option_002c-ARM"><code>-mcpu=</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmcpu_003d-command_002dline-option_002c-Blackfin"><code>-mcpu=</code> command-line option, Blackfin</a>:</td><td> </td><td valign="top"><a href="#Blackfin-Options">Blackfin Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmcpu_003d-command_002dline-option_002c-M680x0">‘<samp>-mcpu=</samp>’ command-line option, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmcpu_003dcpu-command_002dline-option_002c-ARC"><code>-mcpu=<var>cpu</var></code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmcsm">-mcsm</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmcsr_002dcheck-option_002c-RISC_002dV">‘<samp>-mcsr-check</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmdcache_002denabled-command_002dline-option_002c-LM32"><code>-mdcache-enabled</code> command-line option, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmdebug-command_002dline-option_002c-Alpha"><code>-mdebug</code> command-line option, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmdivide_002denabled-command_002dline-option_002c-LM32"><code>-mdivide-enabled</code> command-line option, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmdollar_002dhex-option_002c-dollar_002dhex">‘<samp>-mdollar-hex</samp>’ option, dollar-hex</a>:</td><td> </td><td valign="top"><a href="#S12Z-Options">S12Z Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmdpfp-command_002dline-option_002c-ARC"><code>-mdpfp</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmdsbt-command_002dline-option_002c-TIC6X"><code>-mdsbt</code> command-line option, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dme-option_002c-stderr-redirect">‘<samp>-me</samp>’ option, stderr redirect</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmeis">-meis</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmepiphany-command_002dline-option_002c-Epiphany"><code>-mepiphany</code> command-line option, Epiphany</a>:</td><td> </td><td valign="top"><a href="#Epiphany-Options">Epiphany Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmepiphany16-command_002dline-option_002c-Epiphany"><code>-mepiphany16</code> command-line option, Epiphany</a>:</td><td> </td><td valign="top"><a href="#Epiphany-Options">Epiphany Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmerrors_002dto_002dfile-option_002c-stderr-redirect">‘<samp>-merrors-to-file</samp>’ option, stderr redirect</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmesa-option_002c-s390">‘<samp>-mesa</samp>’ option, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmevexlig_003d-option_002c-i386">‘<samp>-mevexlig=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmevexlig_003d-option_002c-x86_002d64">‘<samp>-mevexlig=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmevexrcig_003d-option_002c-i386">‘<samp>-mevexrcig=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmevexrcig_003d-option_002c-x86_002d64">‘<samp>-mevexrcig=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmevexwig_003d-option_002c-i386">‘<samp>-mevexwig=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmevexwig_003d-option_002c-x86_002d64">‘<samp>-mevexwig=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmf-option_002c-far_002dmode">‘<samp>-mf</samp>’ option, far-mode</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmf11">-mf11</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmfar_002dmode-option_002c-far_002dmode">‘<samp>-mfar-mode</samp>’ option, far-mode</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmfdpic-command_002dline-option_002c-Blackfin"><code>-mfdpic</code> command-line option, Blackfin</a>:</td><td> </td><td valign="top"><a href="#Blackfin-Options">Blackfin Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmfence_002das_002dlock_002dadd_003d-option_002c-i386">‘<samp>-mfence-as-lock-add=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmfence_002das_002dlock_002dadd_003d-option_002c-x86_002d64">‘<samp>-mfence-as-lock-add=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmfis">-mfis</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmfloat_002dabi_003d-command_002dline-option_002c-ARM"><code>-mfloat-abi=</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmfp_002d11">-mfp-11</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmfp16_002dformat_003d-command_002dline-option"><code>-mfp16-format=</code> command-line option</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmfpp">-mfpp</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmfpu">-mfpu</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmfpu_003d-command_002dline-option_002c-ARM"><code>-mfpu=</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmfpuda-command_002dline-option_002c-ARC"><code>-mfpuda</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmgcc_002dabi">‘<samp>-mgcc-abi</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmgcc_002dabi-command_002dline-option_002c-V850"><code>-mgcc-abi</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmgcc_002disr-command_002dline-option_002c-AVR"><code>-mgcc-isr</code> command-line option, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmhard_002dfloat-command_002dline-option_002c-V850"><code>-mhard-float</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmicache_002denabled-command_002dline-option_002c-LM32"><code>-micache-enabled</code> command-line option, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmimplicit_002dit-command_002dline-option_002c-ARM"><code>-mimplicit-it</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmint_002dregister">‘<samp>-mint-register</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmintel64-option_002c-x86_002d64">‘<samp>-mintel64</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmip2022-option_002c-IP2K">‘<samp>-mip2022</samp>’ option, IP2K</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmip2022ext-option_002c-IP2022">‘<samp>-mip2022ext</samp>’ option, IP2022</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmisa_002dspec_003dISAspec-option_002c-RISC_002dV">‘<samp>-misa-spec=ISAspec</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmj11">-mj11</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmka11">-mka11</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmkb11">-mkb11</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmkd11a">-mkd11a</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmkd11b">-mkd11b</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmkd11d">-mkd11d</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmkd11e">-mkd11e</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmkd11f">-mkd11f</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmkd11h">-mkd11h</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmkd11k">-mkd11k</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmkd11q">-mkd11q</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmkd11z">-mkd11z</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmkev11">-mkev11</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmkev11-1">-mkev11</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlfence_002dafter_002dload_003d-option_002c-i386">‘<samp>-mlfence-after-load=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlfence_002dafter_002dload_003d-option_002c-x86_002d64">‘<samp>-mlfence-after-load=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlfence_002dbefore_002dindirect_002dbranch_003d-option_002c-i386">‘<samp>-mlfence-before-indirect-branch=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlfence_002dbefore_002dindirect_002dbranch_003d-option_002c-x86_002d64">‘<samp>-mlfence-before-indirect-branch=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlfence_002dbefore_002dret_003d-option_002c-i386">‘<samp>-mlfence-before-ret=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlfence_002dbefore_002dret_003d-option_002c-x86_002d64">‘<samp>-mlfence-before-ret=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlimited_002deis">-mlimited-eis</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlink_002drelax-command_002dline-option_002c-AVR"><code>-mlink-relax</code> command-line option, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlittle_002dendian">‘<samp>-mlittle-endian</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlittle_002dendian-option_002c-RISC_002dV">‘<samp>-mlittle-endian</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlong">‘<samp>-mlong</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlong-1">‘<samp>-mlong</samp>’</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlong_002ddouble">‘<samp>-mlong-double</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmlong_002ddouble-1">‘<samp>-mlong-double</samp>’</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmm9s12x">‘<samp>-mm9s12x</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmm9s12xg">‘<samp>-mm9s12xg</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmmcu_003d-command_002dline-option_002c-AVR"><code>-mmcu=</code> command-line option, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmmfpt">-mmfpt</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmmicrocode">-mmicrocode</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmmnemonic_003d-option_002c-i386">‘<samp>-mmnemonic=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmmnemonic_003d-option_002c-x86_002d64">‘<samp>-mmnemonic=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmmultiply_002denabled-command_002dline-option_002c-LM32"><code>-mmultiply-enabled</code> command-line option, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmmutiproc">-mmutiproc</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmmxps">-mmxps</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmnaked_002dreg-option_002c-i386">‘<samp>-mnaked-reg</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmnaked_002dreg-option_002c-x86_002d64">‘<samp>-mnaked-reg</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmnan_003d-command_002dline-option_002c-MIPS"><samp>-mnan=</samp> command-line option, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dallow_002dstring_002dinsns">‘<samp>-mno-allow-string-insns</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002darch_002dattr-option_002c-RISC_002dV">‘<samp>-mno-arch-attr</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dcis">-mno-cis</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dcsm">-mno-csm</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dcsr_002dcheck-option_002c-RISC_002dV">‘<samp>-mno-csr-check</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002ddollar_002dline_002dseparator-command-line-option_002c-AVR"><code>-mno-dollar-line-separator</code> command line option, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002ddsbt-command_002dline-option_002c-TIC6X"><code>-mno-dsbt</code> command-line option, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002deis">-mno-eis</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dextensions">-mno-extensions</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dfdpic-command_002dline-option_002c-Blackfin"><code>-mno-fdpic</code> command-line option, Blackfin</a>:</td><td> </td><td valign="top"><a href="#Blackfin-Options">Blackfin Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dfis">-mno-fis</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dfp_002d11">-mno-fp-11</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dfpp">-mno-fpp</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dfpu">-mno-fpu</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dkev11">-mno-kev11</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dlimited_002deis">-mno-limited-eis</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dlink_002drelax-command_002dline-option_002c-AVR"><code>-mno-link-relax</code> command-line option, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dmfpt">-mno-mfpt</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dmicrocode">-mno-microcode</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dmutiproc">-mno-mutiproc</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dmxps">-mno-mxps</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dpic">-mno-pic</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dpic-command_002dline-option_002c-TIC6X"><code>-mno-pic</code> command-line option, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dregnames-option_002c-s390">‘<samp>-mno-regnames</samp>’ option, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002drelax-option_002c-RISC_002dV">‘<samp>-mno-relax</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dskip_002dbug-command_002dline-option_002c-AVR"><code>-mno-skip-bug</code> command-line option, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dspl">-mno-spl</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dsym32">-mno-sym32</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dverbose_002derror-command_002dline-option_002c-AArch64"><code>-mno-verbose-error</code> command-line option, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmno_002dwrap-command_002dline-option_002c-AVR"><code>-mno-wrap</code> command-line option, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmnopic-command_002dline-option_002c-Blackfin"><code>-mnopic</code> command-line option, Blackfin</a>:</td><td> </td><td valign="top"><a href="#Blackfin-Options">Blackfin Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmnps400-command_002dline-option_002c-ARC"><code>-mnps400</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmomit_002dlock_002dprefix_003d-option_002c-i386">‘<samp>-momit-lock-prefix=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmomit_002dlock_002dprefix_003d-option_002c-x86_002d64">‘<samp>-momit-lock-prefix=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmpic">-mpic</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmpic-command_002dline-option_002c-TIC6X"><code>-mpic</code> command-line option, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmpid">‘<samp>-mpid</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmpid_003d-command_002dline-option_002c-TIC6X"><code>-mpid=</code> command-line option, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmpriv_002dspec_003dPRIVspec-option_002c-RISC_002dV">‘<samp>-mpriv-spec=PRIVspec</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmreg_002dprefix_003dprefix-option_002c-reg_002dprefix">‘<samp>-mreg-prefix=<var>prefix</var></samp>’ option, reg-prefix</a>:</td><td> </td><td valign="top"><a href="#S12Z-Options">S12Z Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmregnames-option_002c-s390">‘<samp>-mregnames</samp>’ option, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmrelax-command_002dline-option_002c-ARC"><code>-mrelax</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmrelax-command_002dline-option_002c-V850"><code>-mrelax</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmrelax-option_002c-RISC_002dV">‘<samp>-mrelax</samp>’ option, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmrelax_002drelocations_003d-option_002c-i386">‘<samp>-mrelax-relocations=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmrelax_002drelocations_003d-option_002c-x86_002d64">‘<samp>-mrelax-relocations=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmrh850_002dabi-command_002dline-option_002c-V850"><code>-mrh850-abi</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmrmw-command_002dline-option_002c-AVR"><code>-mrmw</code> command-line option, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmrx_002dabi">‘<samp>-mrx-abi</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmshared-option_002c-i386">‘<samp>-mshared</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmshared-option_002c-x86_002d64">‘<samp>-mshared</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmshort">‘<samp>-mshort</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmshort-1">‘<samp>-mshort</samp>’</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmshort_002ddouble">‘<samp>-mshort-double</samp>’</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmshort_002ddouble-1">‘<samp>-mshort-double</samp>’</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmsign_002dextend_002denabled-command_002dline-option_002c-LM32"><code>-msign-extend-enabled</code> command-line option, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmsmall_002ddata_002dlimit">‘<samp>-msmall-data-limit</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmsoft_002dfloat-command_002dline-option_002c-V850"><code>-msoft-float</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmspfp-command_002dline-option_002c-ARC"><code>-mspfp</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmspl">-mspl</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmsse_002dcheck_003d-option_002c-i386">‘<samp>-msse-check=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmsse_002dcheck_003d-option_002c-x86_002d64">‘<samp>-msse-check=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmsse2avx-option_002c-i386">‘<samp>-msse2avx</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmsse2avx-option_002c-x86_002d64">‘<samp>-msse2avx</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmsym32">-msym32</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmsyntax_003d-option_002c-i386">‘<samp>-msyntax=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmsyntax_003d-option_002c-x86_002d64">‘<samp>-msyntax=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmt11">-mt11</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmthumb-command_002dline-option_002c-ARM"><code>-mthumb</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmthumb_002dinterwork-command_002dline-option_002c-ARM"><code>-mthumb-interwork</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmtune_003d-option_002c-i386">‘<samp>-mtune=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmtune_003d-option_002c-x86_002d64">‘<samp>-mtune=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmtune_003darch-command_002dline-option_002c-Visium"><code>-mtune=<var>arch</var></code> command-line option, Visium</a>:</td><td> </td><td valign="top"><a href="#Visium-Options">Visium Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmuse_002dconventional_002dsection_002dnames">‘<samp>-muse-conventional-section-names</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmuse_002drenesas_002dsection_002dnames">‘<samp>-muse-renesas-section-names</samp>’</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmuse_002dunaligned_002dvector_002dmove-option_002c-i386">‘<samp>-muse-unaligned-vector-move</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmuse_002dunaligned_002dvector_002dmove-option_002c-x86_002d64">‘<samp>-muse-unaligned-vector-move</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmuser_002denabled-command_002dline-option_002c-LM32"><code>-muser-enabled</code> command-line option, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmv850-command_002dline-option_002c-V850"><code>-mv850</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmv850any-command_002dline-option_002c-V850"><code>-mv850any</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmv850e-command_002dline-option_002c-V850"><code>-mv850e</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmv850e1-command_002dline-option_002c-V850"><code>-mv850e1</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmv850e2-command_002dline-option_002c-V850"><code>-mv850e2</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmv850e2v3-command_002dline-option_002c-V850"><code>-mv850e2v3</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmv850e2v4-command_002dline-option_002c-V850"><code>-mv850e2v4</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmv850e3v5-command_002dline-option_002c-V850"><code>-mv850e3v5</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmverbose_002derror-command_002dline-option_002c-AArch64"><code>-mverbose-error</code> command-line option, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmvexwig_003d-option_002c-i386">‘<samp>-mvexwig=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmvexwig_003d-option_002c-x86_002d64">‘<samp>-mvexwig=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmvxworks_002dpic-option_002c-MIPS"><samp>-mvxworks-pic</samp> option, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmwarn_002dareg_002dzero-option_002c-s390">‘<samp>-mwarn-areg-zero</samp>’ option, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmwarn_002ddeprecated-command_002dline-option_002c-ARM"><code>-mwarn-deprecated</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmwarn_002dsyms-command_002dline-option_002c-ARM"><code>-mwarn-syms</code> command-line option, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmx86_002dused_002dnote_003d-option_002c-i386">‘<samp>-mx86-used-note=</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmx86_002dused_002dnote_003d-option_002c-x86_002d64">‘<samp>-mx86-used-note=</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dmzarch-option_002c-s390">‘<samp>-mzarch</samp>’ option, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005d68851-command_002dline-option_002c-M680x0">‘<samp>-m[no-]68851</samp>’ command-line option, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005d68881-command_002dline-option_002c-M680x0">‘<samp>-m[no-]68881</samp>’ command-line option, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005ddiv-command_002dline-option_002c-M680x0">‘<samp>-m[no-]div</samp>’ command-line option, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005demac-command_002dline-option_002c-M680x0">‘<samp>-m[no-]emac</samp>’ command-line option, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005dfloat-command_002dline-option_002c-M680x0">‘<samp>-m[no-]float</samp>’ command-line option, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005dmac-command_002dline-option_002c-M680x0">‘<samp>-m[no-]mac</samp>’ command-line option, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005dusp-command_002dline-option_002c-M680x0">‘<samp>-m[no-]usp</samp>’ command-line option, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dN-command_002dline-option_002c-CRIS"><samp>-N</samp> command-line option, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dnIp-option_002c-M32RX">‘<samp>-nIp</samp>’ option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dno_002dbitinst_002c-M32R2">‘<samp>-no-bitinst</samp>’, M32R2</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dno_002dignore_002dparallel_002dconflicts-option_002c-M32RX">‘<samp>-no-ignore-parallel-conflicts</samp>’ option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dno_002dmdebug-command_002dline-option_002c-Alpha"><code>-no-mdebug</code> command-line option, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dno_002dparallel-option_002c-M32RX"><code>-no-parallel</code> option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dno_002dwarn_002dexplicit_002dparallel_002dconflicts-option_002c-M32RX">‘<samp>-no-warn-explicit-parallel-conflicts</samp>’ option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dno_002dwarn_002dunmatched_002dhigh-option_002c-M32R">‘<samp>-no-warn-unmatched-high</samp>’ option, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dnocpp-ignored-_0028MIPS_0029"><code>-nocpp</code> ignored (MIPS)</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dnoreplace-command_002dline-option_002c-Alpha"><code>-noreplace</code> command-line option, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002do"><code>-o</code></a>:</td><td> </td><td valign="top"><a href="#o">o</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dO-option_002c-i386">‘<samp>-O</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dO-option_002c-M32RX"><code>-O</code> option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dO-option_002c-x86_002d64">‘<samp>-O</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dO0-option_002c-i386">‘<samp>-O0</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dO0-option_002c-x86_002d64">‘<samp>-O0</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dO1-option_002c-i386">‘<samp>-O1</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dO1-option_002c-x86_002d64">‘<samp>-O1</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dO2-option_002c-i386">‘<samp>-O2</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dO2-option_002c-x86_002d64">‘<samp>-O2</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dOs-option_002c-i386">‘<samp>-Os</samp>’ option, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dOs-option_002c-x86_002d64">‘<samp>-Os</samp>’ option, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dparallel-option_002c-M32RX"><code>-parallel</code> option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dR"><code>-R</code></a>:</td><td> </td><td valign="top"><a href="#R">R</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002drelax-command_002dline-option_002c-Alpha"><code>-relax</code> command-line option, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dreplace-command_002dline-option_002c-Alpha"><code>-replace</code> command-line option, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dS_002c-ignored-on-VAX"><code>-S</code>, ignored on VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dsdcc-command_002dline-option_002c-Z80"><code>-sdcc</code> command-line option, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dT_002c-ignored-on-VAX"><code>-T</code>, ignored on VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dt_002c-ignored-on-VAX"><code>-t</code>, ignored on VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dv"><code>-v</code></a>:</td><td> </td><td valign="top"><a href="#v">v</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dV_002c-redundant-on-VAX"><code>-V</code>, redundant on VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dversion"><code>-version</code></a>:</td><td> </td><td valign="top"><a href="#v">v</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dW"><code>-W</code></a>:</td><td> </td><td valign="top"><a href="#W">W</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dwarn_002dexplicit_002dparallel_002dconflicts-option_002c-M32RX">‘<samp>-warn-explicit-parallel-conflicts</samp>’ option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dwarn_002dunmatched_002dhigh-option_002c-M32R">‘<samp>-warn-unmatched-high</samp>’ option, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dWnp-option_002c-M32RX">‘<samp>-Wnp</samp>’ option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dWnuh-option_002c-M32RX">‘<samp>-Wnuh</samp>’ option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dWp-option_002c-M32RX">‘<samp>-Wp</samp>’ option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dwsigned_005foverflow-command_002dline-option_002c-V850"><code>-wsigned_overflow</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dWuh-option_002c-M32RX">‘<samp>-Wuh</samp>’ option, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dwunsigned_005foverflow-command_002dline-option_002c-V850"><code>-wunsigned_overflow</code> command-line option, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dx-command_002dline-option_002c-MMIX">‘<samp>-x</samp>’ command-line option, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dz8001-command_002dline-option_002c-Z8000"><code>-z8001</code> command-line option, Z8000</a>:</td><td> </td><td valign="top"><a href="#Z8000-Options">Z8000 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002dz8002-command_002dline-option_002c-Z8000"><code>-z8002</code> command-line option, Z8000</a>:</td><td> </td><td valign="top"><a href="#Z8000-Options">Z8000 Options</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-6">.</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002e-_0028symbol_0029"><code>.</code> (symbol)</a>:</td><td> </td><td valign="top"><a href="#Dot">Dot</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ealign-directive_002c-ARM"><code>.align</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ealign-directive_002c-TILE_002dGx"><code>.align</code> directive, TILE-Gx</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Directives">TILE-Gx Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ealign-directive_002c-TILEPro"><code>.align</code> directive, TILEPro</a>:</td><td> </td><td valign="top"><a href="#TILEPro-Directives">TILEPro Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eallow_005fsuspicious_005fbundles-directive_002c-TILE_002dGx"><code>.allow_suspicious_bundles</code> directive, TILE-Gx</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Directives">TILE-Gx Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eallow_005fsuspicious_005fbundles-directive_002c-TILEPro"><code>.allow_suspicious_bundles</code> directive, TILEPro</a>:</td><td> </td><td valign="top"><a href="#TILEPro-Directives">TILEPro Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002earch-directive_002c-AArch64"><code>.arch</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002earch-directive_002c-ARM"><code>.arch</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002earch-directive_002c-TIC6X"><code>.arch</code> directive, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002earch_005fextension-directive_002c-AArch64"><code>.arch_extension</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002earch_005fextension-directive_002c-ARM"><code>.arch_extension</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002earc_005fattribute-directive_002c-ARC"><code>.arc_attribute</code> directive, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002earm-directive_002c-ARM"><code>.arm</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eassume-directive_002c-Z80"><code>.assume</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eattribute-directive_002c-RISC_002dV"><code>.attribute</code> directive, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ebig-directive_002c-M32RX"><code>.big</code> directive, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ebss-directive_002c-AArch64"><code>.bss</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ebss-directive_002c-ARM"><code>.bss</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ec6xabi_005fattribute-directive_002c-TIC6X"><code>.c6xabi_attribute</code> directive, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ecantunwind-directive_002c-ARM"><code>.cantunwind</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ecantunwind-directive_002c-TIC6X"><code>.cantunwind</code> directive, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ecfi_005fb_005fkey_005fframe-directive_002c-AArch64"><code>.cfi_b_key_frame</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ecode-directive_002c-ARM"><code>.code</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ecpu-directive_002c-AArch64"><code>.cpu</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ecpu-directive_002c-ARM"><code>.cpu</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002edn-and-_002eqn-directives_002c-ARM"><code>.dn</code> and <code>.qn</code> directives, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002edword-directive_002c-AArch64"><code>.dword</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eeabi_005fattribute-directive_002c-ARM"><code>.eabi_attribute</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eehtype-directive_002c-TIC6X"><code>.ehtype</code> directive, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eendp-directive_002c-TIC6X"><code>.endp</code> directive, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eeven-directive_002c-AArch64"><code>.even</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eeven-directive_002c-ARM"><code>.even</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eextend-directive_002c-ARM"><code>.extend</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002efloat16-directive_002c-AArch64"><code>.float16</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002efloat16-directive_002c-ARM"><code>.float16</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002efloat16_005fformat-directive_002c-ARM"><code>.float16_format</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002efnend-directive_002c-ARM"><code>.fnend</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002efnstart-directive_002c-ARM"><code>.fnstart</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eforce_005fthumb-directive_002c-ARM"><code>.force_thumb</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002efpu-directive_002c-ARM"><code>.fpu</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eglobal"><code><code>.global</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-insn">MIPS insn</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002egnu_005fattribute-4_002c-n-directive_002c-MIPS"><code>.gnu_attribute 4, <var>n</var></code> directive, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS-FP-ABI-History">MIPS FP ABI History</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002egnu_005fattribute-Tag_005fGNU_005fMIPS_005fABI_005fFP_002c-n-directive_002c-MIPS"><code>.gnu_attribute Tag_GNU_MIPS_ABI_FP, <var>n</var></code> directive, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS-FP-ABI-History">MIPS FP ABI History</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ehandlerdata-directive_002c-ARM"><code>.handlerdata</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ehandlerdata-directive_002c-TIC6X"><code>.handlerdata</code> directive, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002einsn"><code><code>.insn</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-insn">MIPS insn</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002einsn-directive_002c-s390"><code>.insn</code> directive, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002einst-directive_002c-AArch64"><code>.inst</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002einst-directive_002c-ARM"><code>.inst</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eldouble-directive_002c-ARM"><code>.ldouble</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002elittle-directive_002c-M32RX"><code>.little</code> directive, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002elong-directive_002c-s390"><code>.long</code> directive, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eltorg-directive_002c-AArch64"><code>.ltorg</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eltorg-directive_002c-ARM"><code>.ltorg</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eltorg-directive_002c-s390"><code>.ltorg</code> directive, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002em32r-directive_002c-M32R"><code>.m32r</code> directive, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002em32r2-directive_002c-M32R2"><code>.m32r2</code> directive, M32R2</a>:</td><td> </td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002em32rx-directive_002c-M32RX"><code>.m32rx</code> directive, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002emachine-directive_002c-s390"><code>.machine</code> directive, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002emachinemode-directive_002c-s390"><code>.machinemode</code> directive, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002emodule"><code><code>.module</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-assembly-options">MIPS assembly options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002emodule-fp_003dnn-directive_002c-MIPS"><code>.module fp=<var>nn</var></code> directive, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS-FP-ABI-Selection">MIPS FP ABI Selection</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002emovsp-directive_002c-ARM"><code>.movsp</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002enan-directive_002c-MIPS"><code>.nan</code> directive, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS-NaN-Encodings">MIPS NaN Encodings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002enocmp-directive_002c-TIC6X"><code>.nocmp</code> directive, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eno_005fpointers-directive_002c-XStormy16"><code>.no_pointers</code> directive, XStormy16</a>:</td><td> </td><td valign="top"><a href="#XStormy16-Directives">XStormy16 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eo"><code>.o</code></a>:</td><td> </td><td valign="top"><a href="#Object">Object</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eobject_005farch-directive_002c-ARM"><code>.object_arch</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002epacked-directive_002c-ARM"><code>.packed</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002epad-directive_002c-ARM"><code>.pad</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eparam-on-HPPA"><code>.param</code> on HPPA</a>:</td><td> </td><td valign="top"><a href="#HPPA-Directives">HPPA Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002epersonality-directive_002c-ARM"><code>.personality</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002epersonality-directive_002c-TIC6X"><code>.personality</code> directive, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002epersonalityindex-directive_002c-ARM"><code>.personalityindex</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002epersonalityindex-directive_002c-TIC6X"><code>.personalityindex</code> directive, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002epool-directive_002c-AArch64"><code>.pool</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002epool-directive_002c-ARM"><code>.pool</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002equad-directive_002c-s390"><code>.quad</code> directive, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ereq-directive_002c-AArch64"><code>.req</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ereq-directive_002c-ARM"><code>.req</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002erequire_005fcanonical_005freg_005fnames-directive_002c-TILE_002dGx"><code>.require_canonical_reg_names</code> directive, TILE-Gx</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Directives">TILE-Gx Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002erequire_005fcanonical_005freg_005fnames-directive_002c-TILEPro"><code>.require_canonical_reg_names</code> directive, TILEPro</a>:</td><td> </td><td valign="top"><a href="#TILEPro-Directives">TILEPro Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002esave-directive_002c-ARM"><code>.save</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002escomm-directive_002c-TIC6X"><code>.scomm</code> directive, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002esecrel32-directive_002c-ARM"><code>.secrel32</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-arch_003dcpu"><code><code>.set arch=<var>cpu</var></code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ISA">MIPS ISA</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-at"><code><code>.set at</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-Macros">MIPS Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-at_003dreg"><code><code>.set at=<var>reg</var></code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-Macros">MIPS Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-autoextend"><code><code>.set autoextend</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-autoextend">MIPS autoextend</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-crc"><code><code>.set crc</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-doublefloat"><code><code>.set doublefloat</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-dsp"><code><code>.set dsp</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-dspr2"><code><code>.set dspr2</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-dspr3"><code><code>.set dspr3</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-ginv"><code><code>.set ginv</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-hardfloat"><code><code>.set hardfloat</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-insn32"><code><code>.set insn32</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-assembly-options">MIPS assembly options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-loongson_002dcam"><code><code>.set loongson-cam</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-loongson_002dext"><code><code>.set loongson-ext</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-loongson_002dext2"><code><code>.set loongson-ext2</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-loongson_002dmmi"><code><code>.set loongson-mmi</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-macro"><code><code>.set macro</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-Macros">MIPS Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-mcu"><code><code>.set mcu</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-mdmx"><code><code>.set mdmx</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-mips16e2"><code><code>.set mips16e2</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-mips3d"><code><code>.set mips3d</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-mipsn"><code><code>.set mips<var>n</var></code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ISA">MIPS ISA</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-msa"><code><code>.set msa</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-mt"><code><code>.set mt</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-noat"><code><code>.set noat</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-Macros">MIPS Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-noautoextend"><code><code>.set noautoextend</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-autoextend">MIPS autoextend</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-nocrc"><code><code>.set nocrc</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-nodsp"><code><code>.set nodsp</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-nodspr2"><code><code>.set nodspr2</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-nodspr3"><code><code>.set nodspr3</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-noginv"><code><code>.set noginv</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-noinsn32"><code><code>.set noinsn32</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-assembly-options">MIPS assembly options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-noloongson_002dcam"><code><code>.set noloongson-cam</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-noloongson_002dext"><code><code>.set noloongson-ext</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-noloongson_002dext2"><code><code>.set noloongson-ext2</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-noloongson_002dmmi"><code><code>.set noloongson-mmi</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-nomacro"><code><code>.set nomacro</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-Macros">MIPS Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-nomcu"><code><code>.set nomcu</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-nomdmx"><code><code>.set nomdmx</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-nomips16e2"><code><code>.set nomips16e2</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-nomips3d"><code><code>.set nomips3d</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-nomsa"><code><code>.set nomsa</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-nomt"><code><code>.set nomt</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-nosmartmips"><code><code>.set nosmartmips</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-nosym32"><code><code>.set nosym32</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-Symbol-Sizes">MIPS Symbol Sizes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-novirt"><code><code>.set novirt</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-noxpa"><code><code>.set noxpa</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-pop"><code><code>.set pop</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-Option-Stack">MIPS Option Stack</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-push"><code><code>.set push</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-Option-Stack">MIPS Option Stack</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-singlefloat"><code><code>.set singlefloat</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-smartmips"><code><code>.set smartmips</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-softfloat"><code><code>.set softfloat</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-sym32"><code><code>.set sym32</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-Symbol-Sizes">MIPS Symbol Sizes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-virt"><code><code>.set virt</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eset-xpa"><code><code>.set xpa</code></code></a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002esetfp-directive_002c-ARM"><code>.setfp</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eshort-directive_002c-s390"><code>.short</code> directive, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002esyntax-directive_002c-ARM"><code>.syntax</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ethumb-directive_002c-ARM"><code>.thumb</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ethumb_005ffunc-directive_002c-ARM"><code>.thumb_func</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ethumb_005fset-directive_002c-ARM"><code>.thumb_set</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002etlsdescadd-directive_002c-AArch64"><code>.tlsdescadd</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002etlsdesccall-directive_002c-AArch64"><code>.tlsdesccall</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002etlsdescldr-directive_002c-AArch64"><code>.tlsdescldr</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002etlsdescseq-directive_002c-ARM"><code>.tlsdescseq</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eunreq-directive_002c-AArch64"><code>.unreq</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eunreq-directive_002c-ARM"><code>.unreq</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002eunwind_005fraw-directive_002c-ARM"><code>.unwind_raw</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ev850-directive_002c-V850"><code>.v850</code> directive, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ev850e-directive_002c-V850"><code>.v850e</code> directive, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ev850e1-directive_002c-V850"><code>.v850e1</code> directive, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ev850e2-directive_002c-V850"><code>.v850e2</code> directive, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ev850e2v3-directive_002c-V850"><code>.v850e2v3</code> directive, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ev850e2v4-directive_002c-V850"><code>.v850e2v4</code> directive, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ev850e3v5-directive_002c-V850"><code>.v850e3v5</code> directive, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002evariant_005fpcs-directive_002c-AArch64"><code>.variant_pcs</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002evsave-directive_002c-ARM"><code>.vsave</code> directive, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002exword-directive_002c-AArch64"><code>.xword</code> directive, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ez8001"><code>.z8001</code></a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_002ez8002"><code>.z8002</code></a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-7">1</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-16_002dbit-code_002c-i386">16-bit code, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-16bit_005fpointers-directive_002c-XStormy16"><code>16bit_pointers</code> directive, XStormy16</a>:</td><td> </td><td valign="top"><a href="#XStormy16-Directives">XStormy16 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-16byte-directive_002c-Nios-II"><code>16byte</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-16byte-directive_002c-PRU"><code>16byte</code> directive, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-8">2</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-2byte-directive"><code>2byte</code> directive</a>:</td><td> </td><td valign="top"><a href="#g_t2byte">2byte</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-2byte-directive_002c-Nios-II"><code>2byte</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-2byte-directive_002c-PRU"><code>2byte</code> directive, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-9">3</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-32bit_005fpointers-directive_002c-XStormy16"><code>32bit_pointers</code> directive, XStormy16</a>:</td><td> </td><td valign="top"><a href="#XStormy16-Directives">XStormy16 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-3DNow_0021_002c-i386">3DNow!, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dSIMD">i386-SIMD</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-3DNow_0021_002c-x86_002d64">3DNow!, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dSIMD">i386-SIMD</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-10">4</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-430-support">430 support</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dDependent">MSP430-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-4byte-directive"><code>4byte</code> directive</a>:</td><td> </td><td valign="top"><a href="#g_t4byte">4byte</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-4byte-directive_002c-Nios-II"><code>4byte</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-4byte-directive_002c-PRU"><code>4byte</code> directive, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-11">8</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-8byte-directive"><code>8byte</code> directive</a>:</td><td> </td><td valign="top"><a href="#g_t8byte">8byte</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-8byte-directive_002c-Nios-II"><code>8byte</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-8byte-directive_002c-PRU"><code>8byte</code> directive, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-12">:</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_003a-_0028label_0029"><code>:</code> (label)</a>:</td><td> </td><td valign="top"><a href="#Statements">Statements</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-13">@</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0040gotoff_0028symbol_0029_002c-ARC-modifier">@gotoff(<var>symbol</var>), ARC modifier</a>:</td><td> </td><td valign="top"><a href="#ARC-Modifiers">ARC Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0040gotpc_0028symbol_0029_002c-ARC-modifier">@gotpc(<var>symbol</var>), ARC modifier</a>:</td><td> </td><td valign="top"><a href="#ARC-Modifiers">ARC Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0040hi-pseudo_002dop_002c-XStormy16"><code>@hi</code> pseudo-op, XStormy16</a>:</td><td> </td><td valign="top"><a href="#XStormy16-Opcodes">XStormy16 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0040lo-pseudo_002dop_002c-XStormy16"><code>@lo</code> pseudo-op, XStormy16</a>:</td><td> </td><td valign="top"><a href="#XStormy16-Opcodes">XStormy16 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0040pcl_0028symbol_0029_002c-ARC-modifier">@pcl(<var>symbol</var>), ARC modifier</a>:</td><td> </td><td valign="top"><a href="#ARC-Modifiers">ARC Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0040plt_0028symbol_0029_002c-ARC-modifier">@plt(<var>symbol</var>), ARC modifier</a>:</td><td> </td><td valign="top"><a href="#ARC-Modifiers">ARC Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0040sda_0028symbol_0029_002c-ARC-modifier">@sda(<var>symbol</var>), ARC modifier</a>:</td><td> </td><td valign="top"><a href="#ARC-Modifiers">ARC Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_0040word-modifier_002c-D10V">@word modifier, D10V</a>:</td><td> </td><td valign="top"><a href="#D10V_002dWord">D10V-Word</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_symbol-14">_</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_005f-opcode-prefix">_ opcode prefix</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Opcodes">Xtensa Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_005f_005fDYNAMIC_005f_005f_002c-ARC-pre_002ddefined-symbol">__DYNAMIC__, ARC pre-defined symbol</a>:</td><td> </td><td valign="top"><a href="#ARC-Symbols">ARC Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-_005f_005fGLOBAL_005fOFFSET_005fTABLE_005f_005f_002c-ARC-pre_002ddefined-symbol">__GLOBAL_OFFSET_TABLE__, ARC pre-defined symbol</a>:</td><td> </td><td valign="top"><a href="#ARC-Symbols">ARC Symbols</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-A">A</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-a_002eout"><code>a.out</code></a>:</td><td> </td><td valign="top"><a href="#Object">Object</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-a_002eout-symbol-attributes"><code>a.out</code> symbol attributes</a>:</td><td> </td><td valign="top"><a href="#a_002eout-Symbols">a.out Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AArch64-floating-point-_0028IEEE_0029">AArch64 floating point (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#AArch64-Floating-Point">AArch64 Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AArch64-immediate-character">AArch64 immediate character</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AArch64-line-comment-character">AArch64 line comment character</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AArch64-line-separator">AArch64 line separator</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AArch64-machine-directives">AArch64 machine directives</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AArch64-opcodes">AArch64 opcodes</a>:</td><td> </td><td valign="top"><a href="#AArch64-Opcodes">AArch64 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AArch64-options-_0028none_0029">AArch64 options (none)</a>:</td><td> </td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AArch64-register-names">AArch64 register names</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dRegs">AArch64-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AArch64-relocations">AArch64 relocations</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dRelocations">AArch64-Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AArch64-support">AArch64 support</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dDependent">AArch64-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-abort-directive"><code>abort</code> directive</a>:</td><td> </td><td valign="top"><a href="#Abort">Abort</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ABORT-directive"><code>ABORT</code> directive</a>:</td><td> </td><td valign="top"><a href="#ABORT-_0028COFF_0029">ABORT (COFF)</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-absolute-section">absolute section</a>:</td><td> </td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-absolute_002dliterals-directive"><code>absolute-literals</code> directive</a>:</td><td> </td><td valign="top"><a href="#Absolute-Literals-Directive">Absolute Literals Directive</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ADDI-instructions_002c-relaxation"><code>ADDI</code> instructions, relaxation</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-addition_002c-permitted-arguments">addition, permitted arguments</a>:</td><td> </td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-addresses">addresses</a>:</td><td> </td><td valign="top"><a href="#Expressions">Expressions</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-addresses_002c-format-of">addresses, format of</a>:</td><td> </td><td valign="top"><a href="#Secs-Background">Secs Background</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-D10V">addressing modes, D10V</a>:</td><td> </td><td valign="top"><a href="#D10V_002dAddressing">D10V-Addressing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-D30V">addressing modes, D30V</a>:</td><td> </td><td valign="top"><a href="#D30V_002dAddressing">D30V-Addressing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-H8_002f300">addressing modes, H8/300</a>:</td><td> </td><td valign="top"><a href="#H8_002f300_002dAddressing">H8/300-Addressing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-M680x0">addressing modes, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-M68HC11">addressing modes, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-S12Z">addressing modes, S12Z</a>:</td><td> </td><td valign="top"><a href="#S12Z-Addressing-Modes">S12Z Addressing Modes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-SH">addressing modes, SH</a>:</td><td> </td><td valign="top"><a href="#SH_002dAddressing">SH-Addressing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-XGATE">addressing modes, XGATE</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-Z8000">addressing modes, Z8000</a>:</td><td> </td><td valign="top"><a href="#Z8000_002dAddressing">Z8000-Addressing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ADR-reg_002c_003clabel_003e-pseudo-op_002c-ARM"><code>ADR reg,<label></code> pseudo op, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Opcodes">ARM Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ADRL-reg_002c_003clabel_003e-pseudo-op_002c-ARM"><code>ADRL reg,<label></code> pseudo op, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Opcodes">ARM Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ADRP_002c-ADD_002c-LDR_002fSTR-group-relocations_002c-AArch64">ADRP, ADD, LDR/STR group relocations, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dRelocations">AArch64-Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-advancing-location-counter">advancing location counter</a>:</td><td> </td><td valign="top"><a href="#Org">Org</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-align-directive"><code>align</code> directive</a>:</td><td> </td><td valign="top"><a href="#Align">Align</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-align-directive-1"><code>align</code> directive</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-align-directive_002c-Nios-II"><code>align</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-align-directive_002c-OpenRISC"><code>align</code> directive, OpenRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-align-directive_002c-PRU"><code>align</code> directive, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-align-directive_002c-SPARC"><code>align</code> directive, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-align-directive_002c-TIC54X"><code>align</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-aligned-instruction-bundle">aligned instruction bundle</a>:</td><td> </td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-alignment-for-NEON-instructions">alignment for NEON instructions</a>:</td><td> </td><td valign="top"><a href="#ARM_002dNeon_002dAlignment">ARM-Neon-Alignment</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-alignment-of-branch-targets">alignment of branch targets</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Automatic-Alignment">Xtensa Automatic Alignment</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-alignment-of-LOOP-instructions">alignment of <code>LOOP</code> instructions</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Automatic-Alignment">Xtensa Automatic Alignment</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Alpha-floating-point-_0028IEEE_0029">Alpha floating point (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#Alpha-Floating-Point">Alpha Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Alpha-line-comment-character">Alpha line comment character</a>:</td><td> </td><td valign="top"><a href="#Alpha_002dChars">Alpha-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Alpha-line-separator">Alpha line separator</a>:</td><td> </td><td valign="top"><a href="#Alpha_002dChars">Alpha-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Alpha-notes">Alpha notes</a>:</td><td> </td><td valign="top"><a href="#Alpha-Notes">Alpha Notes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Alpha-options">Alpha options</a>:</td><td> </td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Alpha-registers">Alpha registers</a>:</td><td> </td><td valign="top"><a href="#Alpha_002dRegs">Alpha-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Alpha-relocations">Alpha relocations</a>:</td><td> </td><td valign="top"><a href="#Alpha_002dRelocs">Alpha-Relocs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Alpha-support">Alpha support</a>:</td><td> </td><td valign="top"><a href="#Alpha_002dDependent">Alpha-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Alpha-Syntax">Alpha Syntax</a>:</td><td> </td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Alpha_002donly-directives">Alpha-only directives</a>:</td><td> </td><td valign="top"><a href="#Alpha-Directives">Alpha Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Altera-Nios-II-support">Altera Nios II support</a>:</td><td> </td><td valign="top"><a href="#NiosII_002dDependent">NiosII-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-altered-difference-tables">altered difference tables</a>:</td><td> </td><td valign="top"><a href="#Word">Word</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-alternate-syntax-for-the-680x0">alternate syntax for the 680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dMoto_002dSyntax">M68K-Moto-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-Branch-Target-Address">ARC Branch Target Address</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-BTA-saved-on-exception-entry">ARC BTA saved on exception entry</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-Build-configuration-for_003a-BTA-Registers">ARC Build configuration for: BTA Registers</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-Build-configuration-for_003a-Core-Registers">ARC Build configuration for: Core Registers</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-Build-configuration-for_003a-Interrupts">ARC Build configuration for: Interrupts</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-Build-Configuration-Registers-Version">ARC Build Configuration Registers Version</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-C-preprocessor-macro-separator">ARC C preprocessor macro separator</a>:</td><td> </td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-core-general-registers">ARC core general registers</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-DCCM-RAM-Configuration-Register">ARC DCCM RAM Configuration Register</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-Exception-Cause-Register">ARC Exception Cause Register</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-Exception-Return-Address">ARC Exception Return Address</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-extension-core-registers">ARC extension core registers</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-frame-pointer">ARC frame pointer</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-global-pointer">ARC global pointer</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-interrupt-link-register">ARC interrupt link register</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-Interrupt-Vector-Base-address">ARC Interrupt Vector Base address</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-level-1-interrupt-link-register">ARC level 1 interrupt link register</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-level-2-interrupt-link-register">ARC level 2 interrupt link register</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-line-comment-character">ARC line comment character</a>:</td><td> </td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-line-separator">ARC line separator</a>:</td><td> </td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-link-register">ARC link register</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-loop-counter">ARC loop counter</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-machine-directives">ARC machine directives</a>:</td><td> </td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-opcodes">ARC opcodes</a>:</td><td> </td><td valign="top"><a href="#ARC-Opcodes">ARC Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-options">ARC options</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-Processor-Identification-register">ARC Processor Identification register</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-Program-Counter">ARC Program Counter</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-register-name-prefix-character">ARC register name prefix character</a>:</td><td> </td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-register-names">ARC register names</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-Saved-User-Stack-Pointer">ARC Saved User Stack Pointer</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-stack-pointer">ARC stack pointer</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-Status-register">ARC Status register</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-STATUS32-saved-on-exception">ARC STATUS32 saved on exception</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-Stored-STATUS32-register-on-entry-to-level-P0-interrupts">ARC Stored STATUS32 register on entry to level P0 interrupts</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-support">ARC support</a>:</td><td> </td><td valign="top"><a href="#ARC_002dDependent">ARC-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-symbol-prefix-character">ARC symbol prefix character</a>:</td><td> </td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARC-word-aligned-program-counter">ARC word aligned program counter</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-arch-directive_002c-i386">arch directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dArch">i386-Arch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-arch-directive_002c-M680x0"><code>arch</code> directive, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-arch-directive_002c-MSP-430"><code>arch</code> directive, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-arch-directive_002c-x86_002d64">arch directive, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dArch">i386-Arch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-architecture-options_002c-IP2022">architecture options, IP2022</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-architecture-options_002c-IP2K">architecture options, IP2K</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-architecture-options_002c-M16C">architecture options, M16C</a>:</td><td> </td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-architecture-options_002c-M32C">architecture options, M32C</a>:</td><td> </td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-architecture-options_002c-M32R">architecture options, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-architecture-options_002c-M32R2">architecture options, M32R2</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-architecture-options_002c-M32RX">architecture options, M32RX</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-architecture-options_002c-M680x0">architecture options, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Architecture-variant-option_002c-CRIS">Architecture variant option, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-architectures_002c-Meta">architectures, Meta</a>:</td><td> </td><td valign="top"><a href="#Meta-Options">Meta Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-architectures_002c-PowerPC">architectures, PowerPC</a>:</td><td> </td><td valign="top"><a href="#PowerPC_002dOpts">PowerPC-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-architectures_002c-SCORE">architectures, SCORE</a>:</td><td> </td><td valign="top"><a href="#SCORE_002dOpts">SCORE-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-architectures_002c-SPARC">architectures, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-arguments-for-addition">arguments for addition</a>:</td><td> </td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-arguments-for-subtraction">arguments for subtraction</a>:</td><td> </td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-arguments-in-expressions">arguments in expressions</a>:</td><td> </td><td valign="top"><a href="#Arguments">Arguments</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-arithmetic-functions">arithmetic functions</a>:</td><td> </td><td valign="top"><a href="#Operators">Operators</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-arithmetic-operands">arithmetic operands</a>:</td><td> </td><td valign="top"><a href="#Arguments">Arguments</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARM-data-relocations">ARM data relocations</a>:</td><td> </td><td valign="top"><a href="#ARM_002dRelocations">ARM-Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARM-floating-point-_0028IEEE_0029">ARM floating point (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#ARM-Floating-Point">ARM Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARM-identifiers">ARM identifiers</a>:</td><td> </td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARM-immediate-character">ARM immediate character</a>:</td><td> </td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARM-line-comment-character">ARM line comment character</a>:</td><td> </td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARM-line-separator">ARM line separator</a>:</td><td> </td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARM-machine-directives">ARM machine directives</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARM-opcodes">ARM opcodes</a>:</td><td> </td><td valign="top"><a href="#ARM-Opcodes">ARM Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARM-options-_0028none_0029">ARM options (none)</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARM-register-names">ARM register names</a>:</td><td> </td><td valign="top"><a href="#ARM_002dRegs">ARM-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ARM-support">ARM support</a>:</td><td> </td><td valign="top"><a href="#ARM_002dDependent">ARM-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ascii-directive"><code>ascii</code> directive</a>:</td><td> </td><td valign="top"><a href="#Ascii">Ascii</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-asciz-directive"><code>asciz</code> directive</a>:</td><td> </td><td valign="top"><a href="#Asciz">Asciz</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-asg-directive_002c-TIC54X"><code>asg</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-bugs_002c-reporting">assembler bugs, reporting</a>:</td><td> </td><td valign="top"><a href="#Bug-Reporting">Bug Reporting</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-crash">assembler crash</a>:</td><td> </td><td valign="top"><a href="#Bug-Criteria">Bug Criteria</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-_002e3byte_002c-RX">assembler directive .3byte, RX</a>:</td><td> </td><td valign="top"><a href="#RX_002dDirectives">RX-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-_002earch_002c-CRIS">assembler directive .arch, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-_002edword_002c-CRIS">assembler directive .dword, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-_002efar_002c-M68HC11">assembler directive .far, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-_002efetchalign_002c-RX">assembler directive .fetchalign, RX</a>:</td><td> </td><td valign="top"><a href="#RX_002dDirectives">RX-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-_002einterrupt_002c-M68HC11">assembler directive .interrupt, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-_002emode_002c-M68HC11">assembler directive .mode, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-_002erelax_002c-M68HC11">assembler directive .relax, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-_002esyntax_002c-CRIS">assembler directive .syntax, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-_002exrefb_002c-M68HC11">assembler directive .xrefb, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-BSPEC_002c-MMIX">assembler directive BSPEC, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-BYTE_002c-MMIX">assembler directive BYTE, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-ESPEC_002c-MMIX">assembler directive ESPEC, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-GREG_002c-MMIX">assembler directive GREG, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-IS_002c-MMIX">assembler directive IS, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-LOC_002c-MMIX">assembler directive LOC, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-LOCAL_002c-MMIX">assembler directive LOCAL, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-OCTA_002c-MMIX">assembler directive OCTA, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-PREFIX_002c-MMIX">assembler directive PREFIX, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-TETRA_002c-MMIX">assembler directive TETRA, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directive-WYDE_002c-MMIX">assembler directive WYDE, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-CRIS">assembler directives, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-M68HC11">assembler directives, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-M68HC12">assembler directives, M68HC12</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-MMIX">assembler directives, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-RL78">assembler directives, RL78</a>:</td><td> </td><td valign="top"><a href="#RL78_002dDirectives">RL78-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-RX">assembler directives, RX</a>:</td><td> </td><td valign="top"><a href="#RX_002dDirectives">RX-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-XGATE">assembler directives, XGATE</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dDirectives">XGATE-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-internal-logic-error">assembler internal logic error</a>:</td><td> </td><td valign="top"><a href="#As-Sections">As Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler-version">assembler version</a>:</td><td> </td><td valign="top"><a href="#v">v</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembler_002c-and-linker">assembler, and linker</a>:</td><td> </td><td valign="top"><a href="#Secs-Background">Secs Background</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assembly-listings_002c-enabling">assembly listings, enabling</a>:</td><td> </td><td valign="top"><a href="#a">a</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assigning-values-to-symbols">assigning values to symbols</a>:</td><td> </td><td valign="top"><a href="#Setting-Symbols">Setting Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-assigning-values-to-symbols-1">assigning values to symbols</a>:</td><td> </td><td valign="top"><a href="#Equ">Equ</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-at-register_002c-MIPS"><code>at</code> register, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS-Macros">MIPS Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-attributes_002c-symbol">attributes, symbol</a>:</td><td> </td><td valign="top"><a href="#Symbol-Attributes">Symbol Attributes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-att_005fsyntax-pseudo-op_002c-i386">att_syntax pseudo op, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-att_005fsyntax-pseudo-op_002c-x86_002d64">att_syntax pseudo op, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-auxiliary-attributes_002c-COFF-symbols">auxiliary attributes, COFF symbols</a>:</td><td> </td><td valign="top"><a href="#COFF-Symbols">COFF Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-auxiliary-symbol-information_002c-COFF">auxiliary symbol information, COFF</a>:</td><td> </td><td valign="top"><a href="#Dim">Dim</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AVR-line-comment-character">AVR line comment character</a>:</td><td> </td><td valign="top"><a href="#AVR_002dChars">AVR-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AVR-line-separator">AVR line separator</a>:</td><td> </td><td valign="top"><a href="#AVR_002dChars">AVR-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AVR-modifiers">AVR modifiers</a>:</td><td> </td><td valign="top"><a href="#AVR_002dModifiers">AVR-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AVR-opcode-summary">AVR opcode summary</a>:</td><td> </td><td valign="top"><a href="#AVR-Opcodes">AVR Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AVR-options-_0028none_0029">AVR options (none)</a>:</td><td> </td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AVR-register-names">AVR register names</a>:</td><td> </td><td valign="top"><a href="#AVR_002dRegs">AVR-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-AVR-support">AVR support</a>:</td><td> </td><td valign="top"><a href="#AVR_002dDependent">AVR-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-A_005fDIR-environment-variable_002c-TIC54X">‘<samp>A_DIR</samp>’ environment variable, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dEnv">TIC54X-Env</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-B">B</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-backslash-_0028_005c_005c_0029">backslash (<code>\\</code>)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-backspace-_0028_005cb_0029">backspace (<code>\b</code>)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-balign-directive"><code>balign</code> directive</a>:</td><td> </td><td valign="top"><a href="#Balign">Balign</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-balignl-directive"><code>balignl</code> directive</a>:</td><td> </td><td valign="top"><a href="#Balign">Balign</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-balignw-directive"><code>balignw</code> directive</a>:</td><td> </td><td valign="top"><a href="#Balign">Balign</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bes-directive_002c-TIC54X"><code>bes</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bfloat16-directive_002c-i386"><code>bfloat16</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bfloat16-directive_002c-x86_002d64"><code>bfloat16</code> directive, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-big-endian-output_002c-MIPS">big endian output, MIPS</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-big-endian-output_002c-PJ">big endian output, PJ</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-big_002dendian-output_002c-MIPS">big-endian output, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-big_002dendian-output_002c-TIC6X">big-endian output, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bignums">bignums</a>:</td><td> </td><td valign="top"><a href="#Bignums">Bignums</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-binary-constants_002c-TIC54X">binary constants, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dConstants">TIC54X-Constants</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-binary-files_002c-including">binary files, including</a>:</td><td> </td><td valign="top"><a href="#Incbin">Incbin</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-binary-integers">binary integers</a>:</td><td> </td><td valign="top"><a href="#Integers">Integers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bit-names_002c-IA_002d64">bit names, IA-64</a>:</td><td> </td><td valign="top"><a href="#IA_002d64_002dBits">IA-64-Bits</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bitfields_002c-not-supported-on-VAX">bitfields, not supported on VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dno">VAX-no</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Blackfin-directives">Blackfin directives</a>:</td><td> </td><td valign="top"><a href="#Blackfin-Directives">Blackfin Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Blackfin-options-_0028none_0029">Blackfin options (none)</a>:</td><td> </td><td valign="top"><a href="#Blackfin-Options">Blackfin Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Blackfin-support">Blackfin support</a>:</td><td> </td><td valign="top"><a href="#Blackfin_002dDependent">Blackfin-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Blackfin-syntax">Blackfin syntax</a>:</td><td> </td><td valign="top"><a href="#Blackfin-Syntax">Blackfin Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-block"><code>block</code></a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-BMI_002c-i386">BMI, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dBMI">i386-BMI</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-BMI_002c-x86_002d64">BMI, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dBMI">i386-BMI</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-BPF-line-comment-character">BPF line comment character</a>:</td><td> </td><td valign="top"><a href="#BPF_002dChars">BPF-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-BPF-opcodes">BPF opcodes</a>:</td><td> </td><td valign="top"><a href="#BPF-Opcodes">BPF Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-BPF-options-_0028none_0029">BPF options (none)</a>:</td><td> </td><td valign="top"><a href="#BPF-Options">BPF Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-BPF-register-names">BPF register names</a>:</td><td> </td><td valign="top"><a href="#BPF_002dRegs">BPF-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-BPF-support">BPF support</a>:</td><td> </td><td valign="top"><a href="#BPF_002dDependent">BPF-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-branch-improvement_002c-M680x0">branch improvement, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dBranch">M68K-Branch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-branch-improvement_002c-M68HC11">branch improvement, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dBranch">M68HC11-Branch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-branch-improvement_002c-VAX">branch improvement, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dbranch">VAX-branch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-branch-instructions_002c-relaxation">branch instructions, relaxation</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Branch-Relaxation">Xtensa Branch Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Branch-Target-Address_002c-ARC">Branch Target Address, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-branch-target-alignment">branch target alignment</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Automatic-Alignment">Xtensa Automatic Alignment</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-break-directive_002c-TIC54X"><code>break</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-BSD-syntax">BSD syntax</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bss-directive"><code>bss</code> directive</a>:</td><td> </td><td valign="top"><a href="#Bss">Bss</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-BSS-directive">BSS directive</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bss-directive_002c-TIC54X"><code>bss</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bss-section">bss section</a>:</td><td> </td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bss-section-1">bss section</a>:</td><td> </td><td valign="top"><a href="#bss">bss</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-BTA-saved-on-exception-entry_002c-ARC">BTA saved on exception entry, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bug-criteria">bug criteria</a>:</td><td> </td><td valign="top"><a href="#Bug-Criteria">Bug Criteria</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bug-reports">bug reports</a>:</td><td> </td><td valign="top"><a href="#Bug-Reporting">Bug Reporting</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bugs-in-assembler">bugs in assembler</a>:</td><td> </td><td valign="top"><a href="#Reporting-Bugs">Reporting Bugs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Build-configuration-for_003a-BTA-Registers_002c-ARC">Build configuration for: BTA Registers, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Build-configuration-for_003a-Core-Registers_002c-ARC">Build configuration for: Core Registers, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Build-configuration-for_003a-Interrupts_002c-ARC">Build configuration for: Interrupts, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Build-Configuration-Registers-Version_002c-ARC">Build Configuration Registers Version, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Built_002din-symbols_002c-CRIS">Built-in symbols, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dSymbols">CRIS-Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-builtin-math-functions_002c-TIC54X">builtin math functions, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-builtin-subsym-functions_002c-TIC54X">builtin subsym functions, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bundle">bundle</a>:</td><td> </td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bundle_002dlocked">bundle-locked</a>:</td><td> </td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bundle_005falign_005fmode-directive"><code>bundle_align_mode</code> directive</a>:</td><td> </td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bundle_005flock-directive"><code>bundle_lock</code> directive</a>:</td><td> </td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bundle_005funlock-directive"><code>bundle_unlock</code> directive</a>:</td><td> </td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bus-lock-prefixes_002c-i386">bus lock prefixes, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-bval"><code>bval</code></a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-byte-directive"><code>byte</code> directive</a>:</td><td> </td><td valign="top"><a href="#Byte">Byte</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-byte-directive_002c-TIC54X"><code>byte</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-C">C</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-C-preprocessor-macro-separator_002c-ARC">C preprocessor macro separator, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-C_002dSKY-options">C-SKY options</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-C_002dSKY-support">C-SKY support</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY_002dDependent">C-SKY-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-C54XDSP_005fDIR-environment-variable_002c-TIC54X">‘<samp>C54XDSP_DIR</samp>’ environment variable, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dEnv">TIC54X-Env</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-call-directive_002c-Nios-II"><code>call</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-call-instructions_002c-i386">call instructions, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-call-instructions_002c-relaxation">call instructions, relaxation</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Call-Relaxation">Xtensa Call Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-call-instructions_002c-x86_002d64">call instructions, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-call_005fhiadj-directive_002c-Nios-II"><code>call_hiadj</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-call_005flo-directive_002c-Nios-II"><code>call_lo</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-carriage-return-_0028backslash_002dr_0029">carriage return (<code>backslash-r</code>)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-case-sensitivity_002c-Z80">case sensitivity, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80_002dCase">Z80-Case</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-cfi_005fendproc-directive"><code>cfi_endproc</code> directive</a>:</td><td> </td><td valign="top"><a href="#CFI-directives">CFI directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-cfi_005ffde_005fdata-directive"><code>cfi_fde_data</code> directive</a>:</td><td> </td><td valign="top"><a href="#CFI-directives">CFI directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-cfi_005fpersonality-directive"><code>cfi_personality</code> directive</a>:</td><td> </td><td valign="top"><a href="#CFI-directives">CFI directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-cfi_005fpersonality_005fid-directive"><code>cfi_personality_id</code> directive</a>:</td><td> </td><td valign="top"><a href="#CFI-directives">CFI directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-cfi_005fsections-directive"><code>cfi_sections</code> directive</a>:</td><td> </td><td valign="top"><a href="#CFI-directives">CFI directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-cfi_005fstartproc-directive"><code>cfi_startproc</code> directive</a>:</td><td> </td><td valign="top"><a href="#CFI-directives">CFI directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-char-directive_002c-TIC54X"><code>char</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-character-constant_002c-Z80">character constant, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-character-constants">character constants</a>:</td><td> </td><td valign="top"><a href="#Characters">Characters</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-character-escape-codes">character escape codes</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-character-escapes_002c-Z80">character escapes, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-character_002c-single">character, single</a>:</td><td> </td><td valign="top"><a href="#Chars">Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-characters-used-in-symbols">characters used in symbols</a>:</td><td> </td><td valign="top"><a href="#Symbol-Intro">Symbol Intro</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-clink-directive_002c-TIC54X"><code>clink</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-code16-directive_002c-i386"><code>code16</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-code16gcc-directive_002c-i386"><code>code16gcc</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-code32-directive_002c-i386"><code>code32</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-code64-directive_002c-i386"><code>code64</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-code64-directive_002c-x86_002d64"><code>code64</code> directive, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-COFF-auxiliary-symbol-information">COFF auxiliary symbol information</a>:</td><td> </td><td valign="top"><a href="#Dim">Dim</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-COFF-structure-debugging">COFF structure debugging</a>:</td><td> </td><td valign="top"><a href="#Tag">Tag</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-COFF-symbol-attributes">COFF symbol attributes</a>:</td><td> </td><td valign="top"><a href="#COFF-Symbols">COFF Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-COFF-symbol-descriptor">COFF symbol descriptor</a>:</td><td> </td><td valign="top"><a href="#Desc">Desc</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-COFF-symbol-storage-class">COFF symbol storage class</a>:</td><td> </td><td valign="top"><a href="#Scl">Scl</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-COFF-symbol-type">COFF symbol type</a>:</td><td> </td><td valign="top"><a href="#Type">Type</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-COFF-symbols_002c-debugging">COFF symbols, debugging</a>:</td><td> </td><td valign="top"><a href="#Def">Def</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-COFF-value-attribute">COFF value attribute</a>:</td><td> </td><td valign="top"><a href="#Val">Val</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-COMDAT">COMDAT</a>:</td><td> </td><td valign="top"><a href="#Linkonce">Linkonce</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-comm-directive"><code>comm</code> directive</a>:</td><td> </td><td valign="top"><a href="#Comm">Comm</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-command-line-conventions">command line conventions</a>:</td><td> </td><td valign="top"><a href="#Command-Line">Command Line</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-command_002dline-options-ignored_002c-VAX">command-line options ignored, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-command_002dline-options_002c-V850">command-line options, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-comment-character_002c-XStormy16">comment character, XStormy16</a>:</td><td> </td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-comments">comments</a>:</td><td> </td><td valign="top"><a href="#Comments">Comments</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-comments_002c-M680x0">comments, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-comments_002c-removed-by-preprocessor">comments, removed by preprocessor</a>:</td><td> </td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-common-directive_002c-SPARC"><code>common</code> directive, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-common-sections">common sections</a>:</td><td> </td><td valign="top"><a href="#Linkonce">Linkonce</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-common-variable-storage">common variable storage</a>:</td><td> </td><td valign="top"><a href="#bss">bss</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-comparison-expressions">comparison expressions</a>:</td><td> </td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-conditional-assembly">conditional assembly</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-constant_002c-single-character">constant, single character</a>:</td><td> </td><td valign="top"><a href="#Chars">Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-constants">constants</a>:</td><td> </td><td valign="top"><a href="#Constants">Constants</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-constants_002c-bignum">constants, bignum</a>:</td><td> </td><td valign="top"><a href="#Bignums">Bignums</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-constants_002c-character">constants, character</a>:</td><td> </td><td valign="top"><a href="#Characters">Characters</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-constants_002c-converted-by-preprocessor">constants, converted by preprocessor</a>:</td><td> </td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-constants_002c-floating-point">constants, floating point</a>:</td><td> </td><td valign="top"><a href="#Flonums">Flonums</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-constants_002c-integer">constants, integer</a>:</td><td> </td><td valign="top"><a href="#Integers">Integers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-constants_002c-number">constants, number</a>:</td><td> </td><td valign="top"><a href="#Numbers">Numbers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-constants_002c-Sparc">constants, Sparc</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dConstants">Sparc-Constants</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-constants_002c-string">constants, string</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-constants_002c-TIC54X">constants, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dConstants">TIC54X-Constants</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-conversion-instructions_002c-i386">conversion instructions, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-conversion-instructions_002c-x86_002d64">conversion instructions, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-coprocessor-wait_002c-i386">coprocessor wait, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-copy-directive_002c-TIC54X"><code>copy</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-core-general-registers_002c-ARC">core general registers, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-cpu-directive_002c-ARC"><code>cpu</code> directive, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-cpu-directive_002c-M680x0"><code>cpu</code> directive, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-cpu-directive_002c-MSP-430"><code>cpu</code> directive, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CR16-line-comment-character">CR16 line comment character</a>:</td><td> </td><td valign="top"><a href="#CR16_002dChars">CR16-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CR16-line-separator">CR16 line separator</a>:</td><td> </td><td valign="top"><a href="#CR16_002dChars">CR16-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CR16-Operand-Qualifiers">CR16 Operand Qualifiers</a>:</td><td> </td><td valign="top"><a href="#CR16-Operand-Qualifiers">CR16 Operand Qualifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CR16-support">CR16 support</a>:</td><td> </td><td valign="top"><a href="#CR16_002dDependent">CR16-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-crash-of-assembler">crash of assembler</a>:</td><td> </td><td valign="top"><a href="#Bug-Criteria">Bug Criteria</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002demulation_003dcrisaout-command_002dline-option">CRIS <samp>--emulation=crisaout</samp> command-line option</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002demulation_003dcriself-command_002dline-option">CRIS <samp>--emulation=criself</samp> command-line option</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002dmarch_003darchitecture-command_002dline-option">CRIS <samp>--march=<var>architecture</var></samp> command-line option</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002dmul_002dbug_002dabort-command_002dline-option">CRIS <samp>--mul-bug-abort</samp> command-line option</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002dno_002dmul_002dbug_002dabort-command_002dline-option">CRIS <samp>--no-mul-bug-abort</samp> command-line option</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002dno_002dunderscore-command_002dline-option">CRIS <samp>--no-underscore</samp> command-line option</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002dpic-command_002dline-option">CRIS <samp>--pic</samp> command-line option</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002dunderscore-command_002dline-option">CRIS <samp>--underscore</samp> command-line option</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-_002dN-command_002dline-option">CRIS <samp>-N</samp> command-line option</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-architecture-variant-option">CRIS architecture variant option</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-assembler-directive-_002earch">CRIS assembler directive .arch</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-assembler-directive-_002edword">CRIS assembler directive .dword</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-assembler-directive-_002esyntax">CRIS assembler directive .syntax</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-assembler-directives">CRIS assembler directives</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-built_002din-symbols">CRIS built-in symbols</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dSymbols">CRIS-Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-instruction-expansion">CRIS instruction expansion</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dExpand">CRIS-Expand</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-line-comment-characters">CRIS line comment characters</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dChars">CRIS-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-options">CRIS options</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-position_002dindependent-code">CRIS position-independent code</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-pseudo_002dop-_002earch">CRIS pseudo-op .arch</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-pseudo_002dop-_002edword">CRIS pseudo-op .dword</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-pseudo_002dop-_002esyntax">CRIS pseudo-op .syntax</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-pseudo_002dops">CRIS pseudo-ops</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-register-names">CRIS register names</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dRegs">CRIS-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-support">CRIS support</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dDependent">CRIS-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-CRIS-symbols-in-position_002dindependent-code">CRIS symbols in position-independent code</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPic">CRIS-Pic</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ctbp-register_002c-V850"><code>ctbp</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ctoff-pseudo_002dop_002c-V850"><code>ctoff</code> pseudo-op, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ctpc-register_002c-V850"><code>ctpc</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ctpsw-register_002c-V850"><code>ctpsw</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-current-address">current address</a>:</td><td> </td><td valign="top"><a href="#Dot">Dot</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-current-address_002c-advancing">current address, advancing</a>:</td><td> </td><td valign="top"><a href="#Org">Org</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-c_005fmode-directive_002c-TIC54X"><code>c_mode</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-D">D</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D10V-_0040word-modifier">D10V @word modifier</a>:</td><td> </td><td valign="top"><a href="#D10V_002dWord">D10V-Word</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D10V-addressing-modes">D10V addressing modes</a>:</td><td> </td><td valign="top"><a href="#D10V_002dAddressing">D10V-Addressing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D10V-floating-point">D10V floating point</a>:</td><td> </td><td valign="top"><a href="#D10V_002dFloat">D10V-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D10V-line-comment-character">D10V line comment character</a>:</td><td> </td><td valign="top"><a href="#D10V_002dChars">D10V-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D10V-opcode-summary">D10V opcode summary</a>:</td><td> </td><td valign="top"><a href="#D10V_002dOpcodes">D10V-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D10V-optimization">D10V optimization</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D10V-options">D10V options</a>:</td><td> </td><td valign="top"><a href="#D10V_002dOpts">D10V-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D10V-registers">D10V registers</a>:</td><td> </td><td valign="top"><a href="#D10V_002dRegs">D10V-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D10V-size-modifiers">D10V size modifiers</a>:</td><td> </td><td valign="top"><a href="#D10V_002dSize">D10V-Size</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D10V-sub_002dinstruction-ordering">D10V sub-instruction ordering</a>:</td><td> </td><td valign="top"><a href="#D10V_002dChars">D10V-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D10V-sub_002dinstructions">D10V sub-instructions</a>:</td><td> </td><td valign="top"><a href="#D10V_002dSubs">D10V-Subs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D10V-support">D10V support</a>:</td><td> </td><td valign="top"><a href="#D10V_002dDependent">D10V-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D10V-syntax">D10V syntax</a>:</td><td> </td><td valign="top"><a href="#D10V_002dSyntax">D10V-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-d24-directive_002c-Z80"><code>d24</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-addressing-modes">D30V addressing modes</a>:</td><td> </td><td valign="top"><a href="#D30V_002dAddressing">D30V-Addressing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-floating-point">D30V floating point</a>:</td><td> </td><td valign="top"><a href="#D30V_002dFloat">D30V-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-Guarded-Execution">D30V Guarded Execution</a>:</td><td> </td><td valign="top"><a href="#D30V_002dGuarded">D30V-Guarded</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-line-comment-character">D30V line comment character</a>:</td><td> </td><td valign="top"><a href="#D30V_002dChars">D30V-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-nops">D30V nops</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-nops-after-32_002dbit-multiply">D30V nops after 32-bit multiply</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-opcode-summary">D30V opcode summary</a>:</td><td> </td><td valign="top"><a href="#D30V_002dOpcodes">D30V-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-optimization">D30V optimization</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-options">D30V options</a>:</td><td> </td><td valign="top"><a href="#D30V_002dOpts">D30V-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-registers">D30V registers</a>:</td><td> </td><td valign="top"><a href="#D30V_002dRegs">D30V-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-size-modifiers">D30V size modifiers</a>:</td><td> </td><td valign="top"><a href="#D30V_002dSize">D30V-Size</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-sub_002dinstruction-ordering">D30V sub-instruction ordering</a>:</td><td> </td><td valign="top"><a href="#D30V_002dChars">D30V-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-sub_002dinstructions">D30V sub-instructions</a>:</td><td> </td><td valign="top"><a href="#D30V_002dSubs">D30V-Subs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-support">D30V support</a>:</td><td> </td><td valign="top"><a href="#D30V_002dDependent">D30V-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-D30V-syntax">D30V syntax</a>:</td><td> </td><td valign="top"><a href="#D30V_002dSyntax">D30V-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-d32-directive_002c-Z80"><code>d32</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-data-alignment-on-SPARC">data alignment on SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dAligned_002dData">Sparc-Aligned-Data</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-data-and-text-sections_002c-joining">data and text sections, joining</a>:</td><td> </td><td valign="top"><a href="#R">R</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-data-directive"><code>data</code> directive</a>:</td><td> </td><td valign="top"><a href="#Data">Data</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-data-directive_002c-TIC54X"><code>data</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Data-directives">Data directives</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-data-relocations_002c-ARM">data relocations, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM_002dRelocations">ARM-Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-data-section">data section</a>:</td><td> </td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-data1-directive_002c-M680x0"><code>data1</code> directive, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-data2-directive_002c-M680x0"><code>data2</code> directive, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-db-directive_002c-Z80"><code>db</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-dbpc-register_002c-V850"><code>dbpc</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-dbpsw-register_002c-V850"><code>dbpsw</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-dc-directive"><code>dc</code> directive</a>:</td><td> </td><td valign="top"><a href="#Dc">Dc</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-dcb-directive"><code>dcb</code> directive</a>:</td><td> </td><td valign="top"><a href="#Dcb">Dcb</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-DCCM-RAM-Configuration-Register_002c-ARC">DCCM RAM Configuration Register, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-debuggers_002c-and-symbol-order">debuggers, and symbol order</a>:</td><td> </td><td valign="top"><a href="#Symbols">Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-debugging-COFF-symbols">debugging COFF symbols</a>:</td><td> </td><td valign="top"><a href="#Def">Def</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-DEC-syntax">DEC syntax</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-decimal-integers">decimal integers</a>:</td><td> </td><td valign="top"><a href="#Integers">Integers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-def-directive"><code>def</code> directive</a>:</td><td> </td><td valign="top"><a href="#Def">Def</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-def-directive_002c-TIC54X"><code>def</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-def24-directive_002c-Z80"><code>def24</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-def32-directive_002c-Z80"><code>def32</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-defb-directive_002c-Z80"><code>defb</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-defl-directive_002c-Z80"><code>defl</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-defm-directive_002c-Z80"><code>defm</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-defs-directive_002c-Z80"><code>defs</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-defw-directive_002c-Z80"><code>defw</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-density-instructions">density instructions</a>:</td><td> </td><td valign="top"><a href="#Density-Instructions">Density Instructions</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-dependency-tracking">dependency tracking</a>:</td><td> </td><td valign="top"><a href="#MD">MD</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-deprecated-directives">deprecated directives</a>:</td><td> </td><td valign="top"><a href="#Deprecated">Deprecated</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-desc-directive"><code>desc</code> directive</a>:</td><td> </td><td valign="top"><a href="#Desc">Desc</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-descriptor_002c-of-a_002eout-symbol">descriptor, of <code>a.out</code> symbol</a>:</td><td> </td><td valign="top"><a href="#Symbol-Desc">Symbol Desc</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-dfloat-directive_002c-VAX"><code>dfloat</code> directive, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-difference-tables-altered">difference tables altered</a>:</td><td> </td><td valign="top"><a href="#Word">Word</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-difference-tables_002c-warning">difference tables, warning</a>:</td><td> </td><td valign="top"><a href="#K">K</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-differences_002c-mmixal">differences, mmixal</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dmmixal">MMIX-mmixal</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-dim-directive"><code>dim</code> directive</a>:</td><td> </td><td valign="top"><a href="#Dim">Dim</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-directives-and-instructions">directives and instructions</a>:</td><td> </td><td valign="top"><a href="#Statements">Statements</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-directives-for-PowerPC">directives for PowerPC</a>:</td><td> </td><td valign="top"><a href="#PowerPC_002dPseudo">PowerPC-Pseudo</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-directives-for-SCORE">directives for SCORE</a>:</td><td> </td><td valign="top"><a href="#SCORE_002dPseudo">SCORE-Pseudo</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-directives_002c-Blackfin">directives, Blackfin</a>:</td><td> </td><td valign="top"><a href="#Blackfin-Directives">Blackfin Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-directives_002c-M32R">directives, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-directives_002c-M680x0">directives, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-directives_002c-machine-independent">directives, machine independent</a>:</td><td> </td><td valign="top"><a href="#Pseudo-Ops">Pseudo Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-directives_002c-Xtensa">directives, Xtensa</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Directives">Xtensa Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-directives_002c-Z8000">directives, Z8000</a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Disable-floating_002dpoint-instructions">Disable floating-point instructions</a>:</td><td> </td><td valign="top"><a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Disable-single_002dprecision-floating_002dpoint-operations">Disable single-precision floating-point operations</a>:</td><td> </td><td valign="top"><a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-displacement-sizing-character_002c-VAX">displacement sizing character, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-dollar-local-symbols">dollar local symbols</a>:</td><td> </td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-dot-_0028symbol_0029">dot (symbol)</a>:</td><td> </td><td valign="top"><a href="#Dot">Dot</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-double-directive"><code>double</code> directive</a>:</td><td> </td><td valign="top"><a href="#Double">Double</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-double-directive_002c-i386"><code>double</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-double-directive_002c-M680x0"><code>double</code> directive, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dFloat">M68K-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-double-directive_002c-M68HC11"><code>double</code> directive, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dFloat">M68HC11-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-double-directive_002c-RX"><code>double</code> directive, RX</a>:</td><td> </td><td valign="top"><a href="#RX_002dFloat">RX-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-double-directive_002c-TIC54X"><code>double</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-double-directive_002c-VAX"><code>double</code> directive, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dfloat">VAX-float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-double-directive_002c-x86_002d64"><code>double</code> directive, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-double-directive_002c-XGATE"><code>double</code> directive, XGATE</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dFloat">XGATE-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-doublequote-_0028_005c_0022_0029">doublequote (<code>\"</code>)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-drlist-directive_002c-TIC54X"><code>drlist</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-drnolist-directive_002c-TIC54X"><code>drnolist</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ds-directive"><code>ds</code> directive</a>:</td><td> </td><td valign="top"><a href="#Ds">Ds</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ds-directive_002c-Z80"><code>ds</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-DTP_002drelative-data-directives">DTP-relative data directives</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-dw-directive_002c-Z80"><code>dw</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-dword-directive_002c-BPF"><code>dword</code> directive, BPF</a>:</td><td> </td><td valign="top"><a href="#BPF-Directives">BPF Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-dword-directive_002c-Nios-II"><code>dword</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-dword-directive_002c-PRU"><code>dword</code> directive, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-E">E</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-EB-command_002dline-option_002c-C_002dSKY"><code>EB</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-EB-command_002dline-option_002c-Nios-II"><code>EB</code> command-line option, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ecr-register_002c-V850"><code>ecr</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-eight_002dbyte-integer">eight-byte integer</a>:</td><td> </td><td valign="top"><a href="#Quad">Quad</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-eight_002dbyte-integer-1">eight-byte integer</a>:</td><td> </td><td valign="top"><a href="#g_t8byte">8byte</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-eipc-register_002c-V850"><code>eipc</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-eipsw-register_002c-V850"><code>eipsw</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-eject-directive"><code>eject</code> directive</a>:</td><td> </td><td valign="top"><a href="#Eject">Eject</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-EL-command_002dline-option_002c-C_002dSKY"><code>EL</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-EL-command_002dline-option_002c-Nios-II"><code>EL</code> command-line option, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ELF-symbol-type">ELF symbol type</a>:</td><td> </td><td valign="top"><a href="#Type">Type</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-else-directive"><code>else</code> directive</a>:</td><td> </td><td valign="top"><a href="#Else">Else</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-elseif-directive"><code>elseif</code> directive</a>:</td><td> </td><td valign="top"><a href="#Elseif">Elseif</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-empty-expressions">empty expressions</a>:</td><td> </td><td valign="top"><a href="#Empty-Exprs">Empty Exprs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-emsg-directive_002c-TIC54X"><code>emsg</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-emulation">emulation</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-encoding-options_002c-i386">encoding options, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-encoding-options_002c-x86_002d64">encoding options, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-end-directive"><code>end</code> directive</a>:</td><td> </td><td valign="top"><a href="#End">End</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-endef-directive"><code>endef</code> directive</a>:</td><td> </td><td valign="top"><a href="#Endef">Endef</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-endfunc-directive"><code>endfunc</code> directive</a>:</td><td> </td><td valign="top"><a href="#Endfunc">Endfunc</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-endianness_002c-MIPS">endianness, MIPS</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-endianness_002c-PJ">endianness, PJ</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-endif-directive"><code>endif</code> directive</a>:</td><td> </td><td valign="top"><a href="#Endif">Endif</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-endloop-directive_002c-TIC54X"><code>endloop</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-endm-directive"><code>endm</code> directive</a>:</td><td> </td><td valign="top"><a href="#Macro">Macro</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-endm-directive_002c-TIC54X"><code>endm</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-endproc-directive_002c-OpenRISC"><code>endproc</code> directive, OpenRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-endstruct-directive_002c-TIC54X"><code>endstruct</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-endunion-directive_002c-TIC54X"><code>endunion</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-environment-settings_002c-TIC54X">environment settings, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dEnv">TIC54X-Env</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-EOF_002c-newline-must-precede">EOF, newline must precede</a>:</td><td> </td><td valign="top"><a href="#Statements">Statements</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ep-register_002c-V850"><code>ep</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Epiphany-line-comment-character">Epiphany line comment character</a>:</td><td> </td><td valign="top"><a href="#Epiphany_002dChars">Epiphany-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Epiphany-line-separator">Epiphany line separator</a>:</td><td> </td><td valign="top"><a href="#Epiphany_002dChars">Epiphany-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Epiphany-options">Epiphany options</a>:</td><td> </td><td valign="top"><a href="#Epiphany-Options">Epiphany Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Epiphany-support">Epiphany support</a>:</td><td> </td><td valign="top"><a href="#Epiphany_002dDependent">Epiphany-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-equ-directive"><code>equ</code> directive</a>:</td><td> </td><td valign="top"><a href="#Equ">Equ</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-equ-directive_002c-TIC54X"><code>equ</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-equ-directive_002c-Z80"><code>equ</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-equiv-directive"><code>equiv</code> directive</a>:</td><td> </td><td valign="top"><a href="#Equiv">Equiv</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-eqv-directive"><code>eqv</code> directive</a>:</td><td> </td><td valign="top"><a href="#Eqv">Eqv</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-err-directive"><code>err</code> directive</a>:</td><td> </td><td valign="top"><a href="#Err">Err</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-error-directive">error directive</a>:</td><td> </td><td valign="top"><a href="#Error">Error</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-error-messages">error messages</a>:</td><td> </td><td valign="top"><a href="#Errors">Errors</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-error-on-valid-input">error on valid input</a>:</td><td> </td><td valign="top"><a href="#Bug-Criteria">Bug Criteria</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-errors_002c-caused-by-warnings">errors, caused by warnings</a>:</td><td> </td><td valign="top"><a href="#W">W</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-errors_002c-continuing-after">errors, continuing after</a>:</td><td> </td><td valign="top"><a href="#Z">Z</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-escape-codes_002c-character">escape codes, character</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-eval-directive_002c-TIC54X"><code>eval</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-even"><code>even</code></a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-even-directive_002c-M680x0"><code>even</code> directive, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-even-directive_002c-TIC54X"><code>even</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Exception-Cause-Register_002c-ARC">Exception Cause Register, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Exception-Return-Address_002c-ARC">Exception Return Address, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-exitm-directive"><code>exitm</code> directive</a>:</td><td> </td><td valign="top"><a href="#Macro">Macro</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-expr-_0028internal-section_0029">expr (internal section)</a>:</td><td> </td><td valign="top"><a href="#As-Sections">As Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-expression-arguments">expression arguments</a>:</td><td> </td><td valign="top"><a href="#Arguments">Arguments</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-expressions">expressions</a>:</td><td> </td><td valign="top"><a href="#Expressions">Expressions</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-expressions_002c-comparison">expressions, comparison</a>:</td><td> </td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-expressions_002c-empty">expressions, empty</a>:</td><td> </td><td valign="top"><a href="#Empty-Exprs">Empty Exprs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-expressions_002c-integer">expressions, integer</a>:</td><td> </td><td valign="top"><a href="#Integer-Exprs">Integer Exprs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-extAuxRegister-directive_002c-ARC"><code>extAuxRegister</code> directive, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-extCondCode-directive_002c-ARC"><code>extCondCode</code> directive, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-extCoreRegister-directive_002c-ARC"><code>extCoreRegister</code> directive, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-extend-directive-M680x0"><code>extend</code> directive M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dFloat">M68K-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-extend-directive-M68HC11"><code>extend</code> directive M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dFloat">M68HC11-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-extend-directive-XGATE"><code>extend</code> directive XGATE</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dFloat">XGATE-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-extension-core-registers_002c-ARC">extension core registers, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-extension-instructions_002c-i386">extension instructions, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-extension-instructions_002c-x86_002d64">extension instructions, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-extern-directive"><code>extern</code> directive</a>:</td><td> </td><td valign="top"><a href="#Extern">Extern</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-extInstruction-directive_002c-ARC"><code>extInstruction</code> directive, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-F">F</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-fail-directive"><code>fail</code> directive</a>:</td><td> </td><td valign="top"><a href="#Fail">Fail</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-far_005fmode-directive_002c-TIC54X"><code>far_mode</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-faster-processing-_0028_002df_0029">faster processing (<samp>-f</samp>)</a>:</td><td> </td><td valign="top"><a href="#f">f</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-fatal-signal">fatal signal</a>:</td><td> </td><td valign="top"><a href="#Bug-Criteria">Bug Criteria</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-fclist-directive_002c-TIC54X"><code>fclist</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-fcnolist-directive_002c-TIC54X"><code>fcnolist</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-fepc-register_002c-V850"><code>fepc</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-fepsw-register_002c-V850"><code>fepsw</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ffloat-directive_002c-VAX"><code>ffloat</code> directive, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-field-directive_002c-TIC54X"><code>field</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-file-directive"><code>file</code> directive</a>:</td><td> </td><td valign="top"><a href="#File">File</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-file-directive_002c-MSP-430"><code>file</code> directive, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-file-name_002c-logical">file name, logical</a>:</td><td> </td><td valign="top"><a href="#File">File</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-file-names-and-line-numbers_002c-in-warnings_002ferrors">file names and line numbers, in warnings/errors</a>:</td><td> </td><td valign="top"><a href="#Errors">Errors</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-files_002c-including">files, including</a>:</td><td> </td><td valign="top"><a href="#Include">Include</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-files_002c-input">files, input</a>:</td><td> </td><td valign="top"><a href="#Input-Files">Input Files</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-fill-directive"><code>fill</code> directive</a>:</td><td> </td><td valign="top"><a href="#Fill">Fill</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-filling-memory">filling memory</a>:</td><td> </td><td valign="top"><a href="#Skip">Skip</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-filling-memory-1">filling memory</a>:</td><td> </td><td valign="top"><a href="#Space">Space</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-filling-memory-with-no_002dop-instructions">filling memory with no-op instructions</a>:</td><td> </td><td valign="top"><a href="#Nop">Nop</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-filling-memory-with-no_002dop-instructions-1">filling memory with no-op instructions</a>:</td><td> </td><td valign="top"><a href="#Nops">Nops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-filling-memory-with-zero-bytes">filling memory with zero bytes</a>:</td><td> </td><td valign="top"><a href="#Zero">Zero</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-FLIX-syntax">FLIX syntax</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Syntax">Xtensa Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-float-directive"><code>float</code> directive</a>:</td><td> </td><td valign="top"><a href="#Float">Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-float-directive_002c-i386"><code>float</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-float-directive_002c-M680x0"><code>float</code> directive, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dFloat">M68K-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-float-directive_002c-M68HC11"><code>float</code> directive, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dFloat">M68HC11-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-float-directive_002c-RX"><code>float</code> directive, RX</a>:</td><td> </td><td valign="top"><a href="#RX_002dFloat">RX-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-float-directive_002c-TIC54X"><code>float</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-float-directive_002c-VAX"><code>float</code> directive, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dfloat">VAX-float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-float-directive_002c-x86_002d64"><code>float</code> directive, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-float-directive_002c-XGATE"><code>float</code> directive, XGATE</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dFloat">XGATE-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point-numbers">floating point numbers</a>:</td><td> </td><td valign="top"><a href="#Flonums">Flonums</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point-numbers-_0028double_0029">floating point numbers (double)</a>:</td><td> </td><td valign="top"><a href="#Double">Double</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point-numbers-_0028single_0029">floating point numbers (single)</a>:</td><td> </td><td valign="top"><a href="#Float">Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point-numbers-_0028single_0029-1">floating point numbers (single)</a>:</td><td> </td><td valign="top"><a href="#Single">Single</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-AArch64-_0028IEEE_0029">floating point, AArch64 (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#AArch64-Floating-Point">AArch64 Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-Alpha-_0028IEEE_0029">floating point, Alpha (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#Alpha-Floating-Point">Alpha Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-ARM-_0028IEEE_0029">floating point, ARM (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#ARM-Floating-Point">ARM Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-D10V">floating point, D10V</a>:</td><td> </td><td valign="top"><a href="#D10V_002dFloat">D10V-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-D30V">floating point, D30V</a>:</td><td> </td><td valign="top"><a href="#D30V_002dFloat">D30V-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-H8_002f300-_0028IEEE_0029">floating point, H8/300 (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Floating-Point">H8/300 Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-HPPA-_0028IEEE_0029">floating point, HPPA (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#HPPA-Floating-Point">HPPA Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-i386">floating point, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-M680x0">floating point, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dFloat">M68K-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-M68HC11">floating point, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dFloat">M68HC11-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-MSP-430-_0028IEEE_0029">floating point, MSP 430 (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#MSP430-Floating-Point">MSP430 Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-OPENRISC-_0028IEEE_0029">floating point, OPENRISC (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dFloat">OpenRISC-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-RX">floating point, RX</a>:</td><td> </td><td valign="top"><a href="#RX_002dFloat">RX-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-s390">floating point, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Floating-Point">s390 Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-SH-_0028IEEE_0029">floating point, SH (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#SH-Floating-Point">SH Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-SPARC-_0028IEEE_0029">floating point, SPARC (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dFloat">Sparc-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-V850-_0028IEEE_0029">floating point, V850 (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#V850-Floating-Point">V850 Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-VAX">floating point, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dfloat">VAX-float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-WebAssembly-_0028IEEE_0029">floating point, WebAssembly (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dFloating_002dPoint">WebAssembly-Floating-Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-x86_002d64">floating point, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-XGATE">floating point, XGATE</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dFloat">XGATE-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-floating-point_002c-Z80">floating point, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Floating-Point">Z80 Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-flonums">flonums</a>:</td><td> </td><td valign="top"><a href="#Flonums">Flonums</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-force2bsr-command_002dline-option_002c-C_002dSKY"><code>force2bsr</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-format-of-error-messages">format of error messages</a>:</td><td> </td><td valign="top"><a href="#Errors">Errors</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-format-of-warning-messages">format of warning messages</a>:</td><td> </td><td valign="top"><a href="#Errors">Errors</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-formfeed-_0028_005cf_0029">formfeed (<code>\f</code>)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-four_002dbyte-integer">four-byte integer</a>:</td><td> </td><td valign="top"><a href="#g_t4byte">4byte</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-fpic-command_002dline-option_002c-C_002dSKY"><code>fpic</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-frame-pointer_002c-ARC">frame pointer, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-func-directive"><code>func</code> directive</a>:</td><td> </td><td valign="top"><a href="#Func">Func</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-functions_002c-in-expressions">functions, in expressions</a>:</td><td> </td><td valign="top"><a href="#Operators">Operators</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-G">G</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-gfloat-directive_002c-VAX"><code>gfloat</code> directive, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-global"><code>global</code></a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-global-directive"><code>global</code> directive</a>:</td><td> </td><td valign="top"><a href="#Global">Global</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-global-directive_002c-TIC54X"><code>global</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-global-pointer_002c-ARC">global pointer, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-got-directive_002c-Nios-II"><code>got</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-gotoff-directive_002c-Nios-II"><code>gotoff</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-gotoff_005fhiadj-directive_002c-Nios-II"><code>gotoff_hiadj</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-gotoff_005flo-directive_002c-Nios-II"><code>gotoff_lo</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-got_005fhiadj-directive_002c-Nios-II"><code>got_hiadj</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-got_005flo-directive_002c-Nios-II"><code>got_lo</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-gp-register_002c-MIPS"><code>gp</code> register, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS-Small-Data">MIPS Small Data</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-gp-register_002c-V850"><code>gp</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-gprel-directive_002c-Nios-II"><code>gprel</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-grouping-data">grouping data</a>:</td><td> </td><td valign="top"><a href="#Sub_002dSections">Sub-Sections</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-H">H</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-H8_002f300-addressing-modes">H8/300 addressing modes</a>:</td><td> </td><td valign="top"><a href="#H8_002f300_002dAddressing">H8/300-Addressing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-H8_002f300-floating-point-_0028IEEE_0029">H8/300 floating point (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Floating-Point">H8/300 Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-H8_002f300-line-comment-character">H8/300 line comment character</a>:</td><td> </td><td valign="top"><a href="#H8_002f300_002dChars">H8/300-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-H8_002f300-line-separator">H8/300 line separator</a>:</td><td> </td><td valign="top"><a href="#H8_002f300_002dChars">H8/300-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-H8_002f300-machine-directives-_0028none_0029">H8/300 machine directives (none)</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Directives">H8/300 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-H8_002f300-opcode-summary">H8/300 opcode summary</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Opcodes">H8/300 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-H8_002f300-options">H8/300 options</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Options">H8/300 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-H8_002f300-registers">H8/300 registers</a>:</td><td> </td><td valign="top"><a href="#H8_002f300_002dRegs">H8/300-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-H8_002f300-size-suffixes">H8/300 size suffixes</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Opcodes">H8/300 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-H8_002f300-support">H8/300 support</a>:</td><td> </td><td valign="top"><a href="#H8_002f300_002dDependent">H8/300-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-H8_002f300H_002c-assembling-for">H8/300H, assembling for</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Directives">H8/300 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-half-directive_002c-BPF"><code>half</code> directive, BPF</a>:</td><td> </td><td valign="top"><a href="#BPF-Directives">BPF Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-half-directive_002c-Nios-II"><code>half</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-half-directive_002c-SPARC"><code>half</code> directive, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-half-directive_002c-TIC54X"><code>half</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hex-character-code-_0028_005cxd_002e_002e_002e_0029">hex character code (<code>\<var>xd...</var></code>)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hexadecimal-integers">hexadecimal integers</a>:</td><td> </td><td valign="top"><a href="#Integers">Integers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hexadecimal-prefix_002c-S12Z">hexadecimal prefix, S12Z</a>:</td><td> </td><td valign="top"><a href="#S12Z-Options">S12Z Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hexadecimal-prefix_002c-Z80">hexadecimal prefix, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hfloat-directive_002c-i386"><code>hfloat</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hfloat-directive_002c-VAX"><code>hfloat</code> directive, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hfloat-directive_002c-x86_002d64"><code>hfloat</code> directive, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hi-directive_002c-Nios-II"><code>hi</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hi-pseudo_002dop_002c-V850"><code>hi</code> pseudo-op, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hi0-pseudo_002dop_002c-V850"><code>hi0</code> pseudo-op, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hiadj-directive_002c-Nios-II"><code>hiadj</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hidden-directive"><code>hidden</code> directive</a>:</td><td> </td><td valign="top"><a href="#Hidden">Hidden</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-high-directive_002c-M32R"><code>high</code> directive, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hilo-pseudo_002dop_002c-V850"><code>hilo</code> pseudo-op, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-HPPA-directives-not-supported">HPPA directives not supported</a>:</td><td> </td><td valign="top"><a href="#HPPA-Directives">HPPA Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-HPPA-floating-point-_0028IEEE_0029">HPPA floating point (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#HPPA-Floating-Point">HPPA Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-HPPA-Syntax">HPPA Syntax</a>:</td><td> </td><td valign="top"><a href="#HPPA-Options">HPPA Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-HPPA_002donly-directives">HPPA-only directives</a>:</td><td> </td><td valign="top"><a href="#HPPA-Directives">HPPA Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-hword-directive"><code>hword</code> directive</a>:</td><td> </td><td valign="top"><a href="#hword">hword</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-I">I</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-16_002dbit-code">i386 16-bit code</a>:</td><td> </td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-arch-directive">i386 arch directive</a>:</td><td> </td><td valign="top"><a href="#i386_002dArch">i386-Arch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-att_005fsyntax-pseudo-op">i386 att_syntax pseudo op</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-conversion-instructions">i386 conversion instructions</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-extension-instructions">i386 extension instructions</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-floating-point">i386 floating point</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-immediate-operands">i386 immediate operands</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-instruction-naming">i386 instruction naming</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-instruction-prefixes">i386 instruction prefixes</a>:</td><td> </td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-intel_005fsyntax-pseudo-op">i386 intel_syntax pseudo op</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-jump-optimization">i386 jump optimization</a>:</td><td> </td><td valign="top"><a href="#i386_002dJumps">i386-Jumps</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-jump_002c-call_002c-return">i386 jump, call, return</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-jump_002fcall-operands">i386 jump/call operands</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-line-comment-character">i386 line comment character</a>:</td><td> </td><td valign="top"><a href="#i386_002dChars">i386-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-line-separator">i386 line separator</a>:</td><td> </td><td valign="top"><a href="#i386_002dChars">i386-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-memory-references">i386 memory references</a>:</td><td> </td><td valign="top"><a href="#i386_002dMemory">i386-Memory</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-mnemonic-compatibility">i386 mnemonic compatibility</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-mul_002c-imul-instructions">i386 <code>mul</code>, <code>imul</code> instructions</a>:</td><td> </td><td valign="top"><a href="#i386_002dNotes">i386-Notes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-options">i386 options</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-register-operands">i386 register operands</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-registers">i386 registers</a>:</td><td> </td><td valign="top"><a href="#i386_002dRegs">i386-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-sections">i386 sections</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-size-suffixes">i386 size suffixes</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-source_002c-destination-operands">i386 source, destination operands</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-support">i386 support</a>:</td><td> </td><td valign="top"><a href="#i386_002dDependent">i386-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i386-syntax-compatibility">i386 syntax compatibility</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-i80386-support">i80386 support</a>:</td><td> </td><td valign="top"><a href="#i386_002dDependent">i386-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IA_002d64-line-comment-character">IA-64 line comment character</a>:</td><td> </td><td valign="top"><a href="#IA_002d64_002dChars">IA-64-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IA_002d64-line-separator">IA-64 line separator</a>:</td><td> </td><td valign="top"><a href="#IA_002d64_002dChars">IA-64-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IA_002d64-options">IA-64 options</a>:</td><td> </td><td valign="top"><a href="#IA_002d64-Options">IA-64 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IA_002d64-Processor_002dstatus_002dRegister-bit-names">IA-64 Processor-status-Register bit names</a>:</td><td> </td><td valign="top"><a href="#IA_002d64_002dBits">IA-64-Bits</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IA_002d64-registers">IA-64 registers</a>:</td><td> </td><td valign="top"><a href="#IA_002d64_002dRegs">IA-64-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IA_002d64-relocations">IA-64 relocations</a>:</td><td> </td><td valign="top"><a href="#IA_002d64_002dRelocs">IA-64-Relocs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IA_002d64-support">IA-64 support</a>:</td><td> </td><td valign="top"><a href="#IA_002d64_002dDependent">IA-64-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IA_002d64-Syntax">IA-64 Syntax</a>:</td><td> </td><td valign="top"><a href="#IA_002d64-Options">IA-64 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ident-directive"><code>ident</code> directive</a>:</td><td> </td><td valign="top"><a href="#Ident">Ident</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-identifiers_002c-ARM">identifiers, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-identifiers_002c-MSP-430">identifiers, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-if-directive"><code>if</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifb-directive"><code>ifb</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifc-directive"><code>ifc</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifdef-directive"><code>ifdef</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifeq-directive"><code>ifeq</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifeqs-directive"><code>ifeqs</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifge-directive"><code>ifge</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifgt-directive"><code>ifgt</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifle-directive"><code>ifle</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-iflt-directive"><code>iflt</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifnb-directive"><code>ifnb</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifnc-directive"><code>ifnc</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifndef-directive"><code>ifndef</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifne-directive"><code>ifne</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifnes-directive"><code>ifnes</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ifnotdef-directive"><code>ifnotdef</code> directive</a>:</td><td> </td><td valign="top"><a href="#If">If</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-immediate-character_002c-AArch64">immediate character, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-immediate-character_002c-ARM">immediate character, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-immediate-character_002c-M680x0">immediate character, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-immediate-character_002c-VAX">immediate character, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-immediate-fields_002c-relaxation">immediate fields, relaxation</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-immediate-operands_002c-i386">immediate operands, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-immediate-operands_002c-x86_002d64">immediate operands, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-imul-instruction_002c-i386"><code>imul</code> instruction, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dNotes">i386-Notes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-imul-instruction_002c-x86_002d64"><code>imul</code> instruction, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dNotes">i386-Notes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-incbin-directive"><code>incbin</code> directive</a>:</td><td> </td><td valign="top"><a href="#Incbin">Incbin</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-include-directive"><code>include</code> directive</a>:</td><td> </td><td valign="top"><a href="#Include">Include</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-include-directive-search-path"><code>include</code> directive search path</a>:</td><td> </td><td valign="top"><a href="#I">I</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-indirect-character_002c-VAX">indirect character, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-infix-operators">infix operators</a>:</td><td> </td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-inhibiting-interrupts_002c-i386">inhibiting interrupts, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-input">input</a>:</td><td> </td><td valign="top"><a href="#Input-Files">Input Files</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-input-file-linenumbers">input file linenumbers</a>:</td><td> </td><td valign="top"><a href="#Input-Files">Input Files</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-INSN-directives">INSN directives</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-aliases_002c-s390">instruction aliases, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Aliases">s390 Aliases</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-bundle">instruction bundle</a>:</td><td> </td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-expansion_002c-CRIS">instruction expansion, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dExpand">CRIS-Expand</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-expansion_002c-MMIX">instruction expansion, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dExpand">MMIX-Expand</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-formats_002c-risc_002dv">instruction formats, risc-v</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dFormats">RISC-V-Formats</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-formats_002c-s390">instruction formats, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Formats">s390 Formats</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-marker_002c-s390">instruction marker, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Instruction-Marker">s390 Instruction Marker</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-mnemonics_002c-s390">instruction mnemonics, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Mnemonics">s390 Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-naming_002c-i386">instruction naming, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-naming_002c-x86_002d64">instruction naming, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-operand-modifier_002c-s390">instruction operand modifier, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Operand-Modifier">s390 Operand Modifier</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-operands_002c-s390">instruction operands, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Operands">s390 Operands</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-prefixes_002c-i386">instruction prefixes, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-set_002c-M680x0">instruction set, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dopcodes">M68K-opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-set_002c-M68HC11">instruction set, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dopcodes">M68HC11-opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-set_002c-XGATE">instruction set, XGATE</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dopcodes">XGATE-opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-AVR">instruction summary, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR-Opcodes">AVR Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-D10V">instruction summary, D10V</a>:</td><td> </td><td valign="top"><a href="#D10V_002dOpcodes">D10V-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-D30V">instruction summary, D30V</a>:</td><td> </td><td valign="top"><a href="#D30V_002dOpcodes">D30V-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-H8_002f300">instruction summary, H8/300</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Opcodes">H8/300 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-LM32">instruction summary, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32-Opcodes">LM32 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-LM32-1">instruction summary, LM32</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dOpcodes">OpenRISC-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-SH">instruction summary, SH</a>:</td><td> </td><td valign="top"><a href="#SH-Opcodes">SH Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-Z8000">instruction summary, Z8000</a>:</td><td> </td><td valign="top"><a href="#Z8000-Opcodes">Z8000 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instruction-syntax_002c-s390">instruction syntax, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Syntax">s390 Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-instructions-and-directives">instructions and directives</a>:</td><td> </td><td valign="top"><a href="#Statements">Statements</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-int-directive"><code>int</code> directive</a>:</td><td> </td><td valign="top"><a href="#Int">Int</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-int-directive_002c-H8_002f300"><code>int</code> directive, H8/300</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Directives">H8/300 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-int-directive_002c-i386"><code>int</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-int-directive_002c-TIC54X"><code>int</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-int-directive_002c-x86_002d64"><code>int</code> directive, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integer-expressions">integer expressions</a>:</td><td> </td><td valign="top"><a href="#Integer-Exprs">Integer Exprs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integer_002c-16_002dbyte">integer, 16-byte</a>:</td><td> </td><td valign="top"><a href="#Octa">Octa</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integer_002c-2_002dbyte">integer, 2-byte</a>:</td><td> </td><td valign="top"><a href="#g_t2byte">2byte</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integer_002c-4_002dbyte">integer, 4-byte</a>:</td><td> </td><td valign="top"><a href="#g_t4byte">4byte</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integer_002c-8_002dbyte">integer, 8-byte</a>:</td><td> </td><td valign="top"><a href="#Quad">Quad</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integer_002c-8_002dbyte-1">integer, 8-byte</a>:</td><td> </td><td valign="top"><a href="#g_t8byte">8byte</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integers">integers</a>:</td><td> </td><td valign="top"><a href="#Integers">Integers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integers_002c-16_002dbit">integers, 16-bit</a>:</td><td> </td><td valign="top"><a href="#hword">hword</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integers_002c-32_002dbit">integers, 32-bit</a>:</td><td> </td><td valign="top"><a href="#Int">Int</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integers_002c-binary">integers, binary</a>:</td><td> </td><td valign="top"><a href="#Integers">Integers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integers_002c-decimal">integers, decimal</a>:</td><td> </td><td valign="top"><a href="#Integers">Integers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integers_002c-hexadecimal">integers, hexadecimal</a>:</td><td> </td><td valign="top"><a href="#Integers">Integers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integers_002c-octal">integers, octal</a>:</td><td> </td><td valign="top"><a href="#Integers">Integers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-integers_002c-one-byte">integers, one byte</a>:</td><td> </td><td valign="top"><a href="#Byte">Byte</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-intel_005fsyntax-pseudo-op_002c-i386">intel_syntax pseudo op, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-intel_005fsyntax-pseudo-op_002c-x86_002d64">intel_syntax pseudo op, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-internal-assembler-sections">internal assembler sections</a>:</td><td> </td><td valign="top"><a href="#As-Sections">As Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-internal-directive"><code>internal</code> directive</a>:</td><td> </td><td valign="top"><a href="#Internal">Internal</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-interrupt-link-register_002c-ARC">interrupt link register, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Interrupt-Vector-Base-address_002c-ARC">Interrupt Vector Base address, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-invalid-input">invalid input</a>:</td><td> </td><td valign="top"><a href="#Bug-Criteria">Bug Criteria</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-invocation-summary">invocation summary</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IP2K-architecture-options">IP2K architecture options</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IP2K-architecture-options-1">IP2K architecture options</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IP2K-line-comment-character">IP2K line comment character</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dChars">IP2K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IP2K-line-separator">IP2K line separator</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dChars">IP2K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IP2K-options">IP2K options</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-IP2K-support">IP2K support</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dDependent">IP2K-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-irp-directive"><code>irp</code> directive</a>:</td><td> </td><td valign="top"><a href="#Irp">Irp</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-irpc-directive"><code>irpc</code> directive</a>:</td><td> </td><td valign="top"><a href="#Irpc">Irpc</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-J">J</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-joining-text-and-data-sections">joining text and data sections</a>:</td><td> </td><td valign="top"><a href="#R">R</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-jsri2bsr-command_002dline-option_002c-C_002dSKY"><code>jsri2bsr</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-jump-instructions_002c-i386">jump instructions, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-jump-instructions_002c-relaxation">jump instructions, relaxation</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Jump-Relaxation">Xtensa Jump Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-jump-instructions_002c-x86_002d64">jump instructions, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-jump-optimization_002c-i386">jump optimization, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dJumps">i386-Jumps</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-jump-optimization_002c-x86_002d64">jump optimization, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dJumps">i386-Jumps</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-jump_002fcall-operands_002c-i386">jump/call operands, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-jump_002fcall-operands_002c-x86_002d64">jump/call operands, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-L">L</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-L16SI-instructions_002c-relaxation"><code>L16SI</code> instructions, relaxation</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-L16UI-instructions_002c-relaxation"><code>L16UI</code> instructions, relaxation</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-L32I-instructions_002c-relaxation"><code>L32I</code> instructions, relaxation</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-L8UI-instructions_002c-relaxation"><code>L8UI</code> instructions, relaxation</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-label-_0028_003a_0029">label (<code>:</code>)</a>:</td><td> </td><td valign="top"><a href="#Statements">Statements</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-label-directive_002c-TIC54X"><code>label</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-labels">labels</a>:</td><td> </td><td valign="top"><a href="#Labels">Labels</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-labels_002c-Z80">labels, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80_002dLabels">Z80-Labels</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-largecomm-directive_002c-ELF"><code>largecomm</code> directive, ELF</a>:</td><td> </td><td valign="top"><a href="#i386_002dDirectives">i386-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-lcomm-directive"><code>lcomm</code> directive</a>:</td><td> </td><td valign="top"><a href="#Lcomm">Lcomm</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-lcomm-directive-1"><code>lcomm</code> directive</a>:</td><td> </td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-lcomm-directive_002c-COFF"><code>lcomm</code> directive, COFF</a>:</td><td> </td><td valign="top"><a href="#i386_002dDirectives">i386-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-lcommon-directive_002c-ARC"><code>lcommon</code> directive, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ld"><code>ld</code></a>:</td><td> </td><td valign="top"><a href="#Object">Object</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ldouble-directive-M680x0"><code>ldouble</code> directive M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dFloat">M68K-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ldouble-directive-M68HC11"><code>ldouble</code> directive M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dFloat">M68HC11-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ldouble-directive-XGATE"><code>ldouble</code> directive XGATE</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dFloat">XGATE-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ldouble-directive_002c-TIC54X"><code>ldouble</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-LDR-reg_002c_003d_003cexpr_003e-pseudo-op_002c-AArch64"><code>LDR reg,=<expr></code> pseudo op, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Opcodes">AArch64 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-LDR-reg_002c_003d_003clabel_003e-pseudo-op_002c-ARM"><code>LDR reg,=<label></code> pseudo op, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Opcodes">ARM Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-LEB128-directives">LEB128 directives</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-length-directive_002c-TIC54X"><code>length</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-length-of-symbols">length of symbols</a>:</td><td> </td><td valign="top"><a href="#Symbol-Intro">Symbol Intro</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-level-1-interrupt-link-register_002c-ARC">level 1 interrupt link register, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-level-2-interrupt-link-register_002c-ARC">level 2 interrupt link register, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-lflags-directive-_0028ignored_0029"><code>lflags</code> directive (ignored)</a>:</td><td> </td><td valign="top"><a href="#Lflags">Lflags</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line">line</a>:</td><td> </td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character">line comment character</a>:</td><td> </td><td valign="top"><a href="#Comments">Comments</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-AArch64">line comment character, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Alpha">line comment character, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha_002dChars">Alpha-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-ARC">line comment character, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-ARM">line comment character, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-AVR">line comment character, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR_002dChars">AVR-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-BPF">line comment character, BPF</a>:</td><td> </td><td valign="top"><a href="#BPF_002dChars">BPF-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-CR16">line comment character, CR16</a>:</td><td> </td><td valign="top"><a href="#CR16_002dChars">CR16-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-D10V">line comment character, D10V</a>:</td><td> </td><td valign="top"><a href="#D10V_002dChars">D10V-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-D30V">line comment character, D30V</a>:</td><td> </td><td valign="top"><a href="#D30V_002dChars">D30V-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Epiphany">line comment character, Epiphany</a>:</td><td> </td><td valign="top"><a href="#Epiphany_002dChars">Epiphany-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-H8_002f300">line comment character, H8/300</a>:</td><td> </td><td valign="top"><a href="#H8_002f300_002dChars">H8/300-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-i386">line comment character, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dChars">i386-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-IA_002d64">line comment character, IA-64</a>:</td><td> </td><td valign="top"><a href="#IA_002d64_002dChars">IA-64-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-IP2K">line comment character, IP2K</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dChars">IP2K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-LM32">line comment character, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32_002dChars">LM32-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-M32C">line comment character, M32C</a>:</td><td> </td><td valign="top"><a href="#M32C_002dChars">M32C-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-M680x0">line comment character, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-M68HC11">line comment character, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Meta">line comment character, Meta</a>:</td><td> </td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-MicroBlaze">line comment character, MicroBlaze</a>:</td><td> </td><td valign="top"><a href="#MicroBlaze_002dChars">MicroBlaze-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-MIPS">line comment character, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS_002dChars">MIPS-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-MSP-430">line comment character, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Nios-II">line comment character, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Chars">Nios II Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-NS32K">line comment character, NS32K</a>:</td><td> </td><td valign="top"><a href="#NS32K_002dChars">NS32K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-OpenRISC">line comment character, OpenRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dChars">OpenRISC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-PJ">line comment character, PJ</a>:</td><td> </td><td valign="top"><a href="#PJ_002dChars">PJ-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-PowerPC">line comment character, PowerPC</a>:</td><td> </td><td valign="top"><a href="#PowerPC_002dChars">PowerPC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-PRU">line comment character, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Chars">PRU Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-RL78">line comment character, RL78</a>:</td><td> </td><td valign="top"><a href="#RL78_002dChars">RL78-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-RX">line comment character, RX</a>:</td><td> </td><td valign="top"><a href="#RX_002dChars">RX-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-S12Z">line comment character, S12Z</a>:</td><td> </td><td valign="top"><a href="#S12Z-Syntax-Overview">S12Z Syntax Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-s390">line comment character, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Characters">s390 Characters</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-SCORE">line comment character, SCORE</a>:</td><td> </td><td valign="top"><a href="#SCORE_002dChars">SCORE-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-SH">line comment character, SH</a>:</td><td> </td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Sparc">line comment character, Sparc</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dChars">Sparc-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-TIC54X">line comment character, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dChars">TIC54X-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-TIC6X">line comment character, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Syntax">TIC6X Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-V850">line comment character, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dChars">V850-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-VAX">line comment character, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dChars">VAX-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Visium">line comment character, Visium</a>:</td><td> </td><td valign="top"><a href="#Visium-Characters">Visium Characters</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-WebAssembly">line comment character, WebAssembly</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dChars">WebAssembly-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-XGATE">line comment character, XGATE</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-XStormy16">line comment character, XStormy16</a>:</td><td> </td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Z80">line comment character, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Z8000">line comment character, Z8000</a>:</td><td> </td><td valign="top"><a href="#Z8000_002dChars">Z8000-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-characters_002c-CRIS">line comment characters, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dChars">CRIS-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-comment-characters_002c-MMIX">line comment characters, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dChars">MMIX-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-directive"><code>line</code> directive</a>:</td><td> </td><td valign="top"><a href="#Line">Line</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-directive_002c-MSP-430"><code>line</code> directive, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-numbers_002c-in-input-files">line numbers, in input files</a>:</td><td> </td><td valign="top"><a href="#Input-Files">Input Files</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator-character">line separator character</a>:</td><td> </td><td valign="top"><a href="#Statements">Statements</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator-character_002c-Nios-II">line separator character, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Chars">Nios II Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-AArch64">line separator, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-Alpha">line separator, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha_002dChars">Alpha-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-ARC">line separator, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-ARM">line separator, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-AVR">line separator, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR_002dChars">AVR-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-CR16">line separator, CR16</a>:</td><td> </td><td valign="top"><a href="#CR16_002dChars">CR16-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-Epiphany">line separator, Epiphany</a>:</td><td> </td><td valign="top"><a href="#Epiphany_002dChars">Epiphany-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-H8_002f300">line separator, H8/300</a>:</td><td> </td><td valign="top"><a href="#H8_002f300_002dChars">H8/300-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-i386">line separator, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dChars">i386-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-IA_002d64">line separator, IA-64</a>:</td><td> </td><td valign="top"><a href="#IA_002d64_002dChars">IA-64-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-IP2K">line separator, IP2K</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dChars">IP2K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-LM32">line separator, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32_002dChars">LM32-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-M32C">line separator, M32C</a>:</td><td> </td><td valign="top"><a href="#M32C_002dChars">M32C-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-M680x0">line separator, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-M68HC11">line separator, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-Meta">line separator, Meta</a>:</td><td> </td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-MicroBlaze">line separator, MicroBlaze</a>:</td><td> </td><td valign="top"><a href="#MicroBlaze_002dChars">MicroBlaze-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-MIPS">line separator, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS_002dChars">MIPS-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-MSP-430">line separator, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-NS32K">line separator, NS32K</a>:</td><td> </td><td valign="top"><a href="#NS32K_002dChars">NS32K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-OpenRISC">line separator, OpenRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dChars">OpenRISC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-PJ">line separator, PJ</a>:</td><td> </td><td valign="top"><a href="#PJ_002dChars">PJ-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-PowerPC">line separator, PowerPC</a>:</td><td> </td><td valign="top"><a href="#PowerPC_002dChars">PowerPC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-RL78">line separator, RL78</a>:</td><td> </td><td valign="top"><a href="#RL78_002dChars">RL78-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-RX">line separator, RX</a>:</td><td> </td><td valign="top"><a href="#RX_002dChars">RX-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-S12Z">line separator, S12Z</a>:</td><td> </td><td valign="top"><a href="#S12Z-Syntax-Overview">S12Z Syntax Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-s390">line separator, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Characters">s390 Characters</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-SCORE">line separator, SCORE</a>:</td><td> </td><td valign="top"><a href="#SCORE_002dChars">SCORE-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-SH">line separator, SH</a>:</td><td> </td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-Sparc">line separator, Sparc</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dChars">Sparc-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-TIC54X">line separator, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dChars">TIC54X-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-TIC6X">line separator, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Syntax">TIC6X Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-V850">line separator, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dChars">V850-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-VAX">line separator, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dChars">VAX-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-Visium">line separator, Visium</a>:</td><td> </td><td valign="top"><a href="#Visium-Characters">Visium Characters</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-XGATE">line separator, XGATE</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-XStormy16">line separator, XStormy16</a>:</td><td> </td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-Z80">line separator, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-line-separator_002c-Z8000">line separator, Z8000</a>:</td><td> </td><td valign="top"><a href="#Z8000_002dChars">Z8000-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-lines-starting-with-_0023">lines starting with <code>#</code></a>:</td><td> </td><td valign="top"><a href="#Comments">Comments</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-link-register_002c-ARC">link register, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-linker">linker</a>:</td><td> </td><td valign="top"><a href="#Object">Object</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-linker_002c-and-assembler">linker, and assembler</a>:</td><td> </td><td valign="top"><a href="#Secs-Background">Secs Background</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-linkonce-directive"><code>linkonce</code> directive</a>:</td><td> </td><td valign="top"><a href="#Linkonce">Linkonce</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-list-directive"><code>list</code> directive</a>:</td><td> </td><td valign="top"><a href="#List">List</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-list-directive_002c-TIC54X"><code>list</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-listing-control_002c-turning-off">listing control, turning off</a>:</td><td> </td><td valign="top"><a href="#Nolist">Nolist</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-listing-control_002c-turning-on">listing control, turning on</a>:</td><td> </td><td valign="top"><a href="#List">List</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-listing-control_003a-new-page">listing control: new page</a>:</td><td> </td><td valign="top"><a href="#Eject">Eject</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-listing-control_003a-paper-size">listing control: paper size</a>:</td><td> </td><td valign="top"><a href="#Psize">Psize</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-listing-control_003a-subtitle">listing control: subtitle</a>:</td><td> </td><td valign="top"><a href="#Sbttl">Sbttl</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-listing-control_003a-title-line">listing control: title line</a>:</td><td> </td><td valign="top"><a href="#Title">Title</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-listings_002c-enabling">listings, enabling</a>:</td><td> </td><td valign="top"><a href="#a">a</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-literal-directive"><code>literal</code> directive</a>:</td><td> </td><td valign="top"><a href="#Literal-Directive">Literal Directive</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-literal-pool-entries_002c-s390">literal pool entries, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Literal-Pool-Entries">s390 Literal Pool Entries</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-literal_005fposition-directive"><code>literal_position</code> directive</a>:</td><td> </td><td valign="top"><a href="#Literal-Position-Directive">Literal Position Directive</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-literal_005fprefix-directive"><code>literal_prefix</code> directive</a>:</td><td> </td><td valign="top"><a href="#Literal-Prefix-Directive">Literal Prefix Directive</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-little-endian-output_002c-MIPS">little endian output, MIPS</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-little-endian-output_002c-PJ">little endian output, PJ</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-little_002dendian-output_002c-MIPS">little-endian output, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-little_002dendian-output_002c-TIC6X">little-endian output, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-LM32-line-comment-character">LM32 line comment character</a>:</td><td> </td><td valign="top"><a href="#LM32_002dChars">LM32-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-LM32-line-separator">LM32 line separator</a>:</td><td> </td><td valign="top"><a href="#LM32_002dChars">LM32-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-LM32-modifiers">LM32 modifiers</a>:</td><td> </td><td valign="top"><a href="#LM32_002dModifiers">LM32-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-LM32-opcode-summary">LM32 opcode summary</a>:</td><td> </td><td valign="top"><a href="#LM32-Opcodes">LM32 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-LM32-options-_0028none_0029">LM32 options (none)</a>:</td><td> </td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-LM32-register-names">LM32 register names</a>:</td><td> </td><td valign="top"><a href="#LM32_002dRegs">LM32-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-LM32-support">LM32 support</a>:</td><td> </td><td valign="top"><a href="#LM32_002dDependent">LM32-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ln-directive"><code>ln</code> directive</a>:</td><td> </td><td valign="top"><a href="#Ln">Ln</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-lo-directive_002c-Nios-II"><code>lo</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-lo-pseudo_002dop_002c-V850"><code>lo</code> pseudo-op, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-loc-directive"><code>loc</code> directive</a>:</td><td> </td><td valign="top"><a href="#Loc">Loc</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-local-common-symbols">local common symbols</a>:</td><td> </td><td valign="top"><a href="#Lcomm">Lcomm</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-local-directive"><code>local</code> directive</a>:</td><td> </td><td valign="top"><a href="#Local">Local</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-local-labels">local labels</a>:</td><td> </td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-local-symbol-names">local symbol names</a>:</td><td> </td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-local-symbols_002c-retaining-in-output">local symbols, retaining in output</a>:</td><td> </td><td valign="top"><a href="#L">L</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-location-counter">location counter</a>:</td><td> </td><td valign="top"><a href="#Dot">Dot</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-location-counter_002c-advancing">location counter, advancing</a>:</td><td> </td><td valign="top"><a href="#Org">Org</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-location-counter_002c-Z80">location counter, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-loc_005fmark_005flabels-directive"><code>loc_mark_labels</code> directive</a>:</td><td> </td><td valign="top"><a href="#Loc_005fmark_005flabels">Loc_mark_labels</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-logical-file-name">logical file name</a>:</td><td> </td><td valign="top"><a href="#File">File</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-logical-line-number">logical line number</a>:</td><td> </td><td valign="top"><a href="#Line">Line</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-logical-line-numbers">logical line numbers</a>:</td><td> </td><td valign="top"><a href="#Comments">Comments</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-long-directive"><code>long</code> directive</a>:</td><td> </td><td valign="top"><a href="#Long">Long</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-long-directive_002c-i386"><code>long</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-long-directive_002c-TIC54X"><code>long</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-long-directive_002c-x86_002d64"><code>long</code> directive, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-longcall-pseudo_002dop_002c-V850"><code>longcall</code> pseudo-op, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-longcalls-directive"><code>longcalls</code> directive</a>:</td><td> </td><td valign="top"><a href="#Longcalls-Directive">Longcalls Directive</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-longjump-pseudo_002dop_002c-V850"><code>longjump</code> pseudo-op, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Loongson-Content-Address-Memory-_0028CAM_0029-generation-override">Loongson Content Address Memory (CAM) generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Loongson-EXTensions-_0028EXT_0029-instructions-generation-override">Loongson EXTensions (EXT) instructions generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Loongson-EXTensions-R2-_0028EXT2_0029-instructions-generation-override">Loongson EXTensions R2 (EXT2) instructions generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Loongson-MultiMedia-extensions-Instructions-_0028MMI_0029-generation-override">Loongson MultiMedia extensions Instructions (MMI) generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-loop-counter_002c-ARC">loop counter, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-loop-directive_002c-TIC54X"><code>loop</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-LOOP-instructions_002c-alignment"><code>LOOP</code> instructions, alignment</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Automatic-Alignment">Xtensa Automatic Alignment</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-low-directive_002c-M32R"><code>low</code> directive, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-lp-register_002c-V850"><code>lp</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-lval"><code>lval</code></a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-LWP_002c-i386">LWP, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dLWP">i386-LWP</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-LWP_002c-x86_002d64">LWP, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dLWP">i386-LWP</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-M">M</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M16C-architecture-option">M16C architecture option</a>:</td><td> </td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M32C-architecture-option">M32C architecture option</a>:</td><td> </td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M32C-line-comment-character">M32C line comment character</a>:</td><td> </td><td valign="top"><a href="#M32C_002dChars">M32C-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M32C-line-separator">M32C line separator</a>:</td><td> </td><td valign="top"><a href="#M32C_002dChars">M32C-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M32C-modifiers">M32C modifiers</a>:</td><td> </td><td valign="top"><a href="#M32C_002dModifiers">M32C-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M32C-options">M32C options</a>:</td><td> </td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M32C-support">M32C support</a>:</td><td> </td><td valign="top"><a href="#M32C_002dDependent">M32C-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M32R-architecture-options">M32R architecture options</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M32R-architecture-options-1">M32R architecture options</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M32R-architecture-options-2">M32R architecture options</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M32R-directives">M32R directives</a>:</td><td> </td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M32R-options">M32R options</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M32R-support">M32R support</a>:</td><td> </td><td valign="top"><a href="#M32R_002dDependent">M32R-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M32R-warnings">M32R warnings</a>:</td><td> </td><td valign="top"><a href="#M32R_002dWarnings">M32R-Warnings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-addressing-modes">M680x0 addressing modes</a>:</td><td> </td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-architecture-options">M680x0 architecture options</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-branch-improvement">M680x0 branch improvement</a>:</td><td> </td><td valign="top"><a href="#M68K_002dBranch">M68K-Branch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-directives">M680x0 directives</a>:</td><td> </td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-floating-point">M680x0 floating point</a>:</td><td> </td><td valign="top"><a href="#M68K_002dFloat">M68K-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-immediate-character">M680x0 immediate character</a>:</td><td> </td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-line-comment-character">M680x0 line comment character</a>:</td><td> </td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-line-separator">M680x0 line separator</a>:</td><td> </td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-opcodes">M680x0 opcodes</a>:</td><td> </td><td valign="top"><a href="#M68K_002dopcodes">M68K-opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-options">M680x0 options</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-pseudo_002dopcodes">M680x0 pseudo-opcodes</a>:</td><td> </td><td valign="top"><a href="#M68K_002dBranch">M68K-Branch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-size-modifiers">M680x0 size modifiers</a>:</td><td> </td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-support">M680x0 support</a>:</td><td> </td><td valign="top"><a href="#M68K_002dDependent">M68K-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M680x0-syntax">M680x0 syntax</a>:</td><td> </td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-addressing-modes">M68HC11 addressing modes</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-and-M68HC12-support">M68HC11 and M68HC12 support</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDependent">M68HC11-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-assembler-directive-_002efar">M68HC11 assembler directive .far</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-assembler-directive-_002einterrupt">M68HC11 assembler directive .interrupt</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-assembler-directive-_002emode">M68HC11 assembler directive .mode</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-assembler-directive-_002erelax">M68HC11 assembler directive .relax</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-assembler-directive-_002exrefb">M68HC11 assembler directive .xrefb</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-assembler-directives">M68HC11 assembler directives</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-branch-improvement">M68HC11 branch improvement</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dBranch">M68HC11-Branch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-floating-point">M68HC11 floating point</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dFloat">M68HC11-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-line-comment-character">M68HC11 line comment character</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-line-separator">M68HC11 line separator</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-modifiers">M68HC11 modifiers</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dModifiers">M68HC11-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-opcodes">M68HC11 opcodes</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dopcodes">M68HC11-opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-options">M68HC11 options</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-pseudo_002dopcodes">M68HC11 pseudo-opcodes</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dBranch">M68HC11-Branch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC11-syntax">M68HC11 syntax</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-M68HC12-assembler-directives">M68HC12 assembler directives</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mA6-command_002dline-option_002c-ARC"><code>mA6</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mA7-command_002dline-option_002c-ARC"><code>mA7</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-dependencies">machine dependencies</a>:</td><td> </td><td valign="top"><a href="#Machine-Dependencies">Machine Dependencies</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-AArch64">machine directives, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-ARC">machine directives, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-ARM">machine directives, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-BPF">machine directives, BPF</a>:</td><td> </td><td valign="top"><a href="#BPF-Directives">BPF Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-H8_002f300-_0028none_0029">machine directives, H8/300 (none)</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Directives">H8/300 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-MSP-430">machine directives, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-Nios-II">machine directives, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-OPENRISC">machine directives, OPENRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-PRU">machine directives, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-RISC_002dV">machine directives, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-SH">machine directives, SH</a>:</td><td> </td><td valign="top"><a href="#SH-Directives">SH Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-SPARC">machine directives, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-TIC54X">machine directives, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-TIC6X">machine directives, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-TILE_002dGx">machine directives, TILE-Gx</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Directives">TILE-Gx Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-TILEPro">machine directives, TILEPro</a>:</td><td> </td><td valign="top"><a href="#TILEPro-Directives">TILEPro Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-V850">machine directives, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-VAX">machine directives, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-x86">machine directives, x86</a>:</td><td> </td><td valign="top"><a href="#i386_002dDirectives">i386-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-directives_002c-XStormy16">machine directives, XStormy16</a>:</td><td> </td><td valign="top"><a href="#XStormy16-Directives">XStormy16 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-independent-directives">machine independent directives</a>:</td><td> </td><td valign="top"><a href="#Pseudo-Ops">Pseudo Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-instructions-_0028not-covered_0029">machine instructions (not covered)</a>:</td><td> </td><td valign="top"><a href="#Manual">Manual</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-relocations_002c-Nios-II">machine relocations, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine-relocations_002c-PRU">machine relocations, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Relocations">PRU Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-machine_002dindependent-syntax">machine-independent syntax</a>:</td><td> </td><td valign="top"><a href="#Syntax">Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-macro-directive"><code>macro</code> directive</a>:</td><td> </td><td valign="top"><a href="#Macro">Macro</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-macro-directive_002c-TIC54X"><code>macro</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-macros">macros</a>:</td><td> </td><td valign="top"><a href="#Macro">Macro</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-macros_002c-count-executed">macros, count executed</a>:</td><td> </td><td valign="top"><a href="#Macro">Macro</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Macros_002c-MSP-430">Macros, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dMacros">MSP430-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-macros_002c-TIC54X">macros, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-make-rules">make rules</a>:</td><td> </td><td valign="top"><a href="#MD">MD</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-manual_002c-structure-and-purpose">manual, structure and purpose</a>:</td><td> </td><td valign="top"><a href="#Manual">Manual</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-marc600-command_002dline-option_002c-ARC"><code>marc600</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mARC601-command_002dline-option_002c-ARC"><code>mARC601</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mARC700-command_002dline-option_002c-ARC"><code>mARC700</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-march-command_002dline-option_002c-C_002dSKY"><code>march</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-march-command_002dline-option_002c-Nios-II"><code>march</code> command-line option, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-math-builtins_002c-TIC54X">math builtins, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Maximum-number-of-continuation-lines">Maximum number of continuation lines</a>:</td><td> </td><td valign="top"><a href="#listing">listing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mbig_002dendian-command_002dline-option_002c-C_002dSKY"><code>mbig-endian</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mbranch_002dstub-command_002dline-option_002c-C_002dSKY"><code>mbranch-stub</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mcache-command_002dline-option_002c-C_002dSKY"><code>mcache</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mcp-command_002dline-option_002c-C_002dSKY"><code>mcp</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mcpu-command_002dline-option_002c-C_002dSKY"><code>mcpu</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mdsp-command_002dline-option_002c-C_002dSKY"><code>mdsp</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-medsp-command_002dline-option_002c-C_002dSKY"><code>medsp</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-melrw-command_002dline-option_002c-C_002dSKY"><code>melrw</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mEM-command_002dline-option_002c-ARC"><code>mEM</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-memory-references_002c-i386">memory references, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dMemory">i386-Memory</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-memory-references_002c-x86_002d64">memory references, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dMemory">i386-Memory</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-memory_002dmapped-registers_002c-TIC54X">memory-mapped registers, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMMRegs">TIC54X-MMRegs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-merging-text-and-data-sections">merging text and data sections</a>:</td><td> </td><td valign="top"><a href="#R">R</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-messages-from-assembler">messages from assembler</a>:</td><td> </td><td valign="top"><a href="#Errors">Errors</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Meta-architectures">Meta architectures</a>:</td><td> </td><td valign="top"><a href="#Meta-Options">Meta Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Meta-line-comment-character">Meta line comment character</a>:</td><td> </td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Meta-line-separator">Meta line separator</a>:</td><td> </td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Meta-options">Meta options</a>:</td><td> </td><td valign="top"><a href="#Meta-Options">Meta Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Meta-registers">Meta registers</a>:</td><td> </td><td valign="top"><a href="#Meta_002dRegs">Meta-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Meta-support">Meta support</a>:</td><td> </td><td valign="top"><a href="#Meta_002dDependent">Meta-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mforce2bsr-command_002dline-option_002c-C_002dSKY"><code>mforce2bsr</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mhard_002dfloat-command_002dline-option_002c-C_002dSKY"><code>mhard-float</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mHS-command_002dline-option_002c-ARC"><code>mHS</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MicroBlaze-architectures">MicroBlaze architectures</a>:</td><td> </td><td valign="top"><a href="#MicroBlaze_002dDependent">MicroBlaze-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MicroBlaze-directives">MicroBlaze directives</a>:</td><td> </td><td valign="top"><a href="#MicroBlaze-Directives">MicroBlaze Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MicroBlaze-line-comment-character">MicroBlaze line comment character</a>:</td><td> </td><td valign="top"><a href="#MicroBlaze_002dChars">MicroBlaze-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MicroBlaze-line-separator">MicroBlaze line separator</a>:</td><td> </td><td valign="top"><a href="#MicroBlaze_002dChars">MicroBlaze-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MicroBlaze-support">MicroBlaze support</a>:</td><td> </td><td valign="top"><a href="#MicroBlaze_002dDependent">MicroBlaze-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-minus_002c-permitted-arguments">minus, permitted arguments</a>:</td><td> </td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-32_002dbit-microMIPS-instruction-generation-override">MIPS 32-bit microMIPS instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-assembly-options">MIPS assembly options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-architecture-options">MIPS architecture options</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-big_002dendian-output">MIPS big-endian output</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-CPU-override">MIPS CPU override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ISA">MIPS ISA</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-cyclic-redundancy-check-_0028CRC_0029-instruction-generation-override">MIPS cyclic redundancy check (CRC) instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-directives-to-override-command_002dline-options">MIPS directives to override command-line options</a>:</td><td> </td><td valign="top"><a href="#MIPS-assembly-options">MIPS assembly options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-DSP-Release-1-instruction-generation-override">MIPS DSP Release 1 instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-DSP-Release-2-instruction-generation-override">MIPS DSP Release 2 instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-DSP-Release-3-instruction-generation-override">MIPS DSP Release 3 instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-endianness">MIPS endianness</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-eXtended-Physical-Address-_0028XPA_0029-instruction-generation-override">MIPS eXtended Physical Address (XPA) instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-Global-INValidate-_0028GINV_0029-instruction-generation-override">MIPS Global INValidate (GINV) instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-IEEE-754-NaN-data-encoding-selection">MIPS IEEE 754 NaN data encoding selection</a>:</td><td> </td><td valign="top"><a href="#MIPS-NaN-Encodings">MIPS NaN Encodings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-ISA">MIPS ISA</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-ISA-override">MIPS ISA override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ISA">MIPS ISA</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-line-comment-character">MIPS line comment character</a>:</td><td> </td><td valign="top"><a href="#MIPS_002dChars">MIPS-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-line-separator">MIPS line separator</a>:</td><td> </td><td valign="top"><a href="#MIPS_002dChars">MIPS-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-little_002dendian-output">MIPS little-endian output</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-MCU-instruction-generation-override">MIPS MCU instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-MDMX-instruction-generation-override">MIPS MDMX instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-MIPS_002d3D-instruction-generation-override">MIPS MIPS-3D instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-MT-instruction-generation-override">MIPS MT instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-option-stack">MIPS option stack</a>:</td><td> </td><td valign="top"><a href="#MIPS-Option-Stack">MIPS Option Stack</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-processor">MIPS processor</a>:</td><td> </td><td valign="top"><a href="#MIPS_002dDependent">MIPS-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS-SIMD-Architecture-instruction-generation-override">MIPS SIMD Architecture instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIPS16e2-instruction-generation-override">MIPS16e2 instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mistack-command_002dline-option_002c-C_002dSKY"><code>mistack</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MIT"><small>MIT</small></a>:</td><td> </td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mjsri2bsr-command_002dline-option_002c-C_002dSKY"><code>mjsri2bsr</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mlabr-command_002dline-option_002c-C_002dSKY"><code>mlabr</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mlaf-command_002dline-option_002c-C_002dSKY"><code>mlaf</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mlib-directive_002c-TIC54X"><code>mlib</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mlink_002drelax-command_002dline-option_002c-PRU"><code>mlink-relax</code> command-line option, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Options">PRU Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mlist-directive_002c-TIC54X"><code>mlist</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mliterals_002dafter_002dbr-command_002dline-option_002c-C_002dSKY"><code>mliterals-after-br</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mliterals_002dafter_002dfunc-command_002dline-option_002c-C_002dSKY"><code>mliterals-after-func</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mlittle_002dendian-command_002dline-option_002c-C_002dSKY"><code>mlittle-endian</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mljump-command_002dline-option_002c-C_002dSKY"><code>mljump</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-BSPEC">MMIX assembler directive BSPEC</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-BYTE">MMIX assembler directive BYTE</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-ESPEC">MMIX assembler directive ESPEC</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-GREG">MMIX assembler directive GREG</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-IS">MMIX assembler directive IS</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-LOC">MMIX assembler directive LOC</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-LOCAL">MMIX assembler directive LOCAL</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-OCTA">MMIX assembler directive OCTA</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-PREFIX">MMIX assembler directive PREFIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-TETRA">MMIX assembler directive TETRA</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-WYDE">MMIX assembler directive WYDE</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directives">MMIX assembler directives</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-line-comment-characters">MMIX line comment characters</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dChars">MMIX-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-options">MMIX options</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-BSPEC">MMIX pseudo-op BSPEC</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-BYTE">MMIX pseudo-op BYTE</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-ESPEC">MMIX pseudo-op ESPEC</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-GREG">MMIX pseudo-op GREG</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-IS">MMIX pseudo-op IS</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-LOC">MMIX pseudo-op LOC</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-LOCAL">MMIX pseudo-op LOCAL</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-OCTA">MMIX pseudo-op OCTA</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-PREFIX">MMIX pseudo-op PREFIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-TETRA">MMIX pseudo-op TETRA</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-WYDE">MMIX pseudo-op WYDE</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dops">MMIX pseudo-ops</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-register-names">MMIX register names</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dRegs">MMIX-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMIX-support">MMIX support</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dDependent">MMIX-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mmixal-differences">mmixal differences</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dmmixal">MMIX-mmixal</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mmp-command_002dline-option_002c-C_002dSKY"><code>mmp</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mmregs-directive_002c-TIC54X"><code>mmregs</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mmsg-directive_002c-TIC54X"><code>mmsg</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMX_002c-i386">MMX, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dSIMD">i386-SIMD</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MMX_002c-x86_002d64">MMX, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dSIMD">i386-SIMD</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnemonic-compatibility_002c-i386">mnemonic compatibility, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnemonic-suffixes_002c-i386">mnemonic suffixes, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnemonic-suffixes_002c-x86_002d64">mnemonic suffixes, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnemonics-for-opcodes_002c-VAX">mnemonics for opcodes, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dopcodes">VAX-opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnemonics_002c-AVR">mnemonics, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR-Opcodes">AVR Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnemonics_002c-D10V">mnemonics, D10V</a>:</td><td> </td><td valign="top"><a href="#D10V_002dOpcodes">D10V-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnemonics_002c-D30V">mnemonics, D30V</a>:</td><td> </td><td valign="top"><a href="#D30V_002dOpcodes">D30V-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnemonics_002c-H8_002f300">mnemonics, H8/300</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Opcodes">H8/300 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnemonics_002c-LM32">mnemonics, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32-Opcodes">LM32 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnemonics_002c-OpenRISC">mnemonics, OpenRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dOpcodes">OpenRISC-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnemonics_002c-SH">mnemonics, SH</a>:</td><td> </td><td valign="top"><a href="#SH-Opcodes">SH Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnemonics_002c-Z8000">mnemonics, Z8000</a>:</td><td> </td><td valign="top"><a href="#Z8000-Opcodes">Z8000 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mno_002dbranch_002dstub-command_002dline-option_002c-C_002dSKY"><code>mno-branch-stub</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mno_002delrw-command_002dline-option_002c-C_002dSKY"><code>mno-elrw</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mno_002dforce2bsr-command_002dline-option_002c-C_002dSKY"><code>mno-force2bsr</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mno_002distack-command_002dline-option_002c-C_002dSKY"><code>mno-istack</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mno_002djsri2bsr-command_002dline-option_002c-C_002dSKY"><code>mno-jsri2bsr</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mno_002dlabr-command_002dline-option_002c-C_002dSKY"><code>mno-labr</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mno_002dlaf-command_002dline-option_002c-C_002dSKY"><code>mno-laf</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mno_002dlink_002drelax-command_002dline-option_002c-PRU"><code>mno-link-relax</code> command-line option, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Options">PRU Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mno_002dliterals_002dafter_002dfunc-command_002dline-option_002c-C_002dSKY"><code>mno-literals-after-func</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mno_002dljump-command_002dline-option_002c-C_002dSKY"><code>mno-ljump</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mno_002dlrw-command_002dline-option_002c-C_002dSKY"><code>mno-lrw</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mno_002dwarn_002dregname_002dlabel-command_002dline-option_002c-PRU"><code>mno-warn-regname-label</code> command-line option, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Options">PRU Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnolist-directive_002c-TIC54X"><code>mnolist</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnoliterals_002dafter_002dbr-command_002dline-option_002c-C_002dSKY"><code>mnoliterals-after-br</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnolrw-command_002dline-option_002c-C_002dSKY"><code>mnolrw</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mnps400-command_002dline-option_002c-ARC"><code>mnps400</code> command-line option, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-modifiers_002c-M32C">modifiers, M32C</a>:</td><td> </td><td valign="top"><a href="#M32C_002dModifiers">M32C-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-module-layout_002c-WebAssembly">module layout, WebAssembly</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dmodule_002dlayout">WebAssembly-module-layout</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Motorola-syntax-for-the-680x0">Motorola syntax for the 680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dMoto_002dSyntax">M68K-Moto-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MOVI-instructions_002c-relaxation"><code>MOVI</code> instructions, relaxation</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MOVN_002c-MOVZ-and-MOVK-group-relocations_002c-AArch64">MOVN, MOVZ and MOVK group relocations, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dRelocations">AArch64-Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MOVW-and-MOVT-relocations_002c-ARM">MOVW and MOVT relocations, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM_002dRelocations">ARM-Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MRI-compatibility-mode">MRI compatibility mode</a>:</td><td> </td><td valign="top"><a href="#M">M</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mri-directive"><code>mri</code> directive</a>:</td><td> </td><td valign="top"><a href="#MRI">MRI</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MRI-mode_002c-temporarily">MRI mode, temporarily</a>:</td><td> </td><td valign="top"><a href="#MRI">MRI</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-msecurity-command_002dline-option_002c-C_002dSKY"><code>msecurity</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MSP-430-floating-point-_0028IEEE_0029">MSP 430 floating point (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#MSP430-Floating-Point">MSP430 Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MSP-430-identifiers">MSP 430 identifiers</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MSP-430-line-comment-character">MSP 430 line comment character</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MSP-430-line-separator">MSP 430 line separator</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MSP-430-machine-directives">MSP 430 machine directives</a>:</td><td> </td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MSP-430-macros">MSP 430 macros</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dMacros">MSP430-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MSP-430-opcodes">MSP 430 opcodes</a>:</td><td> </td><td valign="top"><a href="#MSP430-Opcodes">MSP430 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MSP-430-options-_0028none_0029">MSP 430 options (none)</a>:</td><td> </td><td valign="top"><a href="#MSP430-Options">MSP430 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MSP-430-profiling-capability">MSP 430 profiling capability</a>:</td><td> </td><td valign="top"><a href="#MSP430-Profiling-Capability">MSP430 Profiling Capability</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MSP-430-register-names">MSP 430 register names</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dRegs">MSP430-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MSP-430-support">MSP 430 support</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dDependent">MSP430-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-MSP430-Assembler-Extensions">MSP430 Assembler Extensions</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dExt">MSP430-Ext</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mspabi_005fattribute-directive_002c-MSP430"><code>mspabi_attribute</code> directive, MSP430</a>:</td><td> </td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mtrust-command_002dline-option_002c-C_002dSKY"><code>mtrust</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mul-instruction_002c-i386"><code>mul</code> instruction, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dNotes">i386-Notes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mul-instruction_002c-x86_002d64"><code>mul</code> instruction, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dNotes">i386-Notes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-mvdsp-command_002dline-option_002c-C_002dSKY"><code>mvdsp</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-N">N</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-N32K-support">N32K support</a>:</td><td> </td><td valign="top"><a href="#NS32K_002dDependent">NS32K-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-name"><code>name</code></a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-named-section">named section</a>:</td><td> </td><td valign="top"><a href="#Section">Section</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-named-sections">named sections</a>:</td><td> </td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-names_002c-symbol">names, symbol</a>:</td><td> </td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-naming-object-file">naming object file</a>:</td><td> </td><td valign="top"><a href="#o">o</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-NDS32-options">NDS32 options</a>:</td><td> </td><td valign="top"><a href="#NDS32-Options">NDS32 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-NDS32-processor">NDS32 processor</a>:</td><td> </td><td valign="top"><a href="#NDS32_002dDependent">NDS32-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-new-page_002c-in-listings">new page, in listings</a>:</td><td> </td><td valign="top"><a href="#Eject">Eject</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-newblock-directive_002c-TIC54X"><code>newblock</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-newline-_0028_005cn_0029">newline (<code>\n</code>)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-newline_002c-required-at-file-end">newline, required at file end</a>:</td><td> </td><td valign="top"><a href="#Statements">Statements</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Nios-II-line-comment-character">Nios II line comment character</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Chars">Nios II Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Nios-II-line-separator-character">Nios II line separator character</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Chars">Nios II Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Nios-II-machine-directives">Nios II machine directives</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Nios-II-machine-relocations">Nios II machine relocations</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Nios-II-opcodes">Nios II opcodes</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Opcodes">Nios II Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Nios-II-options">Nios II options</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Nios-II-support">Nios II support</a>:</td><td> </td><td valign="top"><a href="#NiosII_002dDependent">NiosII-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Nios-support">Nios support</a>:</td><td> </td><td valign="top"><a href="#NiosII_002dDependent">NiosII-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-no_002dabsolute_002dliterals-directive"><code>no-absolute-literals</code> directive</a>:</td><td> </td><td valign="top"><a href="#Absolute-Literals-Directive">Absolute Literals Directive</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-no_002dforce2bsr-command_002dline-option_002c-C_002dSKY"><code>no-force2bsr</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-no_002djsri2bsr-command_002dline-option_002c-C_002dSKY"><code>no-jsri2bsr</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-no_002dlongcalls-directive"><code>no-longcalls</code> directive</a>:</td><td> </td><td valign="top"><a href="#Longcalls-Directive">Longcalls Directive</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-no_002drelax-command_002dline-option_002c-Nios-II"><code>no-relax</code> command-line option, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-no_002dschedule-directive"><code>no-schedule</code> directive</a>:</td><td> </td><td valign="top"><a href="#Schedule-Directive">Schedule Directive</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-no_002dtransform-directive"><code>no-transform</code> directive</a>:</td><td> </td><td valign="top"><a href="#Transform-Directive">Transform Directive</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-nodelay-directive_002c-OpenRISC"><code>nodelay</code> directive, OpenRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-nolist-directive"><code>nolist</code> directive</a>:</td><td> </td><td valign="top"><a href="#Nolist">Nolist</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-nolist-directive_002c-TIC54X"><code>nolist</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-nop-directive"><code>nop</code> directive</a>:</td><td> </td><td valign="top"><a href="#Nop">Nop</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-NOP-pseudo-op_002c-ARM"><code>NOP</code> pseudo op, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Opcodes">ARM Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-nops-directive"><code>nops</code> directive</a>:</td><td> </td><td valign="top"><a href="#Nops">Nops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-notes-for-Alpha">notes for Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha-Notes">Alpha Notes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-notes-for-WebAssembly">notes for WebAssembly</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dNotes">WebAssembly-Notes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-NS32K-line-comment-character">NS32K line comment character</a>:</td><td> </td><td valign="top"><a href="#NS32K_002dChars">NS32K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-NS32K-line-separator">NS32K line separator</a>:</td><td> </td><td valign="top"><a href="#NS32K_002dChars">NS32K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-null_002dterminated-strings">null-terminated strings</a>:</td><td> </td><td valign="top"><a href="#Asciz">Asciz</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-number-constants">number constants</a>:</td><td> </td><td valign="top"><a href="#Numbers">Numbers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-number-of-macros-executed">number of macros executed</a>:</td><td> </td><td valign="top"><a href="#Macro">Macro</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-numbered-subsections">numbered subsections</a>:</td><td> </td><td valign="top"><a href="#Sub_002dSections">Sub-Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-numbers_002c-16_002dbit">numbers, 16-bit</a>:</td><td> </td><td valign="top"><a href="#hword">hword</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-numeric-values">numeric values</a>:</td><td> </td><td valign="top"><a href="#Expressions">Expressions</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-nword-directive_002c-SPARC"><code>nword</code> directive, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-O">O</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Object-Attribute_002c-RISC_002dV">Object Attribute, RISC-V</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dATTRIBUTE">RISC-V-ATTRIBUTE</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-object-attributes">object attributes</a>:</td><td> </td><td valign="top"><a href="#Object-Attributes">Object Attributes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-object-file">object file</a>:</td><td> </td><td valign="top"><a href="#Object">Object</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-object-file-format">object file format</a>:</td><td> </td><td valign="top"><a href="#Object-Formats">Object Formats</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-object-file-name">object file name</a>:</td><td> </td><td valign="top"><a href="#o">o</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-object-file_002c-after-errors">object file, after errors</a>:</td><td> </td><td valign="top"><a href="#Z">Z</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-obsolescent-directives">obsolescent directives</a>:</td><td> </td><td valign="top"><a href="#Deprecated">Deprecated</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-octa-directive"><code>octa</code> directive</a>:</td><td> </td><td valign="top"><a href="#Octa">Octa</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-octal-character-code-_0028_005cddd_0029">octal character code (<code>\<var>ddd</var></code>)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-octal-integers">octal integers</a>:</td><td> </td><td valign="top"><a href="#Integers">Integers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-offset-directive"><code>offset</code> directive</a>:</td><td> </td><td valign="top"><a href="#Offset">Offset</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-offset-directive_002c-V850"><code>offset</code> directive, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcode-mnemonics_002c-VAX">opcode mnemonics, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dopcodes">VAX-opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcode-names_002c-TILE_002dGx">opcode names, TILE-Gx</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Opcodes">TILE-Gx Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcode-names_002c-TILEPro">opcode names, TILEPro</a>:</td><td> </td><td valign="top"><a href="#TILEPro-Opcodes">TILEPro Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcode-names_002c-Xtensa">opcode names, Xtensa</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Opcodes">Xtensa Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-AVR">opcode summary, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR-Opcodes">AVR Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-D10V">opcode summary, D10V</a>:</td><td> </td><td valign="top"><a href="#D10V_002dOpcodes">D10V-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-D30V">opcode summary, D30V</a>:</td><td> </td><td valign="top"><a href="#D30V_002dOpcodes">D30V-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-H8_002f300">opcode summary, H8/300</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Opcodes">H8/300 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-LM32">opcode summary, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32-Opcodes">LM32 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-OpenRISC">opcode summary, OpenRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dOpcodes">OpenRISC-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-SH">opcode summary, SH</a>:</td><td> </td><td valign="top"><a href="#SH-Opcodes">SH Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-Z8000">opcode summary, Z8000</a>:</td><td> </td><td valign="top"><a href="#Z8000-Opcodes">Z8000 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcodes-for-AArch64">opcodes for AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64-Opcodes">AArch64 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcodes-for-ARC">opcodes for ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Opcodes">ARC Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcodes-for-ARM">opcodes for ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Opcodes">ARM Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcodes-for-BPF">opcodes for BPF</a>:</td><td> </td><td valign="top"><a href="#BPF-Opcodes">BPF Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcodes-for-MSP-430">opcodes for MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430-Opcodes">MSP430 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcodes-for-Nios-II">opcodes for Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Opcodes">Nios II Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcodes-for-PRU">opcodes for PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Opcodes">PRU Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcodes-for-V850">opcodes for V850</a>:</td><td> </td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcodes_002c-M680x0">opcodes, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dopcodes">M68K-opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcodes_002c-M68HC11">opcodes, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dopcodes">M68HC11-opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-opcodes_002c-WebAssembly">opcodes, WebAssembly</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dOpcodes">WebAssembly-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-OPENRISC-floating-point-_0028IEEE_0029">OPENRISC floating point (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dFloat">OpenRISC-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-OpenRISC-line-comment-character">OpenRISC line comment character</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dChars">OpenRISC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-OpenRISC-line-separator">OpenRISC line separator</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dChars">OpenRISC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-OPENRISC-machine-directives">OPENRISC machine directives</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-OpenRISC-opcode-summary">OpenRISC opcode summary</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dOpcodes">OpenRISC-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-OpenRISC-registers">OpenRISC registers</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dRegs">OpenRISC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-OpenRISC-relocations">OpenRISC relocations</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dRelocs">OpenRISC-Relocs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-OPENRISC-support">OPENRISC support</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dDependent">OpenRISC-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-OPENRISC-syntax">OPENRISC syntax</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dDependent">OpenRISC-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-operand-delimiters_002c-i386">operand delimiters, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-operand-delimiters_002c-x86_002d64">operand delimiters, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-operand-notation_002c-VAX">operand notation, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-operands-in-expressions">operands in expressions</a>:</td><td> </td><td valign="top"><a href="#Arguments">Arguments</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-operator-precedence">operator precedence</a>:</td><td> </td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-operators_002c-in-expressions">operators, in expressions</a>:</td><td> </td><td valign="top"><a href="#Operators">Operators</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-operators_002c-permitted-arguments">operators, permitted arguments</a>:</td><td> </td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-optimization_002c-D10V">optimization, D10V</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-optimization_002c-D30V">optimization, D30V</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-optimizations">optimizations</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Optimizations">Xtensa Optimizations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Option-directive">Option directive</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-option-directive"><code>option</code> directive</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-option-directive_002c-TIC54X"><code>option</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-option-summary">option summary</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-AArch64-_0028none_0029">options for AArch64 (none)</a>:</td><td> </td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-Alpha">options for Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-ARC">options for ARC</a>:</td><td> </td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-ARM-_0028none_0029">options for ARM (none)</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-AVR-_0028none_0029">options for AVR (none)</a>:</td><td> </td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-Blackfin-_0028none_0029">options for Blackfin (none)</a>:</td><td> </td><td valign="top"><a href="#Blackfin-Options">Blackfin Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-BPF-_0028none_0029">options for BPF (none)</a>:</td><td> </td><td valign="top"><a href="#BPF-Options">BPF Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-C_002dSKY">options for C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-i386">options for i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-IA_002d64">options for IA-64</a>:</td><td> </td><td valign="top"><a href="#IA_002d64-Options">IA-64 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-LM32-_0028none_0029">options for LM32 (none)</a>:</td><td> </td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-Meta">options for Meta</a>:</td><td> </td><td valign="top"><a href="#Meta-Options">Meta Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-MSP430-_0028none_0029">options for MSP430 (none)</a>:</td><td> </td><td valign="top"><a href="#MSP430-Options">MSP430 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-NDS32">options for NDS32</a>:</td><td> </td><td valign="top"><a href="#NDS32-Options">NDS32 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-Nios-II">options for Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-PDP_002d11">options for PDP-11</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-PowerPC">options for PowerPC</a>:</td><td> </td><td valign="top"><a href="#PowerPC_002dOpts">PowerPC-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-PRU">options for PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Options">PRU Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-s390">options for s390</a>:</td><td> </td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-SCORE">options for SCORE</a>:</td><td> </td><td valign="top"><a href="#SCORE_002dOpts">SCORE-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-SPARC">options for SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-TIC6X">options for TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-V850-_0028none_0029">options for V850 (none)</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-VAX_002fVMS">options for VAX/VMS</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-Visium">options for Visium</a>:</td><td> </td><td valign="top"><a href="#Visium-Options">Visium Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-x86_002d64">options for x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options-for-Z80">options for Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-all-versions-of-assembler">options, all versions of assembler</a>:</td><td> </td><td valign="top"><a href="#Invoking">Invoking</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-command-line">options, command line</a>:</td><td> </td><td valign="top"><a href="#Command-Line">Command Line</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-CRIS">options, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-D10V">options, D10V</a>:</td><td> </td><td valign="top"><a href="#D10V_002dOpts">D10V-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-D30V">options, D30V</a>:</td><td> </td><td valign="top"><a href="#D30V_002dOpts">D30V-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-Epiphany">options, Epiphany</a>:</td><td> </td><td valign="top"><a href="#Epiphany-Options">Epiphany Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-H8_002f300">options, H8/300</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Options">H8/300 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-IP2K">options, IP2K</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-M32C">options, M32C</a>:</td><td> </td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-M32R">options, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-M680x0">options, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-M68HC11">options, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-MMIX">options, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-PJ">options, PJ</a>:</td><td> </td><td valign="top"><a href="#PJ-Options">PJ Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-RL78">options, RL78</a>:</td><td> </td><td valign="top"><a href="#RL78_002dOpts">RL78-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-RX">options, RX</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-S12Z">options, S12Z</a>:</td><td> </td><td valign="top"><a href="#S12Z-Options">S12Z Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-SH">options, SH</a>:</td><td> </td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-TIC54X">options, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-XGATE">options, XGATE</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-options_002c-Z8000">options, Z8000</a>:</td><td> </td><td valign="top"><a href="#Z8000-Options">Z8000 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-org-directive"><code>org</code> directive</a>:</td><td> </td><td valign="top"><a href="#Org">Org</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-other-attribute_002c-of-a_002eout-symbol">other attribute, of <code>a.out</code> symbol</a>:</td><td> </td><td valign="top"><a href="#Symbol-Other">Symbol Other</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-output-file">output file</a>:</td><td> </td><td valign="top"><a href="#Object">Object</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-output-section-padding">output section padding</a>:</td><td> </td><td valign="top"><a href="#no_002dpad_002dsections">no-pad-sections</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-P">P</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-p2align-directive"><code>p2align</code> directive</a>:</td><td> </td><td valign="top"><a href="#P2align">P2align</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-p2alignl-directive"><code>p2alignl</code> directive</a>:</td><td> </td><td valign="top"><a href="#P2align">P2align</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-p2alignw-directive"><code>p2alignw</code> directive</a>:</td><td> </td><td valign="top"><a href="#P2align">P2align</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-padding-the-location-counter">padding the location counter</a>:</td><td> </td><td valign="top"><a href="#Align">Align</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-padding-the-location-counter-given-a-power-of-two">padding the location counter given a power of two</a>:</td><td> </td><td valign="top"><a href="#P2align">P2align</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-padding-the-location-counter-given-number-of-bytes">padding the location counter given number of bytes</a>:</td><td> </td><td valign="top"><a href="#Balign">Balign</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-page_002c-in-listings">page, in listings</a>:</td><td> </td><td valign="top"><a href="#Eject">Eject</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-paper-size_002c-for-listings">paper size, for listings</a>:</td><td> </td><td valign="top"><a href="#Psize">Psize</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-paths-for-_002einclude">paths for <code>.include</code></a>:</td><td> </td><td valign="top"><a href="#I">I</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-patterns_002c-writing-in-memory">patterns, writing in memory</a>:</td><td> </td><td valign="top"><a href="#Fill">Fill</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PDP_002d11-comments">PDP-11 comments</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PDP_002d11-floating_002dpoint-register-syntax">PDP-11 floating-point register syntax</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PDP_002d11-general_002dpurpose-register-syntax">PDP-11 general-purpose register syntax</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PDP_002d11-instruction-naming">PDP-11 instruction naming</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dMnemonics">PDP-11-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PDP_002d11-line-separator">PDP-11 line separator</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PDP_002d11-support">PDP-11 support</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dDependent">PDP-11-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PDP_002d11-syntax">PDP-11 syntax</a>:</td><td> </td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PIC-code-generation-for-ARM">PIC code generation for ARM</a>:</td><td> </td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PIC-code-generation-for-M32R">PIC code generation for M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pic-command_002dline-option_002c-C_002dSKY"><code>pic</code> command-line option, C-SKY</a>:</td><td> </td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PIC-selection_002c-MIPS">PIC selection, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PJ-endianness">PJ endianness</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PJ-line-comment-character">PJ line comment character</a>:</td><td> </td><td valign="top"><a href="#PJ_002dChars">PJ-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PJ-line-separator">PJ line separator</a>:</td><td> </td><td valign="top"><a href="#PJ_002dChars">PJ-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PJ-options">PJ options</a>:</td><td> </td><td valign="top"><a href="#PJ-Options">PJ Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PJ-support">PJ support</a>:</td><td> </td><td valign="top"><a href="#PJ_002dDependent">PJ-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-plus_002c-permitted-arguments">plus, permitted arguments</a>:</td><td> </td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pmem-directive_002c-PRU"><code>pmem</code> directive, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Relocations">PRU Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-popsection-directive"><code>popsection</code> directive</a>:</td><td> </td><td valign="top"><a href="#PopSection">PopSection</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Position_002dindependent-code_002c-CRIS">Position-independent code, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Position_002dindependent-code_002c-symbols-in_002c-CRIS">Position-independent code, symbols in, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPic">CRIS-Pic</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PowerPC-architectures">PowerPC architectures</a>:</td><td> </td><td valign="top"><a href="#PowerPC_002dOpts">PowerPC-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PowerPC-directives">PowerPC directives</a>:</td><td> </td><td valign="top"><a href="#PowerPC_002dPseudo">PowerPC-Pseudo</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PowerPC-line-comment-character">PowerPC line comment character</a>:</td><td> </td><td valign="top"><a href="#PowerPC_002dChars">PowerPC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PowerPC-line-separator">PowerPC line separator</a>:</td><td> </td><td valign="top"><a href="#PowerPC_002dChars">PowerPC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PowerPC-options">PowerPC options</a>:</td><td> </td><td valign="top"><a href="#PowerPC_002dOpts">PowerPC-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PowerPC-support">PowerPC support</a>:</td><td> </td><td valign="top"><a href="#PPC_002dDependent">PPC-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-precedence-of-operators">precedence of operators</a>:</td><td> </td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-precision_002c-floating-point">precision, floating point</a>:</td><td> </td><td valign="top"><a href="#Flonums">Flonums</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-prefix-operators">prefix operators</a>:</td><td> </td><td valign="top"><a href="#Prefix-Ops">Prefix Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-prefixes_002c-i386">prefixes, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-preprocessing">preprocessing</a>:</td><td> </td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-preprocessing_002c-turning-on-and-off">preprocessing, turning on and off</a>:</td><td> </td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-previous-directive"><code>previous</code> directive</a>:</td><td> </td><td valign="top"><a href="#Previous">Previous</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-primary-attributes_002c-COFF-symbols">primary attributes, COFF symbols</a>:</td><td> </td><td valign="top"><a href="#COFF-Symbols">COFF Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-print-directive"><code>print</code> directive</a>:</td><td> </td><td valign="top"><a href="#Print">Print</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-proc-directive_002c-OpenRISC"><code>proc</code> directive, OpenRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-proc-directive_002c-SPARC"><code>proc</code> directive, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Processor-Identification-register_002c-ARC">Processor Identification register, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-profiler-directive_002c-MSP-430"><code>profiler</code> directive, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-profiling-capability-for-MSP-430">profiling capability for MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430-Profiling-Capability">MSP430 Profiling Capability</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Program-Counter_002c-ARC">Program Counter, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-protected-directive"><code>protected</code> directive</a>:</td><td> </td><td valign="top"><a href="#Protected">Protected</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PRU-line-comment-character">PRU line comment character</a>:</td><td> </td><td valign="top"><a href="#PRU-Chars">PRU Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PRU-machine-directives">PRU machine directives</a>:</td><td> </td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PRU-machine-relocations">PRU machine relocations</a>:</td><td> </td><td valign="top"><a href="#PRU-Relocations">PRU Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PRU-opcodes">PRU opcodes</a>:</td><td> </td><td valign="top"><a href="#PRU-Opcodes">PRU Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PRU-options">PRU options</a>:</td><td> </td><td valign="top"><a href="#PRU-Options">PRU Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PRU-support">PRU support</a>:</td><td> </td><td valign="top"><a href="#PRU_002dDependent">PRU-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-psect-directive_002c-Z80"><code>psect</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo-map-fd_002c-BPF">pseudo map fd, BPF</a>:</td><td> </td><td valign="top"><a href="#BPF_002dPseudo_002dMaps">BPF-Pseudo-Maps</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-_002earch_002c-CRIS">pseudo-op .arch, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-_002edword_002c-CRIS">pseudo-op .dword, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-_002esyntax_002c-CRIS">pseudo-op .syntax, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-BSPEC_002c-MMIX">pseudo-op BSPEC, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-BYTE_002c-MMIX">pseudo-op BYTE, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-ESPEC_002c-MMIX">pseudo-op ESPEC, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-GREG_002c-MMIX">pseudo-op GREG, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-IS_002c-MMIX">pseudo-op IS, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-LOC_002c-MMIX">pseudo-op LOC, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-LOCAL_002c-MMIX">pseudo-op LOCAL, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-OCTA_002c-MMIX">pseudo-op OCTA, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-PREFIX_002c-MMIX">pseudo-op PREFIX, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-TETRA_002c-MMIX">pseudo-op TETRA, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dop-WYDE_002c-MMIX">pseudo-op WYDE, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dopcodes-for-XStormy16">pseudo-opcodes for XStormy16</a>:</td><td> </td><td valign="top"><a href="#XStormy16-Opcodes">XStormy16 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dopcodes_002c-M680x0">pseudo-opcodes, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dBranch">M68K-Branch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dopcodes_002c-M68HC11">pseudo-opcodes, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dBranch">M68HC11-Branch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dops-for-branch_002c-VAX">pseudo-ops for branch, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dbranch">VAX-branch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dops_002c-CRIS">pseudo-ops, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dops_002c-machine-independent">pseudo-ops, machine independent</a>:</td><td> </td><td valign="top"><a href="#Pseudo-Ops">Pseudo Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pseudo_002dops_002c-MMIX">pseudo-ops, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-psize-directive"><code>psize</code> directive</a>:</td><td> </td><td valign="top"><a href="#Psize">Psize</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-PSR-bits">PSR bits</a>:</td><td> </td><td valign="top"><a href="#IA_002d64_002dBits">IA-64-Bits</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pstring-directive_002c-TIC54X"><code>pstring</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-psw-register_002c-V850"><code>psw</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-purgem-directive"><code>purgem</code> directive</a>:</td><td> </td><td valign="top"><a href="#Purgem">Purgem</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-purpose-of-GNU-assembler">purpose of <small>GNU</small> assembler</a>:</td><td> </td><td valign="top"><a href="#GNU-Assembler">GNU Assembler</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-pushsection-directive"><code>pushsection</code> directive</a>:</td><td> </td><td valign="top"><a href="#PushSection">PushSection</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-Q">Q</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-quad-directive"><code>quad</code> directive</a>:</td><td> </td><td valign="top"><a href="#Quad">Quad</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-quad-directive_002c-i386"><code>quad</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-quad-directive_002c-x86_002d64"><code>quad</code> directive, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-R">R</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-real_002dmode-code_002c-i386">real-mode code, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ref-directive_002c-TIC54X"><code>ref</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-refsym-directive_002c-MSP-430"><code>refsym</code> directive, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-directive_002c-SPARC"><code>register</code> directive, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-name-prefix-character_002c-ARC">register name prefix character, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-AArch64">register names, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dRegs">AArch64-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-Alpha">register names, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha_002dRegs">Alpha-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-ARC">register names, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-ARM">register names, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM_002dRegs">ARM-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-AVR">register names, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR_002dRegs">AVR-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-BPF">register names, BPF</a>:</td><td> </td><td valign="top"><a href="#BPF_002dRegs">BPF-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-CRIS">register names, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dRegs">CRIS-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-H8_002f300">register names, H8/300</a>:</td><td> </td><td valign="top"><a href="#H8_002f300_002dRegs">H8/300-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-IA_002d64">register names, IA-64</a>:</td><td> </td><td valign="top"><a href="#IA_002d64_002dRegs">IA-64-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-LM32">register names, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32_002dRegs">LM32-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-MMIX">register names, MMIX</a>:</td><td> </td><td valign="top"><a href="#MMIX_002dRegs">MMIX-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-MSP-430">register names, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dRegs">MSP430-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-OpenRISC">register names, OpenRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dRegs">OpenRISC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-S12Z">register names, S12Z</a>:</td><td> </td><td valign="top"><a href="#S12Z-Addressing-Modes">S12Z Addressing Modes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-Sparc">register names, Sparc</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dRegs">Sparc-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-TILE_002dGx">register names, TILE-Gx</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Registers">TILE-Gx Registers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-TILEPro">register names, TILEPro</a>:</td><td> </td><td valign="top"><a href="#TILEPro-Registers">TILEPro Registers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-V850">register names, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-VAX">register names, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-Visium">register names, Visium</a>:</td><td> </td><td valign="top"><a href="#Visium-Registers">Visium Registers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-Xtensa">register names, Xtensa</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Registers">Xtensa Registers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-names_002c-Z80">register names, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80_002dRegs">Z80-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-naming_002c-s390">register naming, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Register">s390 Register</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-notation_002c-S12Z">register notation, S12Z</a>:</td><td> </td><td valign="top"><a href="#S12Z-Register-Notation">S12Z Register Notation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-operands_002c-i386">register operands, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-register-operands_002c-x86_002d64">register operands, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-registers_002c-D10V">registers, D10V</a>:</td><td> </td><td valign="top"><a href="#D10V_002dRegs">D10V-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-registers_002c-D30V">registers, D30V</a>:</td><td> </td><td valign="top"><a href="#D30V_002dRegs">D30V-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-registers_002c-i386">registers, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dRegs">i386-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-registers_002c-Meta">registers, Meta</a>:</td><td> </td><td valign="top"><a href="#Meta_002dRegs">Meta-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-registers_002c-SH">registers, SH</a>:</td><td> </td><td valign="top"><a href="#SH_002dRegs">SH-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-registers_002c-TIC54X-memory_002dmapped">registers, TIC54X memory-mapped</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMMRegs">TIC54X-MMRegs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-registers_002c-x86_002d64">registers, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dRegs">i386-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-registers_002c-Z8000">registers, Z8000</a>:</td><td> </td><td valign="top"><a href="#Z8000_002dRegs">Z8000-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relax_002dall-command_002dline-option_002c-Nios-II"><code>relax-all</code> command-line option, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relax_002dsection-command_002dline-option_002c-Nios-II"><code>relax-section</code> command-line option, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relaxation">relaxation</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Relaxation">Xtensa Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relaxation-of-ADDI-instructions">relaxation of <code>ADDI</code> instructions</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relaxation-of-branch-instructions">relaxation of branch instructions</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Branch-Relaxation">Xtensa Branch Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relaxation-of-call-instructions">relaxation of call instructions</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Call-Relaxation">Xtensa Call Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relaxation-of-immediate-fields">relaxation of immediate fields</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relaxation-of-jump-instructions">relaxation of jump instructions</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Jump-Relaxation">Xtensa Jump Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relaxation-of-L16SI-instructions">relaxation of <code>L16SI</code> instructions</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relaxation-of-L16UI-instructions">relaxation of <code>L16UI</code> instructions</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relaxation-of-L32I-instructions">relaxation of <code>L32I</code> instructions</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relaxation-of-L8UI-instructions">relaxation of <code>L8UI</code> instructions</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relaxation-of-MOVI-instructions">relaxation of <code>MOVI</code> instructions</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-reloc-directive"><code>reloc</code> directive</a>:</td><td> </td><td valign="top"><a href="#Reloc">Reloc</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relocation">relocation</a>:</td><td> </td><td valign="top"><a href="#Sections">Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relocation-example">relocation example</a>:</td><td> </td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relocations_002c-AArch64">relocations, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dRelocations">AArch64-Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relocations_002c-Alpha">relocations, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha_002dRelocs">Alpha-Relocs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relocations_002c-OpenRISC">relocations, OpenRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dRelocs">OpenRISC-Relocs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relocations_002c-Sparc">relocations, Sparc</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dRelocs">Sparc-Relocs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-relocations_002c-WebAssembly">relocations, WebAssembly</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dRelocs">WebAssembly-Relocs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-repeat-prefixes_002c-i386">repeat prefixes, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-reporting-bugs-in-assembler">reporting bugs in assembler</a>:</td><td> </td><td valign="top"><a href="#Reporting-Bugs">Reporting Bugs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-rept-directive"><code>rept</code> directive</a>:</td><td> </td><td valign="top"><a href="#Rept">Rept</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-reserve-directive_002c-SPARC"><code>reserve</code> directive, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-return-instructions_002c-i386">return instructions, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-return-instructions_002c-x86_002d64">return instructions, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-REX-prefixes_002c-i386">REX prefixes, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RISC_002dV-instruction-formats">RISC-V instruction formats</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dFormats">RISC-V-Formats</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RISC_002dV-machine-directives">RISC-V machine directives</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RISC_002dV-support">RISC-V support</a>:</td><td> </td><td valign="top"><a href="#RISC_002dV_002dDependent">RISC-V-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RL78-assembler-directives">RL78 assembler directives</a>:</td><td> </td><td valign="top"><a href="#RL78_002dDirectives">RL78-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RL78-line-comment-character">RL78 line comment character</a>:</td><td> </td><td valign="top"><a href="#RL78_002dChars">RL78-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RL78-line-separator">RL78 line separator</a>:</td><td> </td><td valign="top"><a href="#RL78_002dChars">RL78-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RL78-modifiers">RL78 modifiers</a>:</td><td> </td><td valign="top"><a href="#RL78_002dModifiers">RL78-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RL78-options">RL78 options</a>:</td><td> </td><td valign="top"><a href="#RL78_002dOpts">RL78-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RL78-support">RL78 support</a>:</td><td> </td><td valign="top"><a href="#RL78_002dDependent">RL78-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-rsect"><code>rsect</code></a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RX-assembler-directive-_002e3byte">RX assembler directive .3byte</a>:</td><td> </td><td valign="top"><a href="#RX_002dDirectives">RX-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RX-assembler-directive-_002efetchalign">RX assembler directive .fetchalign</a>:</td><td> </td><td valign="top"><a href="#RX_002dDirectives">RX-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RX-assembler-directives">RX assembler directives</a>:</td><td> </td><td valign="top"><a href="#RX_002dDirectives">RX-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RX-floating-point">RX floating point</a>:</td><td> </td><td valign="top"><a href="#RX_002dFloat">RX-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RX-line-comment-character">RX line comment character</a>:</td><td> </td><td valign="top"><a href="#RX_002dChars">RX-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RX-line-separator">RX line separator</a>:</td><td> </td><td valign="top"><a href="#RX_002dChars">RX-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RX-modifiers">RX modifiers</a>:</td><td> </td><td valign="top"><a href="#RX_002dModifiers">RX-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RX-options">RX options</a>:</td><td> </td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-RX-support">RX support</a>:</td><td> </td><td valign="top"><a href="#RX_002dDependent">RX-Dependent</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-S">S</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-S12Z-addressing-modes">S12Z addressing modes</a>:</td><td> </td><td valign="top"><a href="#S12Z-Addressing-Modes">S12Z Addressing Modes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-S12Z-line-separator">S12Z line separator</a>:</td><td> </td><td valign="top"><a href="#S12Z-Syntax-Overview">S12Z Syntax Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-S12Z-options">S12Z options</a>:</td><td> </td><td valign="top"><a href="#S12Z-Options">S12Z Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-S12Z-support">S12Z support</a>:</td><td> </td><td valign="top"><a href="#S12Z_002dDependent">S12Z-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-S12Z-syntax">S12Z syntax</a>:</td><td> </td><td valign="top"><a href="#S12Z-Syntax">S12Z Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-floating-point">s390 floating point</a>:</td><td> </td><td valign="top"><a href="#s390-Floating-Point">s390 Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-instruction-aliases">s390 instruction aliases</a>:</td><td> </td><td valign="top"><a href="#s390-Aliases">s390 Aliases</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-instruction-formats">s390 instruction formats</a>:</td><td> </td><td valign="top"><a href="#s390-Formats">s390 Formats</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-instruction-marker">s390 instruction marker</a>:</td><td> </td><td valign="top"><a href="#s390-Instruction-Marker">s390 Instruction Marker</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-instruction-mnemonics">s390 instruction mnemonics</a>:</td><td> </td><td valign="top"><a href="#s390-Mnemonics">s390 Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-instruction-operand-modifier">s390 instruction operand modifier</a>:</td><td> </td><td valign="top"><a href="#s390-Operand-Modifier">s390 Operand Modifier</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-instruction-operands">s390 instruction operands</a>:</td><td> </td><td valign="top"><a href="#s390-Operands">s390 Operands</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-instruction-syntax">s390 instruction syntax</a>:</td><td> </td><td valign="top"><a href="#s390-Syntax">s390 Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-line-comment-character">s390 line comment character</a>:</td><td> </td><td valign="top"><a href="#s390-Characters">s390 Characters</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-line-separator">s390 line separator</a>:</td><td> </td><td valign="top"><a href="#s390-Characters">s390 Characters</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-literal-pool-entries">s390 literal pool entries</a>:</td><td> </td><td valign="top"><a href="#s390-Literal-Pool-Entries">s390 Literal Pool Entries</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-options">s390 options</a>:</td><td> </td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-register-naming">s390 register naming</a>:</td><td> </td><td valign="top"><a href="#s390-Register">s390 Register</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-s390-support">s390 support</a>:</td><td> </td><td valign="top"><a href="#S_002f390_002dDependent">S/390-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Saved-User-Stack-Pointer_002c-ARC">Saved User Stack Pointer, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sblock-directive_002c-TIC54X"><code>sblock</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sbttl-directive"><code>sbttl</code> directive</a>:</td><td> </td><td valign="top"><a href="#Sbttl">Sbttl</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-schedule-directive"><code>schedule</code> directive</a>:</td><td> </td><td valign="top"><a href="#Schedule-Directive">Schedule Directive</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-scl-directive"><code>scl</code> directive</a>:</td><td> </td><td valign="top"><a href="#Scl">Scl</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SCORE-architectures">SCORE architectures</a>:</td><td> </td><td valign="top"><a href="#SCORE_002dOpts">SCORE-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SCORE-directives">SCORE directives</a>:</td><td> </td><td valign="top"><a href="#SCORE_002dPseudo">SCORE-Pseudo</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SCORE-line-comment-character">SCORE line comment character</a>:</td><td> </td><td valign="top"><a href="#SCORE_002dChars">SCORE-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SCORE-line-separator">SCORE line separator</a>:</td><td> </td><td valign="top"><a href="#SCORE_002dChars">SCORE-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SCORE-options">SCORE options</a>:</td><td> </td><td valign="top"><a href="#SCORE_002dOpts">SCORE-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SCORE-processor">SCORE processor</a>:</td><td> </td><td valign="top"><a href="#SCORE_002dDependent">SCORE-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sdaoff-pseudo_002dop_002c-V850"><code>sdaoff</code> pseudo-op, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-search-path-for-_002einclude">search path for <code>.include</code></a>:</td><td> </td><td valign="top"><a href="#I">I</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sect-directive_002c-TIC54X"><code>sect</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-section-directive-_0028COFF-version_0029"><code>section</code> directive (COFF version)</a>:</td><td> </td><td valign="top"><a href="#Section">Section</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-section-directive-_0028ELF-version_0029"><code>section</code> directive (ELF version)</a>:</td><td> </td><td valign="top"><a href="#Section">Section</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-section-directive_002c-V850"><code>section</code> directive, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-section-name-substitution">section name substitution</a>:</td><td> </td><td valign="top"><a href="#Section">Section</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-section-override-prefixes_002c-i386">section override prefixes, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Section-Stack">Section Stack</a>:</td><td> </td><td valign="top"><a href="#PopSection">PopSection</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Section-Stack-1">Section Stack</a>:</td><td> </td><td valign="top"><a href="#Previous">Previous</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Section-Stack-2">Section Stack</a>:</td><td> </td><td valign="top"><a href="#PushSection">PushSection</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Section-Stack-3">Section Stack</a>:</td><td> </td><td valign="top"><a href="#Section">Section</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Section-Stack-4">Section Stack</a>:</td><td> </td><td valign="top"><a href="#SubSection">SubSection</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-section_002drelative-addressing">section-relative addressing</a>:</td><td> </td><td valign="top"><a href="#Secs-Background">Secs Background</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sections">sections</a>:</td><td> </td><td valign="top"><a href="#Sections">Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sections-in-messages_002c-internal">sections in messages, internal</a>:</td><td> </td><td valign="top"><a href="#As-Sections">As Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sections_002c-i386">sections, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sections_002c-named">sections, named</a>:</td><td> </td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sections_002c-x86_002d64">sections, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-seg-directive_002c-SPARC"><code>seg</code> directive, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-segm"><code>segm</code></a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-set-at-directive_002c-Nios-II"><code>set at</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-set-break-directive_002c-Nios-II"><code>set break</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-set-directive"><code>set</code> directive</a>:</td><td> </td><td valign="top"><a href="#Set">Set</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-set-directive_002c-Nios-II"><code>set</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-set-directive_002c-TIC54X"><code>set</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-set-noat-directive_002c-Nios-II"><code>set noat</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-set-nobreak-directive_002c-Nios-II"><code>set nobreak</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-set-norelax-directive_002c-Nios-II"><code>set norelax</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-set-no_005fwarn_005fregname_005flabel-directive_002c-PRU"><code>set no_warn_regname_label</code> directive, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-set-relaxall-directive_002c-Nios-II"><code>set relaxall</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-set-relaxsection-directive_002c-Nios-II"><code>set relaxsection</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SH-addressing-modes">SH addressing modes</a>:</td><td> </td><td valign="top"><a href="#SH_002dAddressing">SH-Addressing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SH-floating-point-_0028IEEE_0029">SH floating point (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#SH-Floating-Point">SH Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SH-line-comment-character">SH line comment character</a>:</td><td> </td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SH-line-separator">SH line separator</a>:</td><td> </td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SH-machine-directives">SH machine directives</a>:</td><td> </td><td valign="top"><a href="#SH-Directives">SH Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SH-opcode-summary">SH opcode summary</a>:</td><td> </td><td valign="top"><a href="#SH-Opcodes">SH Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SH-options">SH options</a>:</td><td> </td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SH-registers">SH registers</a>:</td><td> </td><td valign="top"><a href="#SH_002dRegs">SH-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SH-support">SH support</a>:</td><td> </td><td valign="top"><a href="#SH_002dDependent">SH-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-shigh-directive_002c-M32R"><code>shigh</code> directive, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-short-directive"><code>short</code> directive</a>:</td><td> </td><td valign="top"><a href="#Short">Short</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-short-directive_002c-TIC54X"><code>short</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-signatures_002c-WebAssembly">signatures, WebAssembly</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dSignatures">WebAssembly-Signatures</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SIMD_002c-i386">SIMD, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dSIMD">i386-SIMD</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SIMD_002c-x86_002d64">SIMD, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dSIMD">i386-SIMD</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-single-character-constant">single character constant</a>:</td><td> </td><td valign="top"><a href="#Chars">Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-single-directive"><code>single</code> directive</a>:</td><td> </td><td valign="top"><a href="#Single">Single</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-single-directive_002c-i386"><code>single</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-single-directive_002c-x86_002d64"><code>single</code> directive, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-single-quote_002c-Z80">single quote, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sixteen-bit-integers">sixteen bit integers</a>:</td><td> </td><td valign="top"><a href="#hword">hword</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sixteen-byte-integer">sixteen byte integer</a>:</td><td> </td><td valign="top"><a href="#Octa">Octa</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-size-directive-_0028COFF-version_0029"><code>size</code> directive (COFF version)</a>:</td><td> </td><td valign="top"><a href="#Size">Size</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-size-directive-_0028ELF-version_0029"><code>size</code> directive (ELF version)</a>:</td><td> </td><td valign="top"><a href="#Size">Size</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-size-modifiers_002c-D10V">size modifiers, D10V</a>:</td><td> </td><td valign="top"><a href="#D10V_002dSize">D10V-Size</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-size-modifiers_002c-D30V">size modifiers, D30V</a>:</td><td> </td><td valign="top"><a href="#D30V_002dSize">D30V-Size</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-size-modifiers_002c-M680x0">size modifiers, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-size-prefixes_002c-i386">size prefixes, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-size-suffixes_002c-H8_002f300">size suffixes, H8/300</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Opcodes">H8/300 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-size_002c-translations_002c-Sparc">size, translations, Sparc</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dSize_002dTranslations">Sparc-Size-Translations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sizes-operands_002c-i386">sizes operands, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sizes-operands_002c-x86_002d64">sizes operands, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-skip-directive"><code>skip</code> directive</a>:</td><td> </td><td valign="top"><a href="#Skip">Skip</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-skip-directive_002c-M680x0"><code>skip</code> directive, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-skip-directive_002c-SPARC"><code>skip</code> directive, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sleb128-directive"><code>sleb128</code> directive</a>:</td><td> </td><td valign="top"><a href="#Sleb128">Sleb128</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-small-data_002c-MIPS">small data, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS-Small-Data">MIPS Small Data</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SmartMIPS-instruction-generation-override">SmartMIPS instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SOM-symbol-attributes">SOM symbol attributes</a>:</td><td> </td><td valign="top"><a href="#SOM-Symbols">SOM Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-source-program">source program</a>:</td><td> </td><td valign="top"><a href="#Input-Files">Input Files</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-source_002c-destination-operands_003b-i386">source, destination operands; i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-source_002c-destination-operands_003b-x86_002d64">source, destination operands; x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sp-register">sp register</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Registers">Xtensa Registers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sp-register_002c-V850"><code>sp</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-space-directive"><code>space</code> directive</a>:</td><td> </td><td valign="top"><a href="#Space">Space</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-space-directive_002c-TIC54X"><code>space</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-space-used_002c-maximum-for-assembly">space used, maximum for assembly</a>:</td><td> </td><td valign="top"><a href="#statistics">statistics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SPARC-architectures">SPARC architectures</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Sparc-constants">Sparc constants</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dConstants">Sparc-Constants</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SPARC-data-alignment">SPARC data alignment</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dAligned_002dData">Sparc-Aligned-Data</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SPARC-floating-point-_0028IEEE_0029">SPARC floating point (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dFloat">Sparc-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Sparc-line-comment-character">Sparc line comment character</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dChars">Sparc-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Sparc-line-separator">Sparc line separator</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dChars">Sparc-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SPARC-machine-directives">SPARC machine directives</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SPARC-options">SPARC options</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Sparc-registers">Sparc registers</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dRegs">Sparc-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Sparc-relocations">Sparc relocations</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dRelocs">Sparc-Relocs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Sparc-size-translations">Sparc size translations</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dSize_002dTranslations">Sparc-Size-Translations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SPARC-support">SPARC support</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDependent">Sparc-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-SPARC-syntax">SPARC syntax</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dAligned_002dData">Sparc-Aligned-Data</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-special-characters_002c-M680x0">special characters, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-special-purpose-registers_002c-MSP-430">special purpose registers, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dRegs">MSP430-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sslist-directive_002c-TIC54X"><code>sslist</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ssnolist-directive_002c-TIC54X"><code>ssnolist</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-stabd-directive"><code>stabd</code> directive</a>:</td><td> </td><td valign="top"><a href="#Stab">Stab</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-stabn-directive"><code>stabn</code> directive</a>:</td><td> </td><td valign="top"><a href="#Stab">Stab</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-stabs-directive"><code>stabs</code> directive</a>:</td><td> </td><td valign="top"><a href="#Stab">Stab</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-stabx-directives"><code>stab<var>x</var></code> directives</a>:</td><td> </td><td valign="top"><a href="#Stab">Stab</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-stack-pointer_002c-ARC">stack pointer, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-standard-assembler-sections">standard assembler sections</a>:</td><td> </td><td valign="top"><a href="#Secs-Background">Secs Background</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-standard-input_002c-as-input-file">standard input, as input file</a>:</td><td> </td><td valign="top"><a href="#Command-Line">Command Line</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator-character">statement separator character</a>:</td><td> </td><td valign="top"><a href="#Statements">Statements</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-AArch64">statement separator, AArch64</a>:</td><td> </td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Alpha">statement separator, Alpha</a>:</td><td> </td><td valign="top"><a href="#Alpha_002dChars">Alpha-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-ARC">statement separator, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-ARM">statement separator, ARM</a>:</td><td> </td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-AVR">statement separator, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR_002dChars">AVR-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-BPF">statement separator, BPF</a>:</td><td> </td><td valign="top"><a href="#BPF_002dChars">BPF-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-CR16">statement separator, CR16</a>:</td><td> </td><td valign="top"><a href="#CR16_002dChars">CR16-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Epiphany">statement separator, Epiphany</a>:</td><td> </td><td valign="top"><a href="#Epiphany_002dChars">Epiphany-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-H8_002f300">statement separator, H8/300</a>:</td><td> </td><td valign="top"><a href="#H8_002f300_002dChars">H8/300-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-i386">statement separator, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dChars">i386-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-IA_002d64">statement separator, IA-64</a>:</td><td> </td><td valign="top"><a href="#IA_002d64_002dChars">IA-64-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-IP2K">statement separator, IP2K</a>:</td><td> </td><td valign="top"><a href="#IP2K_002dChars">IP2K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-LM32">statement separator, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32_002dChars">LM32-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-M32C">statement separator, M32C</a>:</td><td> </td><td valign="top"><a href="#M32C_002dChars">M32C-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-M68HC11">statement separator, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Meta">statement separator, Meta</a>:</td><td> </td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-MicroBlaze">statement separator, MicroBlaze</a>:</td><td> </td><td valign="top"><a href="#MicroBlaze_002dChars">MicroBlaze-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-MIPS">statement separator, MIPS</a>:</td><td> </td><td valign="top"><a href="#MIPS_002dChars">MIPS-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-MSP-430">statement separator, MSP 430</a>:</td><td> </td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-NS32K">statement separator, NS32K</a>:</td><td> </td><td valign="top"><a href="#NS32K_002dChars">NS32K-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-OpenRISC">statement separator, OpenRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dChars">OpenRISC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-PJ">statement separator, PJ</a>:</td><td> </td><td valign="top"><a href="#PJ_002dChars">PJ-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-PowerPC">statement separator, PowerPC</a>:</td><td> </td><td valign="top"><a href="#PowerPC_002dChars">PowerPC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-RL78">statement separator, RL78</a>:</td><td> </td><td valign="top"><a href="#RL78_002dChars">RL78-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-RX">statement separator, RX</a>:</td><td> </td><td valign="top"><a href="#RX_002dChars">RX-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-S12Z">statement separator, S12Z</a>:</td><td> </td><td valign="top"><a href="#S12Z-Syntax-Overview">S12Z Syntax Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-s390">statement separator, s390</a>:</td><td> </td><td valign="top"><a href="#s390-Characters">s390 Characters</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-SCORE">statement separator, SCORE</a>:</td><td> </td><td valign="top"><a href="#SCORE_002dChars">SCORE-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-SH">statement separator, SH</a>:</td><td> </td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Sparc">statement separator, Sparc</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dChars">Sparc-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-TIC54X">statement separator, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dChars">TIC54X-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-TIC6X">statement separator, TIC6X</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Syntax">TIC6X Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-V850">statement separator, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dChars">V850-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-VAX">statement separator, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002dChars">VAX-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Visium">statement separator, Visium</a>:</td><td> </td><td valign="top"><a href="#Visium-Characters">Visium Characters</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-XGATE">statement separator, XGATE</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-XStormy16">statement separator, XStormy16</a>:</td><td> </td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Z80">statement separator, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Z8000">statement separator, Z8000</a>:</td><td> </td><td valign="top"><a href="#Z8000_002dChars">Z8000-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statements_002c-structure-of">statements, structure of</a>:</td><td> </td><td valign="top"><a href="#Statements">Statements</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-statistics_002c-about-assembly">statistics, about assembly</a>:</td><td> </td><td valign="top"><a href="#statistics">statistics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Status-register_002c-ARC">Status register, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-STATUS32-saved-on-exception_002c-ARC">STATUS32 saved on exception, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-stopping-the-assembly">stopping the assembly</a>:</td><td> </td><td valign="top"><a href="#Abort">Abort</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Stored-STATUS32-register-on-entry-to-level-P0-interrupts_002c-ARC">Stored STATUS32 register on entry to level P0 interrupts, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string-constants">string constants</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string-directive"><code>string</code> directive</a>:</td><td> </td><td valign="top"><a href="#String">String</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string-directive-on-HPPA"><code>string</code> directive on HPPA</a>:</td><td> </td><td valign="top"><a href="#HPPA-Directives">HPPA Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string-directive_002c-TIC54X"><code>string</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string-literals">string literals</a>:</td><td> </td><td valign="top"><a href="#Ascii">Ascii</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string_002c-copying-to-object-file">string, copying to object file</a>:</td><td> </td><td valign="top"><a href="#String">String</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string16-directive"><code>string16</code> directive</a>:</td><td> </td><td valign="top"><a href="#String">String</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string16_002c-copying-to-object-file">string16, copying to object file</a>:</td><td> </td><td valign="top"><a href="#String">String</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string32-directive"><code>string32</code> directive</a>:</td><td> </td><td valign="top"><a href="#String">String</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string32_002c-copying-to-object-file">string32, copying to object file</a>:</td><td> </td><td valign="top"><a href="#String">String</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string64-directive"><code>string64</code> directive</a>:</td><td> </td><td valign="top"><a href="#String">String</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string64_002c-copying-to-object-file">string64, copying to object file</a>:</td><td> </td><td valign="top"><a href="#String">String</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string8-directive"><code>string8</code> directive</a>:</td><td> </td><td valign="top"><a href="#String">String</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-string8_002c-copying-to-object-file">string8, copying to object file</a>:</td><td> </td><td valign="top"><a href="#String">String</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-struct-directive"><code>struct</code> directive</a>:</td><td> </td><td valign="top"><a href="#Struct">Struct</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-struct-directive_002c-TIC54X"><code>struct</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-structure-debugging_002c-COFF">structure debugging, COFF</a>:</td><td> </td><td valign="top"><a href="#Tag">Tag</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sub_002dinstruction-ordering_002c-D10V">sub-instruction ordering, D10V</a>:</td><td> </td><td valign="top"><a href="#D10V_002dChars">D10V-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sub_002dinstruction-ordering_002c-D30V">sub-instruction ordering, D30V</a>:</td><td> </td><td valign="top"><a href="#D30V_002dChars">D30V-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sub_002dinstructions_002c-D10V">sub-instructions, D10V</a>:</td><td> </td><td valign="top"><a href="#D10V_002dSubs">D10V-Subs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sub_002dinstructions_002c-D30V">sub-instructions, D30V</a>:</td><td> </td><td valign="top"><a href="#D30V_002dSubs">D30V-Subs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-subexpressions">subexpressions</a>:</td><td> </td><td valign="top"><a href="#Arguments">Arguments</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-subsection-directive"><code>subsection</code> directive</a>:</td><td> </td><td valign="top"><a href="#SubSection">SubSection</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-subsym-builtins_002c-TIC54X">subsym builtins, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-subtitles-for-listings">subtitles for listings</a>:</td><td> </td><td valign="top"><a href="#Sbttl">Sbttl</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-subtraction_002c-permitted-arguments">subtraction, permitted arguments</a>:</td><td> </td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-summary-of-options">summary of options</a>:</td><td> </td><td valign="top"><a href="#Overview">Overview</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-support">support</a>:</td><td> </td><td valign="top"><a href="#HPPA_002dDependent">HPPA-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-supporting-files_002c-including">supporting files, including</a>:</td><td> </td><td valign="top"><a href="#Include">Include</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-suppressing-warnings">suppressing warnings</a>:</td><td> </td><td valign="top"><a href="#W">W</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-sval"><code>sval</code></a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-attributes">symbol attributes</a>:</td><td> </td><td valign="top"><a href="#Symbol-Attributes">Symbol Attributes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-attributes_002c-a_002eout">symbol attributes, <code>a.out</code></a>:</td><td> </td><td valign="top"><a href="#a_002eout-Symbols">a.out Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-attributes_002c-COFF">symbol attributes, COFF</a>:</td><td> </td><td valign="top"><a href="#COFF-Symbols">COFF Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-attributes_002c-SOM">symbol attributes, SOM</a>:</td><td> </td><td valign="top"><a href="#SOM-Symbols">SOM Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-descriptor_002c-COFF">symbol descriptor, COFF</a>:</td><td> </td><td valign="top"><a href="#Desc">Desc</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-modifiers">symbol modifiers</a>:</td><td> </td><td valign="top"><a href="#AVR_002dModifiers">AVR-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-modifiers-1">symbol modifiers</a>:</td><td> </td><td valign="top"><a href="#LM32_002dModifiers">LM32-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-modifiers-2">symbol modifiers</a>:</td><td> </td><td valign="top"><a href="#M32C_002dModifiers">M32C-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-modifiers-3">symbol modifiers</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dModifiers">M68HC11-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-modifiers_002c-TILE_002dGx">symbol modifiers, TILE-Gx</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Modifiers">TILE-Gx Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-modifiers_002c-TILEPro">symbol modifiers, TILEPro</a>:</td><td> </td><td valign="top"><a href="#TILEPro-Modifiers">TILEPro Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-names">symbol names</a>:</td><td> </td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-names_002c-_0024-in">symbol names, ‘<samp>$</samp>’ in</a>:</td><td> </td><td valign="top"><a href="#D10V_002dChars">D10V-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-names_002c-_0024-in-1">symbol names, ‘<samp>$</samp>’ in</a>:</td><td> </td><td valign="top"><a href="#D30V_002dChars">D30V-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-names_002c-_0024-in-2">symbol names, ‘<samp>$</samp>’ in</a>:</td><td> </td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-names_002c-_0024-in-3">symbol names, ‘<samp>$</samp>’ in</a>:</td><td> </td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-names_002c-local">symbol names, local</a>:</td><td> </td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-names_002c-temporary">symbol names, temporary</a>:</td><td> </td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-prefix-character_002c-ARC">symbol prefix character, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-storage-class-_0028COFF_0029">symbol storage class (COFF)</a>:</td><td> </td><td valign="top"><a href="#Scl">Scl</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-type">symbol type</a>:</td><td> </td><td valign="top"><a href="#Symbol-Type">Symbol Type</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-type_002c-COFF">symbol type, COFF</a>:</td><td> </td><td valign="top"><a href="#Type">Type</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-type_002c-ELF">symbol type, ELF</a>:</td><td> </td><td valign="top"><a href="#Type">Type</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-value">symbol value</a>:</td><td> </td><td valign="top"><a href="#Symbol-Value">Symbol Value</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-value_002c-setting">symbol value, setting</a>:</td><td> </td><td valign="top"><a href="#Set">Set</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-values_002c-assigning">symbol values, assigning</a>:</td><td> </td><td valign="top"><a href="#Setting-Symbols">Setting Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol-versioning">symbol versioning</a>:</td><td> </td><td valign="top"><a href="#Symver">Symver</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol_002c-common">symbol, common</a>:</td><td> </td><td valign="top"><a href="#Comm">Comm</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbol_002c-making-visible-to-linker">symbol, making visible to linker</a>:</td><td> </td><td valign="top"><a href="#Global">Global</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbolic-debuggers_002c-information-for">symbolic debuggers, information for</a>:</td><td> </td><td valign="top"><a href="#Stab">Stab</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbols">symbols</a>:</td><td> </td><td valign="top"><a href="#Symbols">Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Symbols-in-position_002dindependent-code_002c-CRIS">Symbols in position-independent code, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dPic">CRIS-Pic</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbols-with-uppercase_002c-VAX_002fVMS">symbols with uppercase, VAX/VMS</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbols_002c-assigning-values-to">symbols, assigning values to</a>:</td><td> </td><td valign="top"><a href="#Equ">Equ</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Symbols_002c-built_002din_002c-CRIS">Symbols, built-in, CRIS</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dSymbols">CRIS-Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Symbols_002c-CRIS_002c-built_002din">Symbols, CRIS, built-in</a>:</td><td> </td><td valign="top"><a href="#CRIS_002dSymbols">CRIS-Symbols</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symbols_002c-local-common">symbols, local common</a>:</td><td> </td><td valign="top"><a href="#Lcomm">Lcomm</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-symver-directive"><code>symver</code> directive</a>:</td><td> </td><td valign="top"><a href="#Symver">Symver</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax-compatibility_002c-i386">syntax compatibility, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax-compatibility_002c-x86_002d64">syntax compatibility, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-AVR">syntax, AVR</a>:</td><td> </td><td valign="top"><a href="#AVR_002dModifiers">AVR-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-Blackfin">syntax, Blackfin</a>:</td><td> </td><td valign="top"><a href="#Blackfin-Syntax">Blackfin Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-D10V">syntax, D10V</a>:</td><td> </td><td valign="top"><a href="#D10V_002dSyntax">D10V-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-D30V">syntax, D30V</a>:</td><td> </td><td valign="top"><a href="#D30V_002dSyntax">D30V-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-LM32">syntax, LM32</a>:</td><td> </td><td valign="top"><a href="#LM32_002dModifiers">LM32-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-M680x0">syntax, M680x0</a>:</td><td> </td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-M68HC11">syntax, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-M68HC11-1">syntax, M68HC11</a>:</td><td> </td><td valign="top"><a href="#M68HC11_002dModifiers">M68HC11-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-machine_002dindependent">syntax, machine-independent</a>:</td><td> </td><td valign="top"><a href="#Syntax">Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-OPENRISC">syntax, OPENRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dDependent">OpenRISC-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-RL78">syntax, RL78</a>:</td><td> </td><td valign="top"><a href="#RL78_002dModifiers">RL78-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-RX">syntax, RX</a>:</td><td> </td><td valign="top"><a href="#RX_002dModifiers">RX-Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-S12Z">syntax, S12Z</a>:</td><td> </td><td valign="top"><a href="#S12Z-Syntax">S12Z Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-SPARC">syntax, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dAligned_002dData">Sparc-Aligned-Data</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-TILE_002dGx">syntax, TILE-Gx</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Syntax">TILE-Gx Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-TILEPro">syntax, TILEPro</a>:</td><td> </td><td valign="top"><a href="#TILEPro-Syntax">TILEPro Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-XGATE">syntax, XGATE</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-syntax_002c-Xtensa-assembler">syntax, Xtensa assembler</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Syntax">Xtensa Syntax</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-T">T</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tab-_0028_005ct_0029">tab (<code>\t</code>)</a>:</td><td> </td><td valign="top"><a href="#Strings">Strings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tab-directive_002c-TIC54X"><code>tab</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tag-directive"><code>tag</code> directive</a>:</td><td> </td><td valign="top"><a href="#Tag">Tag</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tag-directive_002c-TIC54X"><code>tag</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tag-directive_002c-TIC54X-1"><code>tag</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TBM_002c-i386">TBM, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dTBM">i386-TBM</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TBM_002c-x86_002d64">TBM, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dTBM">i386-TBM</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tdaoff-pseudo_002dop_002c-V850"><code>tdaoff</code> pseudo-op, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-temporary-symbol-names">temporary symbol names</a>:</td><td> </td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-text-and-data-sections_002c-joining">text and data sections, joining</a>:</td><td> </td><td valign="top"><a href="#R">R</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-text-directive"><code>text</code> directive</a>:</td><td> </td><td valign="top"><a href="#Text">Text</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-text-section">text section</a>:</td><td> </td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tfloat-directive_002c-i386"><code>tfloat</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tfloat-directive_002c-x86_002d64"><code>tfloat</code> directive, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Thumb-support">Thumb support</a>:</td><td> </td><td valign="top"><a href="#ARM_002dDependent">ARM-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC54X-builtin-math-functions">TIC54X builtin math functions</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC54X-line-comment-character">TIC54X line comment character</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dChars">TIC54X-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC54X-line-separator">TIC54X line separator</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dChars">TIC54X-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC54X-machine-directives">TIC54X machine directives</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC54X-memory_002dmapped-registers">TIC54X memory-mapped registers</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMMRegs">TIC54X-MMRegs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC54X-options">TIC54X options</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC54X-subsym-builtins">TIC54X subsym builtins</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC54X-support">TIC54X support</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDependent">TIC54X-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC54X_002dspecific-macros">TIC54X-specific macros</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC6X-big_002dendian-output">TIC6X big-endian output</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC6X-line-comment-character">TIC6X line comment character</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Syntax">TIC6X Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC6X-line-separator">TIC6X line separator</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Syntax">TIC6X Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC6X-little_002dendian-output">TIC6X little-endian output</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC6X-machine-directives">TIC6X machine directives</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC6X-options">TIC6X options</a>:</td><td> </td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TIC6X-support">TIC6X support</a>:</td><td> </td><td valign="top"><a href="#TIC6X_002dDependent">TIC6X-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TILE_002dGx-machine-directives">TILE-Gx machine directives</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Directives">TILE-Gx Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TILE_002dGx-modifiers">TILE-Gx modifiers</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Modifiers">TILE-Gx Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TILE_002dGx-opcode-names">TILE-Gx opcode names</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Opcodes">TILE-Gx Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TILE_002dGx-register-names">TILE-Gx register names</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Registers">TILE-Gx Registers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TILE_002dGx-support">TILE-Gx support</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx_002dDependent">TILE-Gx-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TILE_002dGx-syntax">TILE-Gx syntax</a>:</td><td> </td><td valign="top"><a href="#TILE_002dGx-Syntax">TILE-Gx Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TILEPro-machine-directives">TILEPro machine directives</a>:</td><td> </td><td valign="top"><a href="#TILEPro-Directives">TILEPro Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TILEPro-modifiers">TILEPro modifiers</a>:</td><td> </td><td valign="top"><a href="#TILEPro-Modifiers">TILEPro Modifiers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TILEPro-opcode-names">TILEPro opcode names</a>:</td><td> </td><td valign="top"><a href="#TILEPro-Opcodes">TILEPro Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TILEPro-register-names">TILEPro register names</a>:</td><td> </td><td valign="top"><a href="#TILEPro-Registers">TILEPro Registers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TILEPro-support">TILEPro support</a>:</td><td> </td><td valign="top"><a href="#TILEPro_002dDependent">TILEPro-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TILEPro-syntax">TILEPro syntax</a>:</td><td> </td><td valign="top"><a href="#TILEPro-Syntax">TILEPro Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-time_002c-total-for-assembly">time, total for assembly</a>:</td><td> </td><td valign="top"><a href="#statistics">statistics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-title-directive"><code>title</code> directive</a>:</td><td> </td><td valign="top"><a href="#Title">Title</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tls_005fcommon-directive"><code>tls_common</code> directive</a>:</td><td> </td><td valign="top"><a href="#Tls_005fcommon">Tls_common</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tls_005fgd-directive_002c-Nios-II"><code>tls_gd</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tls_005fie-directive_002c-Nios-II"><code>tls_ie</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tls_005fldm-directive_002c-Nios-II"><code>tls_ldm</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tls_005fldo-directive_002c-Nios-II"><code>tls_ldo</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tls_005fle-directive_002c-Nios-II"><code>tls_le</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-TMS320C6X-support">TMS320C6X support</a>:</td><td> </td><td valign="top"><a href="#TIC6X_002dDependent">TIC6X-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-tp-register_002c-V850"><code>tp</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-transform-directive"><code>transform</code> directive</a>:</td><td> </td><td valign="top"><a href="#Transform-Directive">Transform Directive</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-trusted-compiler">trusted compiler</a>:</td><td> </td><td valign="top"><a href="#f">f</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-turning-preprocessing-on-and-off">turning preprocessing on and off</a>:</td><td> </td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-two_002dbyte-integer">two-byte integer</a>:</td><td> </td><td valign="top"><a href="#g_t2byte">2byte</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-type-directive-_0028COFF-version_0029"><code>type</code> directive (COFF version)</a>:</td><td> </td><td valign="top"><a href="#Type">Type</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-type-directive-_0028ELF-version_0029"><code>type</code> directive (ELF version)</a>:</td><td> </td><td valign="top"><a href="#Type">Type</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-type-of-a-symbol">type of a symbol</a>:</td><td> </td><td valign="top"><a href="#Symbol-Type">Symbol Type</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-U">U</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ualong-directive_002c-SH"><code>ualong</code> directive, SH</a>:</td><td> </td><td valign="top"><a href="#SH-Directives">SH Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-uaquad-directive_002c-SH"><code>uaquad</code> directive, SH</a>:</td><td> </td><td valign="top"><a href="#SH-Directives">SH Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-uaword-directive_002c-SH"><code>uaword</code> directive, SH</a>:</td><td> </td><td valign="top"><a href="#SH-Directives">SH Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ubyte-directive_002c-TIC54X"><code>ubyte</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-uchar-directive_002c-TIC54X"><code>uchar</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-uhalf-directive_002c-TIC54X"><code>uhalf</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-uint-directive_002c-TIC54X"><code>uint</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-uleb128-directive"><code>uleb128</code> directive</a>:</td><td> </td><td valign="top"><a href="#Uleb128">Uleb128</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ulong-directive_002c-TIC54X"><code>ulong</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-undefined-section">undefined section</a>:</td><td> </td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-union-directive_002c-TIC54X"><code>union</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-unsegm"><code>unsegm</code></a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-usect-directive_002c-TIC54X"><code>usect</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-ushort-directive_002c-TIC54X"><code>ushort</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-uword-directive_002c-TIC54X"><code>uword</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-V">V</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-V850-command_002dline-options">V850 command-line options</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-V850-floating-point-_0028IEEE_0029">V850 floating point (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#V850-Floating-Point">V850 Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-V850-line-comment-character">V850 line comment character</a>:</td><td> </td><td valign="top"><a href="#V850_002dChars">V850-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-V850-line-separator">V850 line separator</a>:</td><td> </td><td valign="top"><a href="#V850_002dChars">V850-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-V850-machine-directives">V850 machine directives</a>:</td><td> </td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-V850-opcodes">V850 opcodes</a>:</td><td> </td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-V850-options-_0028none_0029">V850 options (none)</a>:</td><td> </td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-V850-register-names">V850 register names</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-V850-support">V850 support</a>:</td><td> </td><td valign="top"><a href="#V850_002dDependent">V850-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-val-directive"><code>val</code> directive</a>:</td><td> </td><td valign="top"><a href="#Val">Val</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-value-attribute_002c-COFF">value attribute, COFF</a>:</td><td> </td><td valign="top"><a href="#Val">Val</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-value-directive"><code>value</code> directive</a>:</td><td> </td><td valign="top"><a href="#i386_002dDirectives">i386-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-value-of-a-symbol">value of a symbol</a>:</td><td> </td><td valign="top"><a href="#Symbol-Value">Symbol Value</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-var-directive_002c-TIC54X"><code>var</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-bitfields-not-supported">VAX bitfields not supported</a>:</td><td> </td><td valign="top"><a href="#VAX_002dno">VAX-no</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-branch-improvement">VAX branch improvement</a>:</td><td> </td><td valign="top"><a href="#VAX_002dbranch">VAX-branch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-command_002dline-options-ignored">VAX command-line options ignored</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-displacement-sizing-character">VAX displacement sizing character</a>:</td><td> </td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-floating-point">VAX floating point</a>:</td><td> </td><td valign="top"><a href="#VAX_002dfloat">VAX-float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-immediate-character">VAX immediate character</a>:</td><td> </td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-indirect-character">VAX indirect character</a>:</td><td> </td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-line-comment-character">VAX line comment character</a>:</td><td> </td><td valign="top"><a href="#VAX_002dChars">VAX-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-line-separator">VAX line separator</a>:</td><td> </td><td valign="top"><a href="#VAX_002dChars">VAX-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-machine-directives">VAX machine directives</a>:</td><td> </td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-opcode-mnemonics">VAX opcode mnemonics</a>:</td><td> </td><td valign="top"><a href="#VAX_002dopcodes">VAX-opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-operand-notation">VAX operand notation</a>:</td><td> </td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-register-names">VAX register names</a>:</td><td> </td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX-support">VAX support</a>:</td><td> </td><td valign="top"><a href="#Vax_002dDependent">Vax-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Vax_002d11-C-compatibility">Vax-11 C compatibility</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VAX_002fVMS-options">VAX/VMS options</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-version-directive"><code>version</code> directive</a>:</td><td> </td><td valign="top"><a href="#Version">Version</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-version-directive_002c-TIC54X"><code>version</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-version-of-assembler">version of assembler</a>:</td><td> </td><td valign="top"><a href="#v">v</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-versions-of-symbols">versions of symbols</a>:</td><td> </td><td valign="top"><a href="#Symver">Symver</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Virtualization-instruction-generation-override">Virtualization instruction generation override</a>:</td><td> </td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-visibility">visibility</a>:</td><td> </td><td valign="top"><a href="#Hidden">Hidden</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-visibility-1">visibility</a>:</td><td> </td><td valign="top"><a href="#Internal">Internal</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-visibility-2">visibility</a>:</td><td> </td><td valign="top"><a href="#Protected">Protected</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Visium-line-comment-character">Visium line comment character</a>:</td><td> </td><td valign="top"><a href="#Visium-Characters">Visium Characters</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Visium-line-separator">Visium line separator</a>:</td><td> </td><td valign="top"><a href="#Visium-Characters">Visium Characters</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Visium-options">Visium options</a>:</td><td> </td><td valign="top"><a href="#Visium-Options">Visium Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Visium-registers">Visium registers</a>:</td><td> </td><td valign="top"><a href="#Visium-Registers">Visium Registers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Visium-support">Visium support</a>:</td><td> </td><td valign="top"><a href="#Visium_002dDependent">Visium-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-VMS-_0028VAX_0029-options">VMS (VAX) options</a>:</td><td> </td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-vtable_005fentry-directive"><code>vtable_entry</code> directive</a>:</td><td> </td><td valign="top"><a href="#VTableEntry">VTableEntry</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-vtable_005finherit-directive"><code>vtable_inherit</code> directive</a>:</td><td> </td><td valign="top"><a href="#VTableInherit">VTableInherit</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-W">W</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-warning-directive">warning directive</a>:</td><td> </td><td valign="top"><a href="#Warning">Warning</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-warning-for-altered-difference-tables">warning for altered difference tables</a>:</td><td> </td><td valign="top"><a href="#K">K</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-warning-messages">warning messages</a>:</td><td> </td><td valign="top"><a href="#Errors">Errors</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-warnings_002c-causing-error">warnings, causing error</a>:</td><td> </td><td valign="top"><a href="#W">W</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-warnings_002c-M32R">warnings, M32R</a>:</td><td> </td><td valign="top"><a href="#M32R_002dWarnings">M32R-Warnings</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-warnings_002c-suppressing">warnings, suppressing</a>:</td><td> </td><td valign="top"><a href="#W">W</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-warnings_002c-switching-on">warnings, switching on</a>:</td><td> </td><td valign="top"><a href="#W">W</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-weak-directive"><code>weak</code> directive</a>:</td><td> </td><td valign="top"><a href="#Weak">Weak</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-weakref-directive"><code>weakref</code> directive</a>:</td><td> </td><td valign="top"><a href="#Weakref">Weakref</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-WebAssembly-floating-point-_0028IEEE_0029">WebAssembly floating point (<small>IEEE</small>)</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dFloating_002dPoint">WebAssembly-Floating-Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-WebAssembly-line-comment-character">WebAssembly line comment character</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dChars">WebAssembly-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-WebAssembly-module-layout">WebAssembly module layout</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dmodule_002dlayout">WebAssembly-module-layout</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-WebAssembly-notes">WebAssembly notes</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dNotes">WebAssembly-Notes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-WebAssembly-opcodes">WebAssembly opcodes</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dOpcodes">WebAssembly-Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-WebAssembly-relocations">WebAssembly relocations</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dRelocs">WebAssembly-Relocs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-WebAssembly-signatures">WebAssembly signatures</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dSignatures">WebAssembly-Signatures</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-WebAssembly-support">WebAssembly support</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dDependent">WebAssembly-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-WebAssembly-Syntax">WebAssembly Syntax</a>:</td><td> </td><td valign="top"><a href="#WebAssembly_002dSyntax">WebAssembly-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-whitespace">whitespace</a>:</td><td> </td><td valign="top"><a href="#Whitespace">Whitespace</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-whitespace_002c-removed-by-preprocessor">whitespace, removed by preprocessor</a>:</td><td> </td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-wide-floating-point-directives_002c-VAX">wide floating point directives, VAX</a>:</td><td> </td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-width-directive_002c-TIC54X"><code>width</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Width-of-continuation-lines-of-disassembly-output">Width of continuation lines of disassembly output</a>:</td><td> </td><td valign="top"><a href="#listing">listing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Width-of-first-line-disassembly-output">Width of first line disassembly output</a>:</td><td> </td><td valign="top"><a href="#listing">listing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Width-of-source-line-output">Width of source line output</a>:</td><td> </td><td valign="top"><a href="#listing">listing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-wmsg-directive_002c-TIC54X"><code>wmsg</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-word-aligned-program-counter_002c-ARC">word aligned program counter, ARC</a>:</td><td> </td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-word-directive"><code>word</code> directive</a>:</td><td> </td><td valign="top"><a href="#Word">Word</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-word-directive_002c-BPF"><code>word</code> directive, BPF</a>:</td><td> </td><td valign="top"><a href="#BPF-Directives">BPF Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-word-directive_002c-H8_002f300"><code>word</code> directive, H8/300</a>:</td><td> </td><td valign="top"><a href="#H8_002f300-Directives">H8/300 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-word-directive_002c-i386"><code>word</code> directive, i386</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-word-directive_002c-Nios-II"><code>word</code> directive, Nios II</a>:</td><td> </td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-word-directive_002c-OpenRISC"><code>word</code> directive, OpenRISC</a>:</td><td> </td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-word-directive_002c-PRU"><code>word</code> directive, PRU</a>:</td><td> </td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-word-directive_002c-SPARC"><code>word</code> directive, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-word-directive_002c-TIC54X"><code>word</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-word-directive_002c-x86_002d64"><code>word</code> directive, x86-64</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-writing-patterns-in-memory">writing patterns in memory</a>:</td><td> </td><td valign="top"><a href="#Fill">Fill</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-wval"><code>wval</code></a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-X">X</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86-machine-directives">x86 machine directives</a>:</td><td> </td><td valign="top"><a href="#i386_002dDirectives">i386-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-arch-directive">x86-64 arch directive</a>:</td><td> </td><td valign="top"><a href="#i386_002dArch">i386-Arch</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-att_005fsyntax-pseudo-op">x86-64 att_syntax pseudo op</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-conversion-instructions">x86-64 conversion instructions</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-extension-instructions">x86-64 extension instructions</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-floating-point">x86-64 floating point</a>:</td><td> </td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-immediate-operands">x86-64 immediate operands</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-instruction-naming">x86-64 instruction naming</a>:</td><td> </td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-intel_005fsyntax-pseudo-op">x86-64 intel_syntax pseudo op</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-jump-optimization">x86-64 jump optimization</a>:</td><td> </td><td valign="top"><a href="#i386_002dJumps">i386-Jumps</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-jump_002c-call_002c-return">x86-64 jump, call, return</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-jump_002fcall-operands">x86-64 jump/call operands</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-memory-references">x86-64 memory references</a>:</td><td> </td><td valign="top"><a href="#i386_002dMemory">i386-Memory</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-options">x86-64 options</a>:</td><td> </td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-register-operands">x86-64 register operands</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-registers">x86-64 registers</a>:</td><td> </td><td valign="top"><a href="#i386_002dRegs">i386-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-sections">x86-64 sections</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-size-suffixes">x86-64 size suffixes</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-source_002c-destination-operands">x86-64 source, destination operands</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-support">x86-64 support</a>:</td><td> </td><td valign="top"><a href="#i386_002dDependent">i386-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-x86_002d64-syntax-compatibility">x86-64 syntax compatibility</a>:</td><td> </td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-xdef-directive_002c-Z80"><code>xdef</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-xfloat-directive_002c-TIC54X"><code>xfloat</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XGATE-addressing-modes">XGATE addressing modes</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XGATE-assembler-directives">XGATE assembler directives</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dDirectives">XGATE-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XGATE-floating-point">XGATE floating point</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dFloat">XGATE-Float</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XGATE-line-comment-character">XGATE line comment character</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XGATE-line-separator">XGATE line separator</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XGATE-opcodes">XGATE opcodes</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dopcodes">XGATE-opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XGATE-options">XGATE options</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XGATE-support">XGATE support</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dDependent">XGATE-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XGATE-syntax">XGATE syntax</a>:</td><td> </td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-xlong-directive_002c-TIC54X"><code>xlong</code> directive, TIC54X</a>:</td><td> </td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-xref-directive_002c-Z80"><code>xref</code> directive, Z80</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XStormy16-comment-character">XStormy16 comment character</a>:</td><td> </td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XStormy16-line-comment-character">XStormy16 line comment character</a>:</td><td> </td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XStormy16-line-separator">XStormy16 line separator</a>:</td><td> </td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XStormy16-machine-directives">XStormy16 machine directives</a>:</td><td> </td><td valign="top"><a href="#XStormy16-Directives">XStormy16 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XStormy16-pseudo_002dopcodes">XStormy16 pseudo-opcodes</a>:</td><td> </td><td valign="top"><a href="#XStormy16-Opcodes">XStormy16 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-XStormy16-support">XStormy16 support</a>:</td><td> </td><td valign="top"><a href="#XSTORMY16_002dDependent">XSTORMY16-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Xtensa-architecture">Xtensa architecture</a>:</td><td> </td><td valign="top"><a href="#Xtensa_002dDependent">Xtensa-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Xtensa-assembler-syntax">Xtensa assembler syntax</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Syntax">Xtensa Syntax</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Xtensa-directives">Xtensa directives</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Directives">Xtensa Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Xtensa-opcode-names">Xtensa opcode names</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Opcodes">Xtensa Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Xtensa-register-names">Xtensa register names</a>:</td><td> </td><td valign="top"><a href="#Xtensa-Registers">Xtensa Registers</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-xword-directive_002c-SPARC"><code>xword</code> directive, SPARC</a>:</td><td> </td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
<tr><th><a name="AS-Index_cp_letter-Z">Z</a></th><td></td><td></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z80-_0024">Z80 $</a>:</td><td> </td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z80-_0027">Z80 ’</a>:</td><td> </td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z80-floating-point">Z80 floating point</a>:</td><td> </td><td valign="top"><a href="#Z80-Floating-Point">Z80 Floating Point</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z80-labels">Z80 labels</a>:</td><td> </td><td valign="top"><a href="#Z80_002dLabels">Z80-Labels</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z80-line-comment-character">Z80 line comment character</a>:</td><td> </td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z80-line-separator">Z80 line separator</a>:</td><td> </td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z80-options">Z80 options</a>:</td><td> </td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z80-registers">Z80 registers</a>:</td><td> </td><td valign="top"><a href="#Z80_002dRegs">Z80-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z80-support">Z80 support</a>:</td><td> </td><td valign="top"><a href="#Z80_002dDependent">Z80-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z80-Syntax">Z80 Syntax</a>:</td><td> </td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z80_002c-case-sensitivity">Z80, case sensitivity</a>:</td><td> </td><td valign="top"><a href="#Z80_002dCase">Z80-Case</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z80_002c-_005c">Z80, \</a>:</td><td> </td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z80_002donly-directives">Z80-only directives</a>:</td><td> </td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z800-addressing-modes">Z800 addressing modes</a>:</td><td> </td><td valign="top"><a href="#Z8000_002dAddressing">Z8000-Addressing</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z8000-directives">Z8000 directives</a>:</td><td> </td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z8000-line-comment-character">Z8000 line comment character</a>:</td><td> </td><td valign="top"><a href="#Z8000_002dChars">Z8000-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z8000-line-separator">Z8000 line separator</a>:</td><td> </td><td valign="top"><a href="#Z8000_002dChars">Z8000-Chars</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z8000-opcode-summary">Z8000 opcode summary</a>:</td><td> </td><td valign="top"><a href="#Z8000-Opcodes">Z8000 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z8000-options">Z8000 options</a>:</td><td> </td><td valign="top"><a href="#Z8000-Options">Z8000 Options</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z8000-registers">Z8000 registers</a>:</td><td> </td><td valign="top"><a href="#Z8000_002dRegs">Z8000-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-Z8000-support">Z8000 support</a>:</td><td> </td><td valign="top"><a href="#Z8000_002dDependent">Z8000-Dependent</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-zdaoff-pseudo_002dop_002c-V850"><code>zdaoff</code> pseudo-op, V850</a>:</td><td> </td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-zero-directive"><code>zero</code> directive</a>:</td><td> </td><td valign="top"><a href="#Zero">Zero</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-zero-register_002c-V850"><code>zero</code> register, V850</a>:</td><td> </td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
|
|
<tr><td></td><td valign="top"><a href="#index-zero_002dterminated-strings">zero-terminated strings</a>:</td><td> </td><td valign="top"><a href="#Asciz">Asciz</a></td></tr>
|
|
<tr><td colspan="4"> <hr></td></tr>
|
|
</table>
|
|
<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#AS-Index_cp_symbol-1"><b> </b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-2"><b>#</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-3"><b>$</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-4"><b>%</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-5"><b>-</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-6"><b>.</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-7"><b>1</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-8"><b>2</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-9"><b>3</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-10"><b>4</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-11"><b>8</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-12"><b>:</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-13"><b>@</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_symbol-14"><b>_</b></a>
|
|
|
|
<br>
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-A"><b>A</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-B"><b>B</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-C"><b>C</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-D"><b>D</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-E"><b>E</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-F"><b>F</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-G"><b>G</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-H"><b>H</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-I"><b>I</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-J"><b>J</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-L"><b>L</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-M"><b>M</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-N"><b>N</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-O"><b>O</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-P"><b>P</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-Q"><b>Q</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-R"><b>R</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-S"><b>S</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-T"><b>T</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-U"><b>U</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-V"><b>V</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-W"><b>W</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-X"><b>X</b></a>
|
|
|
|
<a class="summary-letter" href="#AS-Index_cp_letter-Z"><b>Z</b></a>
|
|
|
|
</td></tr></table>
|
|
|
|
<div class="footnote">
|
|
<hr>
|
|
<h4 class="footnotes-heading">Footnotes</h4>
|
|
|
|
<h3><a name="FOOT1" href="#DOCF1">(1)</a></h3>
|
|
<p>This
|
|
is not the same as the executable image file alignment controlled by <code>ld</code>’s
|
|
‘<samp>--section-alignment</samp>’ option; image file sections in PE are aligned to
|
|
multiples of 4096, which is far too large an alignment for ordinary variables.
|
|
It is rather the default alignment for (non-debug) sections within object
|
|
(‘<samp>*.o</samp>’) files, which are less strictly aligned.</p>
|
|
<h3><a name="FOOT2" href="#DOCF2">(2)</a></h3>
|
|
<p>The term “macro” is somewhat overloaded here, since
|
|
these macros have no relation to those defined by <code>.macro</code>,
|
|
see <a href="#Macro"><code>.macro</code></a>.</p>
|
|
<h3><a name="FOOT3" href="#DOCF3">(3)</a></h3>
|
|
<p>Literals for the
|
|
<code>.init</code> and <code>.fini</code> sections are always placed in separate
|
|
sections, even when ‘<samp>--text-section-literals</samp>’ is enabled.</p>
|
|
<h3><a name="FOOT4" href="#DOCF4">(4)</a></h3>
|
|
<p>Any
|
|
more details?</p>
|
|
</div>
|
|
<hr>
|
|
|
|
|
|
|
|
</body>
|
|
</html>
|