SDK v15.0.0
Breaking changes
- llvm-mos/llvm-mos#456 - 65816 assembler changes - @asiekierka
lda >addr
was previously interpreted aslda mos16hi(addr)
, but now will be interpreted aslda mos24(addr)
. This is unlikely to break production code.lda <addr8
was previously interpreted aslda mos16lo(addr)
, but now will be interpreted aslda mos8(addr)
. As the two relocations are functionally (but not semantically) equivalent, this should not break production code.- Likewise, functional (but not semantic) changes involve the relocations emitted by immediate expressions (
lda #val
).
New features
- #316 - Add C++ fixed point math library - @jroweboy
- Supports various fractional and integral bit sizes.
- Supports user-defined literals for common sizes (e.g.,
9.4_12_4
is the 16-bit fixed point number with 12 integral bits and 8 fractional bits that is closest in value to 9.4).
Bug fixes
-
llvm-mos/llvm-mos#456 - 65816 assembler changes - @asiekierka
- The immediate and address modifiers (
#<
,#>
,#^
,<
,!
,>
) now adhere to WDC recommendations as documented in the 65816 datasheet. - In particular, this means the behaviour of
lda >addr
changes, whilelda !addr
andlda #^addr
have been introduced.
Immediate expressions now emitR_MOS_IMM8
andR_MOS_IMM16
, while address expressions now emitR_MOS_ADDR8
andR_MOS_ADDR16
relocations. - Some error messages have been adjusted to more accurately represent the assembler's limitations.
- Bugs/limitations in the SPC700 assembler's handling of
addr + X
andaddr + Y
addressing mode syntaxes have been fixed, and a test has been added. S
andR
can now be used as register names in stack-relative addressing modes instead ofSP
andRP
. This matches WDC 65816 and 65EL02 documentation/recommendations, respectively.
- The immediate and address modifiers (
-
dc85a7d - Fix
is_floating_pointr_v
C++<type_traits>
typo