📄 mmix-opts.html
字号:
<html lang="en">
<head>
<title>Using as</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Using as">
<meta name="generator" content="makeinfo 4.3">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home">
</head>
<body>
<div class="node">
<p>
Node:<a name="MMIX-Opts">MMIX-Opts</a>,
Next:<a rel="next" accesskey="n" href="MMIX-Expand.html#MMIX-Expand">MMIX-Expand</a>,
Up:<a rel="up" accesskey="u" href="MMIX-Dependent.html#MMIX-Dependent">MMIX-Dependent</a>
<hr><br>
</div>
<h4 class="section">Command-line Options</h4>
<p>The MMIX version of <code>as</code> has some machine-dependent options.
<p>When <code>--fixed-special-register-names</code> is specified, only the register
names specified in <a href="MMIX-Regs.html#MMIX-Regs">MMIX-Regs</a> are recognized in the instructions
<code>PUT</code> and <code>GET</code>.
<p>You can use the <code>--globalize-symbols</code> to make all symbols global.
This option is useful when splitting up a <code>mmixal</code> program into
several files.
<p>The <code>--gnu-syntax</code> turns off most syntax compatibility with
<code>mmixal</code>. Its usability is currently doubtful.
<p>The <code>--relax</code> option is not fully supported, but will eventually make
the object file prepared for linker relaxation.
<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
<code>--no-predefined-syms</code>. This turns off built-in predefined
definitions of all such symbols, including rounding-mode symbols, segment
symbols, <code>BIT</code> 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>By default, some instructions are expanded to fit the size of the operand
or an external symbol (see <a href="MMIX-Expand.html#MMIX-Expand">MMIX-Expand</a>). By passing
<code>--no-expand</code>, no such expansion will be done, instead causing errors
at link time if the operand does not fit.
<p>The <code>mmixal</code> documentation (see <a href="mmixsite.html#mmixsite">mmixsite</a>) specifies that global
registers allocated with the <code>GREG</code> directive (see <a href="MMIX-greg.html#MMIX-greg">MMIX-greg</a>) and
initialized to the same non-zero value, will refer to the same global
register. This isn't strictly enforcable in <code>as</code> since the
final addresses aren't known until link-time, but it will do an effort
unless the <code>--no-merge-gregs</code> option is specified. (Register merging
isn't yet implemented in <code>ld</code>.)
<p><code>as</code> will warn every time it expands an instruction to fit an
operand unless the option <code>-x</code> 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 <code>-x</code> 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 <code>-x</code> also imples
<code>--linker-allocated-gregs</code>.
<p>Usually a two-operand-expression (see <a href="GREG-base.html#GREG-base">GREG-base</a>) without a matching
<code>GREG</code> directive is treated as an error by <code>as</code>. When
the option <code>--linker-allocated-gregs</code> is in effect, they are instead
passed through to the linker, which will allocate as many global registers
as is needed.
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -