[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This chapter documents the backend for the MOS/Rockwell 6502 microprocessor family. It also supports the Rockwell/WDC 65C02 and the Hudson Soft HuC6280 instruction sets.
This module is written in 2002,2006,2008-2012,2014-2021 by Frank Wille and is covered by the vasm copyright without modifications.
This module provides the following additional options:
Recognize all HuC6280 instructions.
Swap meaning of <
and >
unary operators for compatibility
with the BBC ADE assembler.
Recognize all 65C02 instructions. This excludes DTV (‘-dtv’) and illegal (‘-illegal’) instructions.
Enables the Commodore CSG65CE02 instruction set, which extends on the WDC02 instruction set.
Recognize the three additional C64-DTV instructions.
Allow ’illegal’ 6502 instructions to be recognized.
Enables the 45GS02 instruction set for the MEGA65 computer.
Enables translation of B<cc> branches into sequences of "B<!cc> *+5 ; JMP label" when necessary. BRA (DTV, 65C02) is directly translated into a JMP when out of range. It also performs optimization of JMP to BRA, whenever possible.
Recognize all 65C02 instructions and the WDC65C02 extensions (RMB,SMB,BBR,BBS,STP,WAI).
This backend accepts 6502 family instructions as described in the instruction set reference manuals from MOS and Rockwell, which are valid for the following CPUs: 6502 - 6518, 6570, 6571, 6702, 7501, 8500, 8502.
Optionally accepts 65C02 family instructions as decribed in the instruction set reference manuals from Rockwell and WDC. Also supports the WDC extensions in the W65C02 and W65C134.
Optionally accepts 65CE02 family instructions as decribed in the instruction set reference manuals from Commodore Semiconductor Group.
Optionally accepts HuC6280 instructions as described in the instruction set reference manuals from Hudson Soft.
Optionally accepts 45GS02 instructions as defined by the Mega65 project.
The target address type is 16 bit.
Instructions consist of one up to three bytes for the standard 6502 family (up to 7 bytes for the 6280) and require no alignment. There is also no alignment requirement for sections and data.
All known mnemonics for illegal instructions are optionally recognized (e.g.
dcm
and dcp
refer to the same instruction). Some illegal
insructions (e.g. $ab
) are known to show unpredictable behaviour,
or do not always work the same on different CPUs.
This backend provides the following specific extensions:
<
is used to select the low-byte
and >
for the high-byte. It has to be the first character before
an expression. See also option ‘-bbcade’.
/256
, %256
or &256
on a label, an appropriate lo/hi-byte relocation will automatically be
generated.
>
) or
zero/direct-page 8-bit addressing (lo/<
). For compatibility with
other assemblers also !
and |
may be used instead of
>
.
This backend extends the selected syntax module by the following directives:
<symbol> ezp <expr>
Works exactly like the equ
directive, but marks <symbol>
as a zero page symbol and use zero page addressing whenever
<symbol> is used in a memory addressing mode.
setdp <expr>
Set the current base address of the zero/direct page for
optimizations from absolute to zero-page addressing modes.
Example: set it to $2000
for the HuC6280/PC-Engine.
zero
Switch to a zero page section called zero
or .zero
,
which has the type bss
with attributes "aurw"
.
Accesses to symbols from this section will default to zero page
addressing mode.
zpage <symbol1> [,<symbol2>...]
Mark symbols as zero page and use zero page addressing for
expressions based on this symbol, unless overridden by a
hi-modifier (>
).
All these directives are also available in the form starting with a
dot (.
).
This backend performs the following operand optimizations:
B<!cc> *+5
and an absolute JMP
instruction
(‘-opt-branch’).
JMP
to BRA
,
when ‘-opt-branch’ was given.
Some known problems of this module at the moment:
This module has the following error messages:
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on August 28, 2021 using texi2html 5.0.