mirror of
https://github.com/fadden/6502bench.git
synced 2024-10-03 12:55:29 +00:00
Clarify
This commit is contained in:
parent
a8af7e8794
commit
372eea385d
@ -175,8 +175,8 @@ code, but also needs to know how to handle the corner cases.</p>
|
|||||||
and assemblers like 64tass do it the other way around. So cc65
|
and assemblers like 64tass do it the other way around. So cc65
|
||||||
regards the expression as <code>(label >> 8) - 16</code>, while the
|
regards the expression as <code>(label >> 8) - 16</code>, while the
|
||||||
more common interpretation would be <code>label >> (8 - 16)</code>.
|
more common interpretation would be <code>label >> (8 - 16)</code>.
|
||||||
(This is actually somewhat convenient, since many common expressions
|
(This is actually somewhat convenient, since none of the expressions
|
||||||
don't require parenthesis.)</li>
|
SourceGen currently generates require parenthesis.)</li>
|
||||||
<li>Undocumented opcodes: SBX ($cb) uses the mnemonic AXS. All other
|
<li>Undocumented opcodes: SBX ($cb) uses the mnemonic AXS. All other
|
||||||
opcodes match up with the "unintended opcodes" document.</li>
|
opcodes match up with the "unintended opcodes" document.</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -194,16 +194,20 @@ code, but also needs to know how to handle the corner cases.</p>
|
|||||||
|
|
||||||
<p>Quirks:</p>
|
<p>Quirks:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Operator precedence is unusual. Expressions are processed from
|
<li>Operator precedence is unusual. Expressions are generally processed
|
||||||
left to right, with no operator precedence.</li>
|
from left to right. The byte-selection operators have a lower
|
||||||
|
precedence than all of the others, and so are always processed last.</li>
|
||||||
<li>The byte selection operators ('<', '>', '^') are actually
|
<li>The byte selection operators ('<', '>', '^') are actually
|
||||||
word-selection operators, yielding 16-bit values when wide registers
|
word-selection operators, yielding 16-bit values when wide registers
|
||||||
are enabled on the 65816.</li>
|
are enabled on the 65816.</li>
|
||||||
|
<li>Values loaded into registers are implicitly mod 256 or 65536. There
|
||||||
|
is no need to explicitly mask an expression.</li>
|
||||||
<li>The assembler tracks register widths when it sees SEP/REP instructions,
|
<li>The assembler tracks register widths when it sees SEP/REP instructions,
|
||||||
but doesn't attempt to track the emulation flag. So if the registers
|
but doesn't attempt to track the emulation flag. So if you issue a REP
|
||||||
are long when you switch to emulation, incorrect code is generated.
|
while in emulation mode, the assembler will incorrectly assume long
|
||||||
(Really I just want to be able to turn the auto-tracking off.)</li>
|
registers. (Really I just want to be able to turn the width-tracking
|
||||||
<li>Non-unique local labels don't cause an error.</li>
|
off, but there's no way to do that.)</li>
|
||||||
|
<li>Non-unique local labels should cause an error, but don't.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user