C Inline Assembly
Clang supports most of the standard GCC inline assembly syntax. There are a few notable exceptions:
- Unsupported Constraints:
- Goto Labels are unsupported.
"General purpose registers" for the purposes of inline assembly are taken to be 8-bit or 16-bit imaginary registers, depending on the size of the operand.
The compiler also supports a few MOS-specific constraints:
R: One of
The unique opcode syntax of the 6502 allows using these operands in unorthodox ways. For example, to issue a copy from a
d constrained operand to
A, you can use the following:
asm volatile ("t%0a" :: "d"(c));
This will issue either
tya, depending on where the compiler places