mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 10:12:06 +00:00
rgbasm tries to optimize any loads from/to $FF00-$FFFF and generate LDH 2-byte opcodes instead of regular LD 3-byte opcodes. This is a bit inconsistent as it only works for constant values. If a load is trying to access a label in a HRAM floating section, or a section found in a different object file, this optimization doesn't work. This means that a simple refactor or code could allow rgbasm to perform the optimzation or prevent it from doing so. For certain projects, like disassemblies, this is a problem. This patch adds flag -L to rgbasm to disable the optimization, and doesn't change the behaviour of any other existing code. Signed-off-by: Antonio Niño Díaz <antonio_nd@outlook.com>
158 lines
7.6 KiB
HTML
158 lines
7.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8"/>
|
|
<style>
|
|
table.head, table.foot { width: 100%; }
|
|
td.head-rtitle, td.foot-os { text-align: right; }
|
|
td.head-vol { text-align: center; }
|
|
div.Pp { margin: 1ex 0ex; }
|
|
</style>
|
|
<link rel="stylesheet" href="mandoc.css" type="text/css" media="all"/>
|
|
<title>RGBASM(1)</title>
|
|
</head>
|
|
<body>
|
|
<table class="head">
|
|
<tr>
|
|
<td class="head-ltitle">RGBASM(1)</td>
|
|
<td class="head-vol">General Commands Manual</td>
|
|
<td class="head-rtitle">RGBASM(1)</td>
|
|
</tr>
|
|
</table>
|
|
<div class="manual-text">
|
|
<h1 class="Sh" title="Sh" id="NAME"><a class="selflink" href="#NAME">NAME</a></h1>
|
|
<b class="Nm" title="Nm">rgbasm</b> — <span class="Nd" title="Nd">Game
|
|
Boy assembler</span>
|
|
<h1 class="Sh" title="Sh" id="SYNOPSIS"><a class="selflink" href="#SYNOPSIS">SYNOPSIS</a></h1>
|
|
<table class="Nm">
|
|
<tr>
|
|
<td><b class="Nm" title="Nm">rgbasm</b></td>
|
|
<td>[<span class="Op"><b class="Fl" title="Fl">-EhLVvw</b></span>]
|
|
[<span class="Op"><b class="Fl" title="Fl">-b</b>
|
|
<var class="Ar" title="Ar">chars</var></span>]
|
|
[<span class="Op"><b class="Fl" title="Fl">-D</b>
|
|
<var class="Ar" title="Ar">name</var>[<span class="Op">=<var class="Ar" title="Ar">value</var></span>]</span>]
|
|
[<span class="Op"><b class="Fl" title="Fl">-g</b>
|
|
<var class="Ar" title="Ar">chars</var></span>]
|
|
[<span class="Op"><b class="Fl" title="Fl">-i</b>
|
|
<var class="Ar" title="Ar">path</var></span>]
|
|
[<span class="Op"><b class="Fl" title="Fl">-M</b>
|
|
<var class="Ar" title="Ar">dependfile</var></span>]
|
|
[<span class="Op"><b class="Fl" title="Fl">-o</b>
|
|
<var class="Ar" title="Ar">outfile</var></span>]
|
|
[<span class="Op"><b class="Fl" title="Fl">-p</b>
|
|
<var class="Ar" title="Ar">pad_value</var></span>]
|
|
<var class="Ar" title="Ar">file</var></td>
|
|
</tr>
|
|
</table>
|
|
<h1 class="Sh" title="Sh" id="DESCRIPTION"><a class="selflink" href="#DESCRIPTION">DESCRIPTION</a></h1>
|
|
The <b class="Nm" title="Nm">rgbasm</b> program creates an object file from an
|
|
assembly source file. Its arguments are as follows:
|
|
<dl class="Bl-tag">
|
|
<dt class="It-tag"> </dt>
|
|
<dd class="It-tag"> </dd>
|
|
<dt class="It-tag"><a class="selflink" href="#b"><b class="Fl" title="Fl" id="b">-b</b></a>
|
|
<var class="Ar" title="Ar">chars</var></dt>
|
|
<dd class="It-tag">Change the two characters used for binary constants. The
|
|
defaults are 01.</dd>
|
|
<dt class="It-tag"> </dt>
|
|
<dd class="It-tag"> </dd>
|
|
<dt class="It-tag"><a class="selflink" href="#D"><b class="Fl" title="Fl" id="D">-D</b></a>
|
|
<var class="Ar" title="Ar">name</var>[<span class="Op">=<var class="Ar" title="Ar">value</var></span>]</dt>
|
|
<dd class="It-tag">Add string symbol to the compiled source code. This is
|
|
equivalent to <var class="Ar" title="Ar">name</var>
|
|
<b class="Cm" title="Cm">EQUS</b>
|
|
“<var class="Ar" title="Ar">value</var>” in code. If a value
|
|
is not specified, a value of 1 is given.</dd>
|
|
<dt class="It-tag"> </dt>
|
|
<dd class="It-tag"> </dd>
|
|
<dt class="It-tag"><a class="selflink" href="#E"><b class="Fl" title="Fl" id="E">-E</b></a></dt>
|
|
<dd class="It-tag">Export all labels, including unreferenced and local
|
|
labels.</dd>
|
|
<dt class="It-tag"> </dt>
|
|
<dd class="It-tag"> </dd>
|
|
<dt class="It-tag"><a class="selflink" href="#g"><b class="Fl" title="Fl" id="g">-g</b></a>
|
|
<var class="Ar" title="Ar">chars</var></dt>
|
|
<dd class="It-tag">Change the four characters used for binary constants. The
|
|
defaults are 0123.</dd>
|
|
<dt class="It-tag"> </dt>
|
|
<dd class="It-tag"> </dd>
|
|
<dt class="It-tag"><a class="selflink" href="#h"><b class="Fl" title="Fl" id="h">-h</b></a></dt>
|
|
<dd class="It-tag">By default, <b class="Nm" title="Nm">rgbasm</b> inserts a
|
|
‘nop’ instruction immediately after any ‘halt’
|
|
instruction. The <b class="Fl" title="Fl">-h</b> option disables this
|
|
behavior.</dd>
|
|
<dt class="It-tag"> </dt>
|
|
<dd class="It-tag"> </dd>
|
|
<dt class="It-tag"><a class="selflink" href="#i"><b class="Fl" title="Fl" id="i">-i</b></a>
|
|
<var class="Ar" title="Ar">path</var></dt>
|
|
<dd class="It-tag">Add an include path.</dd>
|
|
<dt class="It-tag"> </dt>
|
|
<dd class="It-tag"> </dd>
|
|
<dt class="It-tag"><a class="selflink" href="#L"><b class="Fl" title="Fl" id="L">-L</b></a></dt>
|
|
<dd class="It-tag">Disable the optimization that turns loads of the form
|
|
<b class="Sy" title="Sy">LD [$FF00+n8],A</b> into the opcode
|
|
<b class="Sy" title="Sy">LDH [$FF00+n8],A</b> in order to have full
|
|
control of the result in the final ROM.</dd>
|
|
<dt class="It-tag"> </dt>
|
|
<dd class="It-tag"> </dd>
|
|
<dt class="It-tag"><a class="selflink" href="#M"><b class="Fl" title="Fl" id="M">-M</b></a>
|
|
<var class="Ar" title="Ar">dependfile</var></dt>
|
|
<dd class="It-tag">Print <a class="Xr" title="Xr">make(1)</a> dependencies to
|
|
<var class="Ar" title="Ar">dependfile</var>.</dd>
|
|
<dt class="It-tag"> </dt>
|
|
<dd class="It-tag"> </dd>
|
|
<dt class="It-tag"><a class="selflink" href="#o"><b class="Fl" title="Fl" id="o">-o</b></a>
|
|
<var class="Ar" title="Ar">outfile</var></dt>
|
|
<dd class="It-tag">Write an object file to the given filename.</dd>
|
|
<dt class="It-tag"> </dt>
|
|
<dd class="It-tag"> </dd>
|
|
<dt class="It-tag"><a class="selflink" href="#p"><b class="Fl" title="Fl" id="p">-p</b></a>
|
|
<var class="Ar" title="Ar">pad_value</var></dt>
|
|
<dd class="It-tag">When padding an image, pad with this value. The default is
|
|
0x00.</dd>
|
|
<dt class="It-tag"> </dt>
|
|
<dd class="It-tag"> </dd>
|
|
<dt class="It-tag"><a class="selflink" href="#V"><b class="Fl" title="Fl" id="V">-V</b></a></dt>
|
|
<dd class="It-tag">Print the version of the program and exit.</dd>
|
|
<dt class="It-tag"> </dt>
|
|
<dd class="It-tag"> </dd>
|
|
<dt class="It-tag"><a class="selflink" href="#v"><b class="Fl" title="Fl" id="v">-v</b></a></dt>
|
|
<dd class="It-tag">Be verbose.</dd>
|
|
<dt class="It-tag"> </dt>
|
|
<dd class="It-tag"> </dd>
|
|
<dt class="It-tag"><a class="selflink" href="#w"><b class="Fl" title="Fl" id="w">-w</b></a></dt>
|
|
<dd class="It-tag">Disable warning output.</dd>
|
|
</dl>
|
|
<h1 class="Sh" title="Sh" id="EXAMPLES"><a class="selflink" href="#EXAMPLES">EXAMPLES</a></h1>
|
|
Assembling a basic source file is simple:
|
|
<div class="Pp"></div>
|
|
<div class="Bd" style="margin-left: 5.00ex;">
|
|
<pre class="Li">
|
|
$ rgbasm -o bar.o foo.asm
|
|
</pre>
|
|
</div>
|
|
<div class="Pp"></div>
|
|
The resulting object file is not yet a usable ROM image — it must first
|
|
be run through <a class="Xr" title="Xr">rgblink(1)</a> and
|
|
<a class="Xr" title="Xr">rgbfix(1)</a>.
|
|
<h1 class="Sh" title="Sh" id="SEE_ALSO"><a class="selflink" href="#SEE_ALSO">SEE
|
|
ALSO</a></h1>
|
|
<a class="Xr" title="Xr">rgbasm(5)</a>, <a class="Xr" title="Xr">rgbfix(1)</a>,
|
|
<a class="Xr" title="Xr">rgblink(1)</a>,
|
|
<a class="Xr" title="Xr">rgbds(5)</a>, <a class="Xr" title="Xr">rgbds(7)</a>,
|
|
<a class="Xr" title="Xr">gbz80(7)</a>
|
|
<h1 class="Sh" title="Sh" id="HISTORY"><a class="selflink" href="#HISTORY">HISTORY</a></h1>
|
|
<b class="Nm" title="Nm">rgbasm</b> was originally written by Carsten
|
|
Sørensen as part of the ASMotor package, and was later packaged in
|
|
RGBDS by Justin Lloyd. It is now maintained by a number of contributors at
|
|
<a class="Lk" title="Lk" href="https://github.com/rednex/rgbds">https://github.com/rednex/rgbds</a>.</div>
|
|
<table class="foot">
|
|
<tr>
|
|
<td class="foot-date">February 24, 2018</td>
|
|
<td class="foot-os">RGBDS Manual</td>
|
|
</tr>
|
|
</table>
|
|
</body>
|
|
</html>
|